linux-nvme.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: Hannes Reinecke <hare@suse.de>
To: Christoph Hellwig <hch@lst.de>, Daniel Wagner <dwagner@suse.de>
Cc: James Smart <james.smart@broadcom.com>,
	Keith Busch <kbusch@kernel.org>, Sagi Grimberg <sagi@grimberg.me>,
	linux-nvme@lists.infradead.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v0 1/6] nvme-fabrics: introduce connect_sync option
Date: Sat, 17 Feb 2024 17:27:51 +0100	[thread overview]
Message-ID: <0bd86557-c2da-42d0-9ad8-021c3f4fbd8f@suse.de> (raw)
In-Reply-To: <20240216094909.GA19961@lst.de>

On 2/16/24 10:49, Christoph Hellwig wrote:
> On Fri, Feb 16, 2024 at 09:45:21AM +0100, Daniel Wagner wrote:
>> The TCP and RDMA transport are doing a synchronous connect, meaning the
>> syscal returns with the final result, that is. it either failed or
>> succeeded.
>>
>> This isn't the case for FC. This transport just setups and triggers
>> the connect and returns without waiting on the result.
> 
> That's really weird and unexpected.  James, can you explain the reason
> behind this?
> 
Reason is that the initial connect attempt might fail with an temporary 
failure, and will need to be retried. And rather than implementing two 
methods for handling this (one for the initial connect, and another one
for reconnect where one _has_ to use a workqueue) as eg TCP and RDMA
has implemented it FC is using a single code path for handling both.

Temporary failure on initial connect is far more likely on FC than on
other transports due to the way how FC-NVMe is modelled; essentially
one has to log into the remote port for each protocol. So if you run
in a dual fabric (with both FCP and NVMe) you'll need to log into the
same remote port twice. Depending on the implementation the target might 
only be capable of handling one port login at the same time, so the
other one will be failed with a temporary error.
That's why it's a common issue with FC. It _might_ happen with TCP, too,
but apparently not regularly otherwise we would have seen quite some
failures here; TCP can't really handle temporary failures for the
initial connect.

Cheers,

Hannes
-- 
Dr. Hannes Reinecke                  Kernel Storage Architect
hare@suse.de                                +49 911 74053 688
SUSE Software Solutions GmbH, Frankenstr. 146, 90461 Nürnberg
HRB 36809 (AG Nürnberg), GF: I. Totev, A. McDonald, W. Knoblich



  parent reply	other threads:[~2024-02-17 16:28 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-02-16  8:45 [PATCH v0 0/6] nvme-fc: fix blktests nvme/041 Daniel Wagner
2024-02-16  8:45 ` [PATCH v0 1/6] nvme-fabrics: introduce connect_sync option Daniel Wagner
2024-02-16  9:49   ` Christoph Hellwig
2024-02-16 16:44     ` Daniel Wagner
2024-02-20  6:51       ` Christoph Hellwig
2024-02-17 16:27     ` Hannes Reinecke [this message]
2024-02-16  8:45 ` [PATCH v0 2/6] nvme-fc: rename free_ctrl callback to match name pattern Daniel Wagner
2024-02-16  9:49   ` Christoph Hellwig
2024-02-16  8:45 ` [PATCH v0 3/6] nvme-fc: do not retry when auth fails or connection is refused Daniel Wagner
2024-02-16  9:49   ` Christoph Hellwig
2024-02-16  8:45 ` [PATCH v0 4/6] nvme-fabrics: introduce ref counting for nvmf_ctrl_options Daniel Wagner
2024-02-16  9:50   ` Christoph Hellwig
2024-02-16  8:45 ` [PATCH v0 5/6] nvme-fc: redesign locking and refcounting Daniel Wagner
2024-02-16  9:51   ` Christoph Hellwig
2024-02-16 11:09   ` Hannes Reinecke
2024-02-16 12:40     ` Daniel Wagner
2024-02-16  8:45 ` [PATCH v0 6/6] nvme-fc: wait for connect attempt to finish Daniel Wagner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=0bd86557-c2da-42d0-9ad8-021c3f4fbd8f@suse.de \
    --to=hare@suse.de \
    --cc=dwagner@suse.de \
    --cc=hch@lst.de \
    --cc=james.smart@broadcom.com \
    --cc=kbusch@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-nvme@lists.infradead.org \
    --cc=sagi@grimberg.me \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).