Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit df35c7c9 authored by Alan Stern's avatar Alan Stern Committed by Jens Axboe
Browse files

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: default avatarAlan Stern <stern@rowland.harvard.edu>
Acked-by: default avatarTejun Heo <tj@kernel.org>
CC: James Bottomley <James.Bottomley@HansenPartnership.com>
CC: Jens Axboe <axboe@kernel.dk>
Signed-off-by: default avatarJens Axboe <axboe@fb.com>
parent 2da78092
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -554,8 +554,10 @@ int blk_register_queue(struct gendisk *disk)
	 * Initialization must be complete by now.  Finish the initial
	 * bypass from queue allocation.
	 */
	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)