• Ming Lei's avatar
    nvme: avoid to use blk_mq_abort_requeue_list() · 986f75c8
    Ming Lei authored
    NVMe may add request into requeue list simply and not kick off the
    requeue if hw queues are stopped. Then blk_mq_abort_requeue_list()
    is called in both nvme_kill_queues() and nvme_ns_remove() for
    dealing with this issue.
    
    Unfortunately blk_mq_abort_requeue_list() is absolutely a
    race maker, for example, one request may be requeued during
    the aborting. So this patch just calls blk_mq_kick_requeue_list() in
    nvme_kill_queues() to handle this issue like what nvme_start_queues()
    does. Now all requests in requeue list when queues are stopped will be
    handled by blk_mq_kick_requeue_list() when queues are restarted, either
    in nvme_start_queues() or in nvme_kill_queues().
    
    Cc: stable@vger.kernel.org
    Reported-by: default avatarZhang Yi <yizhan@redhat.com>
    Reviewed-by: default avatarKeith Busch <keith.busch@intel.com>
    Reviewed-by: default avatarJohannes Thumshirn <jthumshirn@suse.de>
    Signed-off-by: default avatarMing Lei <ming.lei@redhat.com>
    Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
    986f75c8
core.c 62.9 KB