• John Garry's avatar
    scsi: scsi_debug: Atomic write support · 84f3a3c0
    John Garry authored
    Add initial support for atomic writes.
    
    As is standard method, feed device properties via modules param, those
    being:
    - atomic_max_size_blks
    - atomic_alignment_blks
    - atomic_granularity_blks
    - atomic_max_size_with_boundary_blks
    - atomic_max_boundary_blks
    
    These just match sbc4r22 section 6.6.4 - Block limits VPD page.
    
    We just support ATOMIC WRITE (16).
    
    The major change in the driver is how we lock the device for RW accesses.
    
    Currently the driver uses a per-device lock for accessing device metadata
    and "media" data (calls to do_device_access()) atomically for the duration
    of the whole read/write command.
    
    This should not suit verifying atomic writes. Reason being that currently
    all reads/writes are atomic, so using atomic writes does not prove
    anything.
    
    Change device access model to basis that regular writes only atomic on a
    per-sector basis, while reads and atomic writes are fully atomic.
    
    As mentioned, since accessing metadata and device media is atomic,
    continue to have regular writes involving metadata - like discard or PI -
    as atomic. We can improve this later.
    
    Currently we only support model where overlapping going reads or writes
    wait for current access to complete before commencing an atomic write.
    This is described in 4.29.3.2 section of the SBC. However, we simplify,
    things and wait for all accesses to complete (when issuing an atomic
    write).
    Reviewed-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: default avatarJohn Garry <john.g.garry@oracle.com>
    Acked-by: default avatarDarrick J. Wong <djwong@kernel.org>
    Reviewed-by: default avatarDarrick J. Wong <djwong@kernel.org>
    Reviewed-by: default avatarLuis Chamberlain <mcgrof@kernel.org>
    Link: https://lore.kernel.org/r/20240620125359.2684798-10-john.g.garry@oracle.comSigned-off-by: default avatarJens Axboe <axboe@kernel.dk>
    84f3a3c0
scsi_debug.c 251 KB