[PATCH] tree: Add NVM subsystem controller identifier

Nilay Shroff nilay at linux.ibm.com
Tue Apr 2 06:32:15 PDT 2024



On 3/26/24 14:20, Nilay Shroff wrote:
> 
> 
> On 3/26/24 12:40, Hannes Reinecke wrote:
>> On 3/26/24 07:57, Nilay Shroff wrote:
>>> This commit introduces a field "cntlid" for controller,
>>> that contains the NVM subsystem unique identifier assigned
>>> to each controller device in an NVM subsystem.
>>>
>>> While attaching a namespace, typically user needs to specify the
>>> controller identifier (cntlid). The cntlid could be referenced from
>>> sysfs (/sys/class/nvme/nvmeX/cntlid) but it would be nice to have
>>> a direct option.
>>>  > Signed-off-by: Nilay Shroff <nilay at linux.ibm.com>

>>
>> Errm. How would that work? /dev/nvme0 _is_ a controller, and as such will have an assigned cntlid. And if one would issue an 'attach-ns'
>> command the only controller which it could address is that controller
>> to which the command is issued.
>> I'd be _very_ surprised if you could issue 'attach-ns' against _another_
>> controller. So why do we need this option?
>> Shouldn't we rather infer the cntlid from the existing controller?
>>
> Yes it's possible to attach a namespace against the cntlid which could be different from 
> the nvmeX device we use while attaching the namespace. Moreover, if we want to create a shared 
> namespace then we need to specify all controller identifiers which would share that namespace.
> 
> For reference, I would show the example output below:
> 
> Example 1: Create a shared namespace and attach to multiple controllers:
> ------------------------------------------------------------------------
> 
> # nvme list -v 
> Subsystem        Subsystem-NQN                                                                                    Controllers
> ---------------- ------------------------------------------------------------------------------------------------ ----------------
> nvme-subsys1     nqn.1994-11.com.samsung:nvme:PM1735a:2.5-inch:S6RTNE0R900057                                     nvme1, nvme3
> [...]
> 
> As we could see above I have two controllers (nvme1 and nvme3) under NVM subsys1. 
> Lets find cntlid of each controller.
> 
> # cat /sys/class/nvme/nvme1/cntlid 
> 66 
> # cat /sys/class/nvme/nvme3/cntlid 
> 65
> 
> Now create a shared namespace and attach it against the above controllers:
> 
> # nvme create-ns /dev/nvme1 --nsze=0x156d56 --ncap=0x156d56  --block-size=4096 -m 1 
> create-ns: Success, created nsid:1
> 
> # nvme attach-ns /dev/nvme1 -n 0x1 -c 65,66 
> attach-ns: Success, nsid:1
> 
> # nvme list -v
> [...]
> 
> Device       Generic      NSID       Usage                      Format           Controllers     
> ------------ ------------ ---------- -------------------------- ---------------- ----------------
> /dev/nvme1n1 /dev/ng1n1   0x1          5.75  GB /   5.75  GB      4 KiB +  0 B   nvme1, nvme3
> 
> 
> As we could see above for creating shared namespace we need to know the cntlid of both 
> nvme1 and nvme3 controllers.
> 
> Example 2: Create a private namespace and attach to a controller other than the one specified in nvmeX
> ------------------------------------------------------------------------------------------------------
> 
> # nvme create-ns /dev/nvme1 --nsze=0x156d56 --ncap=0x156d56  --block-size=4096
> create-ns: Success, created nsid:2
> 
> # nvme attach-ns /dev/nvme1 -n 2 -c 65
> attach-ns: Success, nsid:2
> 
> Please note above that I attached the namespace against controller nvme3 (the cntlid 65 is assigned to nvme3)
> 
> # nvme list -v
> [...]
> 
> Device       Generic      NSID       Usage                      Format           Controllers     
> ------------ ------------ ---------- -------------------------- ---------------- ----------------
> /dev/nvme1n1 /dev/ng1n1   0x1          5.75  GB /   5.75  GB      4 KiB +  0 B   nvme1, nvme3
> /dev/nvme1n2 /dev/ng1n2   0x2          5.75  GB /   5.75  GB      4 KiB +  0 B   nvme3
> 

If there's no other objection to the above change then can we accept the patch?

Thanks,
--Nilay

 



More information about the Linux-nvme mailing list