Skip to content
  • Damien Le Moal's avatar
    dm kcopyd: add sequential write feature · b73c67c2
    Damien Le Moal authored
    
    
    When copyying blocks to host-managed zoned block devices, writes must be
    sequential.  However, dm_kcopyd_copy() does not guarantee this as writes
    are issued in the completion order of reads, and reads may complete out
    of order despite being issued sequentially.
    
    Fix this by introducing the DM_KCOPYD_WRITE_SEQ feature flag.  This can
    be specified when calling dm_kcopyd_copy() and should be set
    automatically if one of the destinations is a host-managed zoned block
    device.  For a split job, the master job maintains the write position at
    which writes must be issued.  This is checked with the pop() function
    which is modified to not return any write I/O sub job that is not at the
    correct write position.
    
    When DM_KCOPYD_WRITE_SEQ is specified for a job, errors cannot be
    ignored and the flag DM_KCOPYD_IGNORE_ERROR is ignored, even if
    specified by the user.
    
    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>
    Signed-off-by: default avatarMike Snitzer <snitzer@redhat.com>
    b73c67c2