Re: [PATCHv2 0/6] nvme: double reset prevention

Sagi Grimberg
2019-09-20T17:52:01Z

> The main objective of this series is to prevent double resets. This sort
> of thing is known to have happened if a timeout occurs at roughly the same time
> as a user intiated reset, like through through PCIe's FLR.
>
> The double reset could happen because the controller disabling had been
> occuring outside of the RESETTING state when we can't schedule the
> reset_work, which is to occur later. When another reset schedules in
> between these events, the controller ends up in the wrong state.
>
> The end result of this series is simply to block subsequent resets by
> initializing the controller state to RESETTING without actually
> scheduling the reset_work. The first patches in this series are simply

are simply what?

>
> v1 -> v2:
>
> Merged up to current linux-block for-5.4/post
>
> Changelog updates
>
> Patch reordering for correct chronological sequence
>
> Fixed state handling for f/w activation failures
>
> Included a review from James Smart on the patches that weren't changed
>
> Keith Busch (6):
> nvme-pci: Free tagset if no IO queues
> nvme: Remove ADMIN_ONLY state
> nvme: Restart request timers in resetting state
> nvme: Introduce nvme_reset_continue
> nvme: Prevent resets during paused states
> nvme: Wait for reset state when required
>
> drivers/nvme/host/core.c | 80 ++++++++++++++++++++++++-------------
> drivers/nvme/host/fabrics.h | 3 +-
> drivers/nvme/host/nvme.h | 6 ++-
> drivers/nvme/host/pci.c | 78 +++++++++++++++++++++---------------
> drivers/nvme/host/rdma.c | 8 ++++
> drivers/nvme/host/tcp.c | 8 ++++
> 6 files changed, 121 insertions(+), 62 deletions(-)