Message ID | 20230613005847.1762378-2-ming.lei@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | nvme: fix two kinds of IO hang from removing NSs | expand |
> When error recovery is interrupted by controller removal, the controller > is left as quiesced, then IO hang can be caused. > > Fix the issue by unquiescing controller unconditionally when removing > namespaces. > > Reported-by: Chunguang Xu <brookxu.cn@gmail.com> > Closes: https://lore.kernel.org/linux-nvme/cover.1685350577.git.chunguang.xu@shopee.com/ > Signed-off-by: Ming Lei <ming.lei@redhat.com> > --- > drivers/nvme/host/core.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c > index 3ec38e2b9173..4ef5eaecaa75 100644 > --- a/drivers/nvme/host/core.c > +++ b/drivers/nvme/host/core.c > @@ -4692,6 +4692,12 @@ void nvme_remove_namespaces(struct nvme_ctrl *ctrl) > */ > nvme_mpath_clear_ctrl_paths(ctrl); > > + /* > + * Unquiesce io queues so any pending IO won't hang, especially > + * those submitted from scan work > + */ > + nvme_unquiesce_io_queues(ctrl); > + Looks fine, but I think that the removal of the unquiesce from the condition below (CTRL_DEAD) should be done in this patch. > /* prevent racing with ns scanning */ > flush_work(&ctrl->scan_work); >
diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c index 3ec38e2b9173..4ef5eaecaa75 100644 --- a/drivers/nvme/host/core.c +++ b/drivers/nvme/host/core.c @@ -4692,6 +4692,12 @@ void nvme_remove_namespaces(struct nvme_ctrl *ctrl) */ nvme_mpath_clear_ctrl_paths(ctrl); + /* + * Unquiesce io queues so any pending IO won't hang, especially + * those submitted from scan work + */ + nvme_unquiesce_io_queues(ctrl); + /* prevent racing with ns scanning */ flush_work(&ctrl->scan_work);
When error recovery is interrupted by controller removal, the controller is left as quiesced, then IO hang can be caused. Fix the issue by unquiescing controller unconditionally when removing namespaces. Reported-by: Chunguang Xu <brookxu.cn@gmail.com> Closes: https://lore.kernel.org/linux-nvme/cover.1685350577.git.chunguang.xu@shopee.com/ Signed-off-by: Ming Lei <ming.lei@redhat.com> --- drivers/nvme/host/core.c | 6 ++++++ 1 file changed, 6 insertions(+)