Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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>

authored by

Christoph Hellwig and committed by
Jens Axboe
d969bd72 c96b8b22

+8
+8
fs/iomap/ioend.c
··· 299 299 static bool iomap_ioend_can_merge(struct iomap_ioend *ioend, 300 300 struct iomap_ioend *next) 301 301 { 302 + /* 303 + * There is no point in merging reads as there is no completion 304 + * processing that can be easily batched up for them. 305 + */ 306 + if (bio_op(&ioend->io_bio) == REQ_OP_READ || 307 + bio_op(&next->io_bio) == REQ_OP_READ) 308 + return false; 309 + 302 310 if (ioend->io_bio.bi_status != next->io_bio.bi_status) 303 311 return false; 304 312 if (next->io_flags & IOMAP_IOEND_BOUNDARY)