• Boaz Harrosh's avatar
    [SCSI] libosd: Support for scatter gather write/read commands · e96e72c4
    Boaz Harrosh authored
    This patch adds the Scatter-Gather (sg) API to libosd.
    Scatter-gather enables a write/read of multiple none-contiguous
    areas of an object, in a single call. The extents may overlap
    and/or be in any order.
    
    The Scatter-Gather list is sent to the target in what is called
    a "cdb continuation segment". This is yet another possible segment
    in the osd-out-buffer. It is unlike all other segments in that it
    sits before the actual "data" segment (which until now was always
    first), and that it is signed by itself and not part of the data
    buffer. This is because the cdb-continuation-segment is considered
    a spill-over of the CDB data, and is therefor signed under
    OSD_SEC_CAPKEY and higher.
    
    TODO: A new osd_finalize_request_ex version should be supplied so
    the @caps received on the network also contains a size parameter
    and can be spilled over into the "cdb continuation segment".
    
    Thanks to John Chandy <john.chandy@uconn.edu> for the original
    code, and investigations. And the implementation of SG support
    in the osd-target.
    Original-coded-by: default avatarJohn Chandy <john.chandy@uconn.edu>
    Signed-off-by: default avatarBoaz Harrosh <bharrosh@panasas.com>
    Signed-off-by: default avatarJames Bottomley <James.Bottomley@suse.de>
    e96e72c4
osd_initiator.c 54 KB