enum wbt_flags {
        WBT_TRACKED             = 1,    /* write, tracked for throttling */
        WBT_READ                = 2,    /* read */
-       WBT_KSWAPD              = 4,    /* write, from kswapd */
+       WBT_SWAP                = 4,    /* write, from swap_writepage() */
        WBT_DISCARD             = 8,    /* discard */
 
        WBT_NR_BITS             = 4,    /* number of bits */
 
 enum {
        WBT_RWQ_BG              = 0,
-       WBT_RWQ_KSWAPD,
+       WBT_RWQ_SWAP,
        WBT_RWQ_DISCARD,
        WBT_NUM_RWQ,
 };
 static inline struct rq_wait *get_rq_wait(struct rq_wb *rwb,
                                          enum wbt_flags wb_acct)
 {
-       if (wb_acct & WBT_KSWAPD)
-               return &rwb->rq_wait[WBT_RWQ_KSWAPD];
+       if (wb_acct & WBT_SWAP)
+               return &rwb->rq_wait[WBT_RWQ_SWAP];
        else if (wb_acct & WBT_DISCARD)
                return &rwb->rq_wait[WBT_RWQ_DISCARD];
 
                time_before(now, rwb->last_comp + HZ / 10);
 }
 
-#define REQ_HIPRIO     (REQ_SYNC | REQ_META | REQ_PRIO)
+#define REQ_HIPRIO     (REQ_SYNC | REQ_META | REQ_PRIO | REQ_SWAP)
 
 static inline unsigned int get_limit(struct rq_wb *rwb, blk_opf_t opf)
 {
 
        /*
         * At this point we know it's a buffered write. If this is
-        * kswapd trying to free memory, or REQ_SYNC is set, then
+        * swap trying to free memory, or REQ_SYNC is set, then
         * it's WB_SYNC_ALL writeback, and we'll use the max limit for
         * that. If the write is marked as a background write, then use
         * the idle limit, or go to normal if we haven't had competing
         * IO for a bit.
         */
-       if ((opf & REQ_HIPRIO) || wb_recent_wait(rwb) || current_is_kswapd())
+       if ((opf & REQ_HIPRIO) || wb_recent_wait(rwb))
                limit = rwb->rq_depth.max_depth;
        else if ((opf & REQ_BACKGROUND) || close_io(rwb)) {
                /*
        if (bio_op(bio) == REQ_OP_READ) {
                flags = WBT_READ;
        } else if (wbt_should_throttle(bio)) {
-               if (current_is_kswapd())
-                       flags |= WBT_KSWAPD;
+               if (bio->bi_opf & REQ_SWAP)
+                       flags |= WBT_SWAP;
                if (bio_op(bio) == REQ_OP_DISCARD)
                        flags |= WBT_DISCARD;
                flags |= WBT_TRACKED;