• Mike Snitzer's avatar
    dm table: fix NVMe bio-based dm_table_determine_type() validation · eaa160ed
    Mike Snitzer authored
    The 'verify_rq_based:' code in dm_table_determine_type() was checking
    all devices in the DM table rather than only checking the data devices.
    Fix this by using the immutable target's iterate_devices method.
    
    Also, tweak the block of dm_table_determine_type() code that decides
    whether to upgrade from DM_TYPE_BIO_BASED to DM_TYPE_NVME_BIO_BASED so
    that it makes sure the immutable_target doesn't support require
    splitting IOs.
    
    These changes have been verified to allow a "thin-pool" target whose
    data device is an NVMe device to be upgraded to DM_TYPE_NVME_BIO_BASED.
    Using the thin-pool in NVMe bio-based mode was verified to pass all the
    device-mapper-test-suite's "thin-provisioning" tests.
    
    Also verified that request-based DM multipath (with queue_mode "rq" and
    "mq") works as expected using the 'mptest' harness.
    
    Fixes: 22c11858 ("dm: introduce DM_TYPE_NVME_BIO_BASED")
    Signed-off-by: default avatarMike Snitzer <snitzer@redhat.com>
    eaa160ed
dm-table.c 49.1 KB