• Israel Rukshin's avatar
    nvme-rdma: Fix transfer length when write_generate/read_verify are 0 · 15ade5bf
    Israel Rukshin authored
    When the block layer doesn't generate/verify metadata, the SG length is
    smaller than the transfer length. This is because the SG length doesn't
    include the metadata length that is added by the HW on the wire. The
    target failes those commands with "Data SGL Length Invalid" by comparing
    the transfer length and the SG length. Fix it by adding the metadata
    length to the transfer length when there is no metadata SGL. The bug
    reproduces when setting read_verify/write_generate configs to 0 at the
    child multipath device or at the primary device when NVMe multipath is
    disabled.
    
    Note that setting those configs to 0 on the multipath device (ns_head)
    doesn't have any impact on the I/Os.
    
    Fixes: 5ec5d3bd ("nvme-rdma: add metadata/T10-PI support")
    Signed-off-by: default avatarIsrael Rukshin <israelr@nvidia.com>
    Signed-off-by: default avatarMax Gurtovoy <mgurtovoy@nvidia.com>
    Reviewed-by: default avatarSagi Grimberg <sagi@grimberg.me>
    Signed-off-by: default avatarKeith Busch <kbusch@kernel.org>
    15ade5bf
rdma.c 62.1 KB