Revert "blk-mq: Micro-optimize bt_get()"

This reverts commit 52f7eb945f2ba62b324bb9ae16d945326a961dcf.

The optimization is only really safe for a single queue, otherwise
'bs' and 'bt' can indeed change, and if we don't do a finish_wait()
for each loop, we'll potentially change the wait structure and
corrupt task wait list.

Reported-by: Jan Kara <jack@suse.cz>
diff --git a/block/blk-mq-tag.c b/block/blk-mq-tag.c
index e3d4e40..32e8dbb 100644
--- a/block/blk-mq-tag.c
+++ b/block/blk-mq-tag.c
@@ -248,8 +248,8 @@
 	if (!(data->gfp & __GFP_WAIT))
 		return -1;
 
+	bs = bt_wait_ptr(bt, hctx);
 	do {
-		bs = bt_wait_ptr(bt, hctx);
 		prepare_to_wait(&bs->wait, &wait, TASK_UNINTERRUPTIBLE);
 
 		tag = __bt_get(hctx, bt, last_tag);
@@ -285,6 +285,8 @@
 			hctx = data->hctx;
 			bt = &hctx->tags->bitmap_tags;
 		}
+		finish_wait(&bs->wait, &wait);
+		bs = bt_wait_ptr(bt, hctx);
 	} while (1);
 
 	finish_wait(&bs->wait, &wait);