mirror of
https://github.com/torvalds/linux.git
synced 2026-05-28 00:53:34 +02:00
iomap: support ioends for direct reads
Support using the ioend structure to defer I/O completion for direct reads in addition to writes. This requires a check for the operation to not merge reads and writes in iomap_ioend_can_merge. This support will be used for bounce buffered direct I/O reads that need to copy data back to the user address space on read completion. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Damien Le Moal <dlemoal@kernel.org> Reviewed-by: Darrick J. Wong <djwong@kernel.org> Tested-by: Anuj Gupta <anuj20.g@samsung.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
c96b8b2202
commit
d969bd72cf
|
|
@ -299,6 +299,14 @@ EXPORT_SYMBOL_GPL(iomap_finish_ioends);
|
|||
static bool iomap_ioend_can_merge(struct iomap_ioend *ioend,
|
||||
struct iomap_ioend *next)
|
||||
{
|
||||
/*
|
||||
* There is no point in merging reads as there is no completion
|
||||
* processing that can be easily batched up for them.
|
||||
*/
|
||||
if (bio_op(&ioend->io_bio) == REQ_OP_READ ||
|
||||
bio_op(&next->io_bio) == REQ_OP_READ)
|
||||
return false;
|
||||
|
||||
if (ioend->io_bio.bi_status != next->io_bio.bi_status)
|
||||
return false;
|
||||
if (next->io_flags & IOMAP_IOEND_BOUNDARY)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user