• T
    blk-mq: blk_mq_freeze_queue() should allow nesting · cddd5d17
    Tejun Heo 提交于
    While converting to percpu_ref for freezing, add703fd ("blk-mq:
    use percpu_ref for mq usage count") incorrectly made
    blk_mq_freeze_queue() misbehave when freezing is nested due to
    percpu_ref_kill() being invoked on an already killed ref.
    
    Fix it by making blk_mq_freeze_queue() kill and kick the queue only
    for the outermost freeze attempt.  All the nested ones can simply wait
    for the ref to reach zero.
    
    While at it, remove unnecessary @wake initialization from
    blk_mq_unfreeze_queue().
    Signed-off-by: NTejun Heo <tj@kernel.org>
    Reported-by: NMing Lei <ming.lei@canonical.com>
    Signed-off-by: NJens Axboe <axboe@fb.com>
    cddd5d17
blk-mq.c 46.5 KB