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?