blk-wbt: cleanup disable-by-default for CFQ
authorJens Axboe <axboe@fb.com>
Mon, 28 Nov 2016 16:25:50 +0000 (09:25 -0700)
committerJens Axboe <axboe@fb.com>
Mon, 28 Nov 2016 17:27:03 +0000 (10:27 -0700)
Make it clear that we are disabling wbt for the specified queued,
if it was enabled by default. This is in preparation for allowing
users to re-enable wbt, and not have it disabled automatically
again.

Signed-off-by: Jens Axboe <axboe@fb.com>
block/blk-wbt.c
block/blk-wbt.h
block/cfq-iosched.c

index 92df2f7c5af1a047a13b5a009370fde23e519a25..7c0e618d6e7d974ab70d2bc30632c870bf80f1c4 100644 (file)
@@ -665,15 +665,21 @@ void wbt_set_write_cache(struct rq_wb *rwb, bool write_cache_on)
                rwb->wc = write_cache_on;
 }
 
-void wbt_disable(struct rq_wb *rwb)
+ /*
+ * Disable wbt, if enabled by default. Only called from CFQ, if we have
+ * cgroups enabled
+ */
+void wbt_disable_default(struct request_queue *q)
 {
+       struct rq_wb *rwb = q->rq_wb;
+
        if (rwb) {
                del_timer_sync(&rwb->window_timer);
                rwb->win_nsec = rwb->min_lat_nsec = 0;
                wbt_update_limits(rwb);
        }
 }
-EXPORT_SYMBOL_GPL(wbt_disable);
+EXPORT_SYMBOL_GPL(wbt_disable_default);
 
 u64 wbt_default_latency_nsec(struct request_queue *q)
 {
index 9dfc88ad7f305dc299f303a858454123885467f3..8f485f8e1baf7aeddbe866f5a480a229ea38619c 100644 (file)
@@ -105,7 +105,7 @@ void wbt_exit(struct request_queue *);
 void wbt_update_limits(struct rq_wb *);
 void wbt_requeue(struct rq_wb *, struct blk_issue_stat *);
 void wbt_issue(struct rq_wb *, struct blk_issue_stat *);
-void wbt_disable(struct rq_wb *);
+void wbt_disable_default(struct request_queue *);
 
 void wbt_set_queue_depth(struct rq_wb *, unsigned int);
 void wbt_set_write_cache(struct rq_wb *, bool);
@@ -141,7 +141,7 @@ static inline void wbt_requeue(struct rq_wb *rwb, struct blk_issue_stat *stat)
 static inline void wbt_issue(struct rq_wb *rwb, struct blk_issue_stat *stat)
 {
 }
-static inline void wbt_disable(struct rq_wb *rwb)
+static inline void wbt_disable_default(struct request_queue *q)
 {
 }
 static inline void wbt_set_queue_depth(struct rq_wb *rwb, unsigned int depth)
index 9894dc985e09350354f9a932f37f0afa55de2baa..c73a6fcaeb9d52c7e2aa1ebbcf725e86cdc707f4 100644 (file)
@@ -3780,13 +3780,10 @@ static void check_blkcg_changed(struct cfq_io_cq *cic, struct bio *bio)
        /*
         * If we have a non-root cgroup, we can depend on that to
         * do proper throttling of writes. Turn off wbt for that
-        * case.
+        * case, if it was enabled by default.
         */
-       if (nonroot_cg) {
-               struct request_queue *q = cfqd->queue;
-
-               wbt_disable(q->rq_wb);
-       }
+       if (nonroot_cg)
+               wbt_disable_default(cfqd->queue);
 
        /*
         * Drop reference to queues.  New queues will be assigned in new