DEFINE_WAIT_BIT uses wake_bit_function() which is able to avoid false-wakeups due to possible hash collisions in the bit wait table. Signed-off-by: Jacob Wen <jian.w.wen@xxxxxxxxxx> --- fs/block_dev.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/fs/block_dev.c b/fs/block_dev.c index 0ae656e022fd..ba4fad08cdaf 100644 --- a/fs/block_dev.c +++ b/fs/block_dev.c @@ -1062,12 +1062,12 @@ static int bd_prepare_to_claim(struct block_device *bdev, /* if claiming is already in progress, wait for it to finish */ if (whole->bd_claiming) { wait_queue_head_t *wq = bit_waitqueue(&whole->bd_claiming, 0); - DEFINE_WAIT(wait); + DEFINE_WAIT_BIT(wait, &whole->bd_claiming, 0); - prepare_to_wait(wq, &wait, TASK_UNINTERRUPTIBLE); + prepare_to_wait(wq, &wait.wq_entry, TASK_UNINTERRUPTIBLE); spin_unlock(&bdev_lock); schedule(); - finish_wait(wq, &wait); + finish_wait(wq, &wait.wq_entry); spin_lock(&bdev_lock); goto retry; } -- 2.17.1