• Ming Lei's avatar
    dm: do not use waitqueue for request-based DM · 85067747
    Ming Lei authored
    Given request-based DM now uses blk-mq's blk_mq_queue_inflight() to
    determine if outstanding IO has completed (and DM has no control over
    the blk-mq state machine used to track outstanding IO) it is unsafe to
    wakeup waiter (dm_wait_for_completion) before blk-mq has cleared a
    request's state bits (e.g. MQ_RQ_IN_FLIGHT or MQ_RQ_COMPLETE).  As
    such dm_wait_for_completion() could be left to wait indefinitely if no
    other requests complete.
    
    Fix this by eliminating request-based DM's use of waitqueue to wait
    for blk-mq requests to complete in dm_wait_for_completion.
    Signed-off-by: default avatarMing Lei <ming.lei@redhat.com>
    Depends-on: 3c94d83c ("blk-mq: change blk_mq_queue_busy() to blk_mq_queue_inflight()")
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarMike Snitzer <snitzer@redhat.com>
    85067747
dm-rq.c 15.2 KB