• James Bottomley's avatar
    block: implement drain buffers · fa0ccd83
    James Bottomley authored
    These DMA drain buffer implementations in drivers are pretty horrible
    to do in terms of manipulating the scatterlist.  Plus they're being
    done at least in drivers/ide and drivers/ata, so we now have code
    duplication.
    
    The one use case for this, as I understand it is AHCI controllers doing
    PIO mode to mmc devices but translating this to DMA at the controller
    level.
    
    So, what about adding a callback to the block layer that permits the
    adding of the drain buffer for the problem devices.  The idea is that
    you'd do this in slave_configure after you find one of these devices.
    
    The beauty of doing it in the block layer is that it quietly adds the
    drain buffer to the end of the sg list, so it automatically gets mapped
    (and unmapped) without anything unusual having to be done to the
    scatterlist in driver/scsi or drivers/ata and without any alteration to
    the transfer length.
    Signed-off-by: default avatarJames Bottomley <James.Bottomley@HansenPartnership.com>
    Signed-off-by: default avatarJens Axboe <jens.axboe@oracle.com>
    fa0ccd83
ll_rw_blk.c 110 KB