Re: [PATCH 12/22] iomap: better read bounce buffering support

Christoph Hellwig <[email protected]> Tue, 28 Jul 2026 06:59:44 +0200
Newsgroups org.kernel.vger.linux-xfs,org.kernel.vger.linux-block,org.kernel.vger.linux-fsdevel
Message-ID <[email protected]>
On Mon, Jul 27, 2026 at 07:47:27PM +0530, Anuj Gupta/Anuj Gupta wrote:
> On 7/23/2026 8:19 PM, Christoph Hellwig wrote:
> > +void iomap_bounce_read(struct iomap_ioend *orig_ioend, unsigned int minsize,
> > +		void (*submit_ioend)(struct iomap_ioend *ioend))
> > +{
> > +	struct inode *inode = orig_ioend->io_inode;
> > +	struct bio *orig_bio = &orig_ioend->io_bio;
> > +	loff_t file_offset = orig_ioend->io_offset;
> > +	sector_t sector = orig_ioend->io_sector;
> > +	size_t total_len = round_up(orig_ioend->io_size, minsize);
> > +
> > +	WARN_ON_ONCE(!(orig_ioend->io_flags & IOMAP_IOEND_DIRECT));
> > +
> > +	do {
> > +		struct iomap_ioend *ioend;
> > +		struct bio *bio;
> > +		int error;
> > +
> > +		bio = bio_alloc_bioset(orig_bio->bi_bdev,
> > +				min(total_len / minsize, BIO_MAX_VECS),
> > +				orig_bio->bi_opf, GFP_KERNEL,
> > +				&iomap_ioend_split_bioset);
> 
> thw new bio inherits REQ_POLLED via orig_bio->bi_opf but iocb->private 
> still points to the never submitted orig_bio; hanging polled reads.
> Maybe mask REQ_POLLED from the bounce bio?

Yes.  And I need to come up with a good way to provide test coverage
for polled I/O interactions like this.