Skip to content

Commit

Permalink
blk-wbt: cleanup disable-by-default for CFQ
Browse files Browse the repository at this point in the history
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 <[email protected]>
  • Loading branch information
axboe committed Nov 28, 2016
1 parent 80e091d commit fa224ee
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 10 deletions.
10 changes: 8 additions & 2 deletions block/blk-wbt.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
{
Expand Down
4 changes: 2 additions & 2 deletions block/blk-wbt.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -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)
Expand Down
9 changes: 3 additions & 6 deletions block/cfq-iosched.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit fa224ee

Please sign in to comment.