summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Stern <stern@rowland.harvard.edu>2014-09-09 11:50:58 -0400
committerJens Axboe <axboe@fb.com>2014-09-09 10:44:24 -0600
commitdf35c7c912fe668797681842b3b74c61b0664050 (patch)
tree1026ae593bef21aabb5d169e170086797d2e1520
parent2da78092dda13f1efd26edbbf99a567776913750 (diff)
downloadkernel-common-df35c7c912fe668797681842b3b74c61b0664050.tar.gz
kernel-common-df35c7c912fe668797681842b3b74c61b0664050.tar.bz2
kernel-common-df35c7c912fe668797681842b3b74c61b0664050.zip
Block: fix unbalanced bypass-disable in blk_register_queue
When a queue is registered, the block layer turns off the bypass setting (because bypass is enabled when the queue is created). This doesn't work well for queues that are unregistered and then registered again; we get a WARNING because of the unbalanced calls to blk_queue_bypass_end(). This patch fixes the problem by making blk_register_queue() call blk_queue_bypass_end() only the first time the queue is registered. Signed-off-by: Alan Stern <stern@rowland.harvard.edu> Acked-by: Tejun Heo <tj@kernel.org> CC: James Bottomley <James.Bottomley@HansenPartnership.com> CC: Jens Axboe <axboe@kernel.dk> Signed-off-by: Jens Axboe <axboe@fb.com>
-rw-r--r--block/blk-sysfs.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/block/blk-sysfs.c b/block/blk-sysfs.c
index 4db5abf96b9e..17f5c84ce7bf 100644
--- a/block/blk-sysfs.c
+++ b/block/blk-sysfs.c
@@ -554,8 +554,10 @@ int blk_register_queue(struct gendisk *disk)
* Initialization must be complete by now. Finish the initial
* bypass from queue allocation.
*/
- queue_flag_set_unlocked(QUEUE_FLAG_INIT_DONE, q);
- blk_queue_bypass_end(q);
+ if (!blk_queue_init_done(q)) {
+ queue_flag_set_unlocked(QUEUE_FLAG_INIT_DONE, q);
+ blk_queue_bypass_end(q);
+ }
ret = blk_trace_init_sysfs(dev);
if (ret)