[PATCH RFC 3/3] nvme: delay failover by command quiesce timeout
Daniel Wagner
dwagner at suse.de
Tue Apr 15 23:39:21 PDT 2025
On Tue, Apr 15, 2025 at 03:56:13PM -0700, Randy Jennings wrote:
> 2*/3*KATO is from when the host has detected a loss of communication
> to when the host knows (given some assumptions) that the target has
> detected a loss of communication. A command timeout on the host is a
> fine time for the host to decide that it has lost communication with
> the target, but there are other events. At the time the host has
> detected a loss of communication, it needs to tear down the
> association (which includes stopping KATO & starting disconnect on
> _all_ the connections in the association). CQT does not start until
> the host knows that the target has detected a loss of communication.
> So, Mohamed's delay is correct.
I was answering the question why I have chosen the values
nvme_schedule_failover and wanted to point out these values are not
related to the timeout detection.
> > > - What about requests that do not go through nvme_failover_req(), like
> > > passthrough requests, do we not want to hold these requests until it
> > > is safe for them to be retried?
> >
> > Pasthrough commands should fail immediately. Userland is in charge here,
> > not the kernel. At least this what should happen here.
> This is not correct according to the spec, and, I believe, not a good
> implementation choice. The driver (in the spec) is instructed _not_
> to return an error for any request until it knows (given some
> assumptions) that the target is no longer processing the request (or
> that processing does not matter; as in the case of a READ).
I was not precise enough: admin commands should fail.
I suggest to keep this topic separated for the time being. It makes
this discussion even more complex.
More information about the Linux-nvme
mailing list