• Damien Le Moal's avatar
    dm table: add zoned block devices validation · dd88d313
    Damien Le Moal authored
    1) Introduce DM_TARGET_ZONED_HM feature flag:
    
    The target drivers currently available will not operate correctly if a
    table target maps onto a host-managed zoned block device.
    
    To avoid problems, introduce the new feature flag DM_TARGET_ZONED_HM to
    allow a target to explicitly state that it supports host-managed zoned
    block devices.  This feature is checked for all targets in a table if
    any of the table's block devices are host-managed.
    
    Note that as host-aware zoned block devices are backward compatible with
    regular block devices, they can be used by any of the current target
    types.  This new feature is thus restricted to host-managed zoned block
    devices.
    
    2) Check device area zone alignment:
    
    If a target maps to a zoned block device, check that the device area is
    aligned on zone boundaries to avoid problems with REQ_OP_ZONE_RESET
    operations (resetting a partially mapped sequential zone would not be
    possible).  This also facilitates the processing of zone report with
    REQ_OP_ZONE_REPORT bios.
    
    3) Check block devices zone model compatibility
    
    When setting the DM device's queue limits, several possibilities exists
    for zoned block devices:
    1) The DM target driver may want to expose a different zone model
    (e.g. host-managed device emulation or regular block device on top of
    host-managed zoned block devices)
    2) Expose the underlying zone model of the devices as-is
    
    To allow both cases, the underlying block device zone model must be set
    in the target limits in dm_set_device_limits() and the compatibility of
    all devices checked similarly to the logical block size alignment.  For
    this last check, introduce validate_hardware_zoned_model() to check that
    all targets of a table have the same zone model and that the zone size
    of the target devices are equal.
    Signed-off-by: default avatarDamien Le Moal <damien.lemoal@wdc.com>
    Reviewed-by: default avatarHannes Reinecke <hare@suse.com>
    Reviewed-by: default avatarBart Van Assche <bart.vanassche@sandisk.com>
    [Mike Snitzer refactored Damien's original work to simplify the code]
    Signed-off-by: default avatarMike Snitzer <snitzer@redhat.com>
    dd88d313
dm-table.c 46.7 KB