• Nilay Shroff's avatar
    nvmet-passthru: clear EUID/NGUID/UUID while using loop target · e38dad43
    Nilay Shroff authored
    When nvme passthru is configured using loop target, the clear_ids
    attribute is, by default, set to true. This attribute would ensure that
    EUID/NGUID/UUID is cleared for the loop passthru target.
    
    The newer NVMe disk supporting the NVMe spec 1.3 or higher, typically,
    implements the support for "Namespace Identification Descriptor list"
    command. This command when issued from host returns EUID/NGUID/UUID
    assigned to the inquired namespace. Not clearing these values, while
    using nvme passthru using loop target, would result in NVMe host driver
    rejecting the namespace. This check was implemented in the commit
    2079f41e ("nvme: check that EUI/GUID/UUID are globally unique").
    
    The fix implemented in this commit ensure that when host issues ns-id
    descriptor list command, the EUID/NGUID/UUID are cleared by passthru
    target. In fact, the function nvmet_passthru_override_id_descs() which
    clears those unique ids already exits, so we just need to ensure that
    ns-id descriptor list command falls through the corretc code path. And
    while we're at it, we also combines the three passthru admin command
    cases together which shares the same code.
    Reviewed-by: default avatarChaitanya Kulkarni <kch@nvidia.com>
    Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
    Signed-off-by: default avatarNilay Shroff <nilay@linux.ibm.com>
    Signed-off-by: default avatarKeith Busch <kbusch@kernel.org>
    e38dad43
passthru.c 17 KB