]> git.baikalelectronics.ru Git - kernel.git/commit
nvme-fc: clear q_live at beginning of association teardown
authorJames Smart <jsmart2021@gmail.com>
Tue, 11 May 2021 04:56:35 +0000 (21:56 -0700)
committerChristoph Hellwig <hch@lst.de>
Wed, 19 May 2021 06:40:24 +0000 (08:40 +0200)
commited4eaa535e747628777a41ed4beb3d2a692df8dd
tree94126636a129c21d4b2254f3dcd1a31f2dcb50f7
parent93c663b707fff732067a42db7aa911811cc484cb
nvme-fc: clear q_live at beginning of association teardown

The __nvmf_check_ready() routine used to bounce all filesystem io if the
controller state isn't LIVE.  However, a later patch changed the logic so
that it rejection ends up being based on the Q live check.  The FC
transport has a slightly different sequence from rdma and tcp for
shutting down queues/marking them non-live.  FC marks its queue non-live
after aborting all ios and waiting for their termination, leaving a
rather large window for filesystem io to continue to hit the transport.
Unfortunately this resulted in filesystem I/O or applications seeing I/O
errors.

Change the FC transport to mark the queues non-live at the first sign of
teardown for the association (when I/O is initially terminated).

Fixes: 189fb517c185 ("nvme-fabrics: allow to queue requests for live queues")
Signed-off-by: James Smart <jsmart2021@gmail.com>
Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
Reviewed-by: Hannes Reinecke <hare@suse.de>
Signed-off-by: Christoph Hellwig <hch@lst.de>
drivers/nvme/host/fc.c