diff --git a/block/blk-mq-tag.c b/block/blk-mq-tag.c index 1aab39f..4f90f91 100644 --- a/block/blk-mq-tag.c +++ b/block/blk-mq-tag.c @@ -242,7 +242,7 @@ static int bt_get(struct blk_mq_alloc_data *data, bool was_empty; was_empty = list_empty(&wait.task_list); - prepare_to_wait(&bs->wait, &wait, TASK_UNINTERRUPTIBLE); + prepare_to_wait_exclusive(&bs->wait, &wait, TASK_UNINTERRUPTIBLE); tag = __bt_get(hctx, bt, last_tag); if (tag != -1) @@ -345,7 +345,7 @@ static void bt_clear_tag(struct blk_mq_bitmap_tags *bt, unsigned int tag) if (bs && atomic_dec_and_test(&bs->wait_cnt)) { atomic_set(&bs->wait_cnt, bt->wake_cnt); bt_index_inc(&bt->wake_index); - wake_up(&bs->wait); + wake_up_nr(&bs->wait, bt->wake_cnt); } }