diff options
author | Sagi Grimberg <sagi@grimberg.me> | 2019-08-30 11:00:59 -0700 |
---|---|---|
committer | Sagi Grimberg <sagi@grimberg.me> | 2019-09-12 08:50:45 -0700 |
commit | 205da24343013e0bd62475800df79cd053f22326 (patch) | |
tree | 41207ad7d7fa959f7cb7a402fe4bc6dd11f2cc51 /net | |
parent | 538af88ea7d9de241e6b6f006e9049c4d96723bb (diff) | |
download | linux-205da24343013e0bd62475800df79cd053f22326.tar.bz2 |
nvme: fix ns removal hang when failing to revalidate due to a transient error
If a controller reset is racing with a namespace revalidation, the
revalidation (admin) I/O will surely fail, but we should not remove the
namespace as we will execute the I/O when the controller is back up.
Same for spurious allocation errors (return -ENOMEM).
Fix this by checking the specific error code in nvme_revalidate_disk and
if it is a transient error (for example non DNR nvme statuses or
a negative ENOMEM as allocation failure), do not remove the namespace as
it will either recover when the controller is back up and schedule
a subsequent scan, or the controller is going away and the namespaces
will be removed anyways.
This fixes a hang namespace scanning racing with a controller reset and
also sporious I/O errors in path failover coditions where the
controller reset is racing with the namespace scan work with multipath
enabled.
Reported-by: Hannes Reinecke <hare@suse.de>
Reviewed-by: Hannes Reinecke <hare@suse.com>
Reviewed-by: James Smart <james.smart@broadcom.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
Diffstat (limited to 'net')
0 files changed, 0 insertions, 0 deletions