[PATCH] nvmet: configfs: use ctrl->instance to track passthru subsystems

Keith Busch kbusch at kernel.org
Mon Dec 18 15:13:57 PST 2023


On Mon, Dec 18, 2023 at 07:03:32PM +0000, Evan Burgess wrote:
> 
> To prevent enabling more than one passthrough subsystem per NVMe 
> controller, passthru.c maintains an xarray indexed by cntlid values.
> Passthrough for a given nvmet subsystem cannot be enabled by configfs
> if the subsystem's passthru_ctrl->cntlid value is already accounted
> for in the xarray. 
> 
> However, according to the NVMe spec (rev 2.0c, p.145), "The Controller
> ID (CNTLID) value returned in the Identify Controller data structure 
> may be used to uniquely identify a controller within an NVM subsystem,"
> meaning that cntlid values are not guaranteed to be globally unique 
> across multiple subsystems. Instead, the cntlid only uniquely 
> identifies multiple controllers _within_ a subsystem. 
> 
> As a result, multiple unique & valid NVMe targets can be blocked from 
> enabling passthrough at the same time if their controllers share cntlid
> values, a behavior allowed by the spec. Fix this by indexing the xarray 
> with passthru_ctrl->instance values, which are allocated per 
> controller by IDA and thus should be truly unique.
>  
> Reviewed-by: Sagi Grimberg <sagi at grimberg.me>
> Signed-off-by: Evan Burgess <evan.burgess at seagate.com>

Thank you, applied to nvme-6.8.



More information about the Linux-nvme mailing list