[SPDK] Re: RFC: NVMf namespace masking

松本周平 / MATSUMOTO,SHUUHE I <shuhei.matsumoto.xt at hitachi.com> Mon, 10 May 2021 02:20:38 +0000
Newsgroups dev.linux.lists.spdk
Message-ID <TYAPR01MB4734EF03CBB5DDB2DF62A803A2549@TYAPR01MB4734.jpnprd01.prod.outlook.com>
Hi Jonas,

Thank you so much for your proposal and patch.

I remember when I talked with my colleague while ago, he had wanted similar feature, nameapce access control per host and controller, otherwise he needed to create a subsystem per host and was not efficient. I think such access control is popular as zoning in FCP and so very valuable for NVMe-oF too.

And I also remember that Michael Haeuptle had nice idea for similar feature.
He may give better feedback if he has time to do.

Hi Michael,

Will you take a look at the patch if have time to do?
If I remember correctly, you had proposed a nice and similar idea before.
I'm reading the patch too though.

Thanks,
Shuhei

________________________________
差出人: Jonas Pfefferle <pepperjo(a)japf.ch>
送信日時: 2021年5月8日 22:37
宛先: Storage Performance Development Kit <spdk(a)lists.01.org>
CC: scott.d.peterson(a)intel.com <scott.d.peterson(a)intel.com>
件名: [!][SPDK] RFC: NVMf namespace masking

Hi all,

I would be happy to get some feedback on my NVMf target namespace masking
implementation using attach/detach:
https://secure-web.cisco.com/1R19dzBtq_pGXdJ6bnJaFHZZ1W5CJEP9TXoaxqo9UeKLkn4v5jmjP0MFaA2u3hCMopOCwV2aU1Mm56wGN_S65VHxzKXGGWVPx8jKLq0uHD1aDftUyd6yk0iPYM-30kOdNPQXwhpyX2BhKzAIZvqm3dLIa4glZAhVO91Tisc1blzDgSSY0WlkNNqPlRR8ceRUcadwZTSlpPidaxTcUZ8Q9MVVvwFc913pEBUW5ZgZj3irQ5hEnKsZMaUq-p9ZVc-929SLvipGxablpznr54mHjNhXy3K3nZknszFh8MuKJuNmCCFtZ8aexGybgiT0Mc7i7iQLlQ8UyY6Pb9FVoTY3MRw/https%3A%2F%2Freview.spdk.io%2Fgerrit%2Fc%2Fspdk%2Fspdk%2F%2B%2F7821

The patch introduces namespace masking for NVMe-over-fabrics
targets by allowing to (dynamically) attach and detach
controllers to/from namespaces, cf. NVMe spec 1.4 - section 6.1.4.
Since SPDK only supports the dynamic controller model a new
controller is allocated on every fabric connect command.
This allows to attach/detach controllers of a specific
host NQN to/from a namespace. A host can only perform
operations to an active namespace. Inactive namespaces can
be listed (not supported by SPDK) but no additional
information can be retrieved:
"Unless otherwise noted, specifying an inactive NSID in a
command that uses the Namespace Identifier (NSID) field shall
cause the controller to abort the command with status
Invalid Field in Command" - NVMe spec 1.4 - section 6.1.5
Note that this patch does not implement the NVMe namespace
attachment command but allows to attach/detach via RPCs only.
To preserve current behavior all controllers are auto attached.
To not not auto attach controllers the nvmf_subsystem_add_ns
shall be called with "--no-auto-attach". We introduce two new
RPC calls:
- nvmf_ns_attach_ctrlr <subsysNQN> <NSID> [--host <hostNQN>]
- nvmf_ns_detach_ctrlr <subsysNQN> <NSID> [--host <hostNQN>]
If no host NQN is specified all controllers
(new and currently connected) will attach/detach to/from the
namespace specified.
The list in spdk_nvmf_ns is used to keep track of hostNQNs
which controllers should be attached on connect.
The active_ns array in spdk_nvmf_ctrlr is used for fast lookup
to check whether a NSID is active/inactive on command execution.

Thanks,
Jonas
_______________________________________________
SPDK mailing list -- spdk(a)lists.01.org
To unsubscribe send an email to spdk-leave(a)lists.01.org