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

Anuj Gupta/Anuj Gupta <[email protected]> Mon, 27 Jul 2026 19:47:27 +0530
Newsgroups org.kernel.vger.linux-xfs,org.kernel.vger.linux-block,org.kernel.vger.linux-fsdevel
Message-ID <[email protected]>
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?