[PATCH 3/7] nvme_fc: retry failures to set io queue count

Hannes Reinecke hare at suse.de
Mon May 7 23:00:41 PDT 2018


On Mon,  7 May 2018 17:12:10 -0700
"James Smart" <jsmart2021 at gmail.com> wrote:

> During the creation of a new controller association, it's possible for
> errors and link connectivity issues to cause nvme_set_queue_count() to
> have its SET_FEATURES command fail with a positive non-zero code. The
> routine doesn't treat this as a hard error, instead setting the io
> queue count to zero and returning success.  This has the result of the
> transport setting the io queue count to 0, making the storage
> controller inoperable. The message "...Could not set queue count..."
> is seen.
> 
> Revise the fc transport to detect when it asked for io queues but got
> back a result of 0 io queues. In such a case, fail the re-connection
> attempt and fall into the retry loop.
> 
> Signed-off-by: James Smart <james.smart at broadcom.com>
> ---
>  drivers/nvme/host/fc.c | 14 ++++++++------
>  1 file changed, 8 insertions(+), 6 deletions(-)
> 
The usual problem when having _two_ return values.
Can't have nvme_set_queue_count() return the number of queues or a
negative number on failure?
Then the check would be much simplified.

Cheers,

Hannes



More information about the Linux-nvme mailing list