+179
−0
+26
−0
Loading
Add helpers to implement bounce buffering of data into a bio to implement direct I/O for cases where direct user access is not possible because stable in-flight data is required. These are intended to be used as easily as bio_iov_iter_get_pages for the zero-copy path. The write side is trivial and just copies data into the bounce buffer. The read side is a lot more complex because it needs to perform the copy from the completion context, and without preserving the iov_iter through the call chain. It steals a trick from the integrity data user interface and uses the first vector in the bio for the bounce buffer data that is fed to the block I/O stack, and uses the others to record the user buffer fragments. Signed-off-by:Christoph Hellwig <hch@lst.de> Reviewed-by:
Anuj Gupta <anuj20.g@samsung.com> Reviewed-by:
Damien Le Moal <dlemoal@kernel.org> Reviewed-by:
Johannes Thumshirn <johannes.thumshirn@wdc.com> Tested-by:
Anuj Gupta <anuj20.g@samsung.com> Reviewed-by:
Martin K. Petersen <martin.petersen@oracle.com> Reviewed-by:
Darrick J. Wong <djwong@kernel.org> Signed-off-by:
Jens Axboe <axboe@kernel.dk>