block: replace REQ_THROTTLED with a bio flag
authorChristoph Hellwig <hch@lst.de>
Thu, 20 Oct 2016 13:12:12 +0000 (15:12 +0200)
committerJens Axboe <axboe@fb.com>
Fri, 28 Oct 2016 14:45:17 +0000 (08:45 -0600)
It's the last bio-only REQ_* flag, and we have space for it in the bio
bi_flags field.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Shaun Tancheff <shaun.tancheff@seagate.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
block/blk-throttle.c
include/linux/blk_types.h

index a3ea8260c94c89236f938fb255158be8cb880a73..a6bb4fe326c39b2a996fe4330bc15933451d6503 100644 (file)
@@ -818,13 +818,13 @@ static void throtl_charge_bio(struct throtl_grp *tg, struct bio *bio)
        tg->io_disp[rw]++;
 
        /*
-        * REQ_THROTTLED is used to prevent the same bio to be throttled
+        * BIO_THROTTLED is used to prevent the same bio to be throttled
         * more than once as a throttled bio will go through blk-throtl the
         * second time when it eventually gets issued.  Set it when a bio
         * is being charged to a tg.
         */
-       if (!(bio->bi_opf & REQ_THROTTLED))
-               bio->bi_opf |= REQ_THROTTLED;
+       if (!bio_flagged(bio, BIO_THROTTLED))
+               bio_set_flag(bio, BIO_THROTTLED);
 }
 
 /**
@@ -1401,7 +1401,7 @@ bool blk_throtl_bio(struct request_queue *q, struct blkcg_gq *blkg,
        WARN_ON_ONCE(!rcu_read_lock_held());
 
        /* see throtl_charge_bio() */
-       if ((bio->bi_opf & REQ_THROTTLED) || !tg->has_rules[rw])
+       if (bio_flagged(bio, BIO_THROTTLED) || !tg->has_rules[rw])
                goto out;
 
        spin_lock_irq(q->queue_lock);
@@ -1480,7 +1480,7 @@ out:
         * being issued.
         */
        if (!throttled)
-               bio->bi_opf &= ~REQ_THROTTLED;
+               bio_clear_flag(bio, BIO_THROTTLED);
        return throttled;
 }
 
index 44f9bca332e5145374bc227889ee0f24b90a0ac3..6df722de2e2267e4a976e27a534039a79ba67450 100644 (file)
@@ -119,6 +119,8 @@ struct bio {
 #define BIO_QUIET      6       /* Make BIO Quiet */
 #define BIO_CHAIN      7       /* chained bio, ->bi_remaining in effect */
 #define BIO_REFFED     8       /* bio has elevated ->bi_cnt */
+#define BIO_THROTTLED  9       /* This bio has already been subjected to
+                                * throttling rules. Don't do it again. */
 
 /*
  * Flags starting here get preserved by bio_reset() - this includes
@@ -165,10 +167,6 @@ enum rq_flag_bits {
        __REQ_PREFLUSH,         /* request for cache flush */
        __REQ_RAHEAD,           /* read ahead, can fail anytime */
 
-       /* bio only flags */
-       __REQ_THROTTLED,        /* This bio has already been subjected to
-                                * throttling rules. Don't do it again. */
-
        /* request only flags */
        __REQ_SORTED,           /* elevator knows about this request */
        __REQ_SOFTBARRIER,      /* may not be passed by ioscheduler */
@@ -213,8 +211,6 @@ enum rq_flag_bits {
        (REQ_NOMERGE | REQ_STARTED | REQ_SOFTBARRIER | REQ_PREFLUSH | REQ_FUA | REQ_FLUSH_SEQ)
 
 #define REQ_RAHEAD             (1ULL << __REQ_RAHEAD)
-#define REQ_THROTTLED          (1ULL << __REQ_THROTTLED)
-
 #define REQ_SORTED             (1ULL << __REQ_SORTED)
 #define REQ_SOFTBARRIER                (1ULL << __REQ_SOFTBARRIER)
 #define REQ_FUA                        (1ULL << __REQ_FUA)