From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============3197439458167147891==" MIME-Version: 1.0 From: Jonas Pfefferle Subject: [SPDK] RFC: NVMf namespace masking Date: Sat, 08 May 2021 15:37:09 +0200 Message-ID: List-ID: To: spdk@lists.01.org --===============3197439458167147891== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi all, I would be happy to get some feedback on my NVMf target namespace masking = implementation using attach/detach: https://review.spdk.io/gerrit/c/spdk/spdk/+/7821 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 [--host ] - nvmf_ns_detach_ctrlr [--host ] 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 --===============3197439458167147891==--