On Thu, Feb 26, 2026 at 06:49:22AM -0800, Christoph Hellwig wrote: > io_submit_init_bio already has or can easily get at most information > needed to set the crypto context. Open code fscrypt_set_bio_crypt_ctx_bh > based on that. > > Signed-off-by: Christoph Hellwig <[email protected]> > --- > fs/ext4/page-io.c | 8 ++++++-- > 1 file changed, 6 insertions(+), 2 deletions(-) > > diff --git a/fs/ext4/page-io.c b/fs/ext4/page-io.c > index a3644d6cb65f..851d1267054a 100644 > --- a/fs/ext4/page-io.c > +++ b/fs/ext4/page-io.c > @@ -417,6 +417,7 @@ void ext4_io_submit_init(struct ext4_io_submit *io, > > static void io_submit_init_bio(struct ext4_io_submit *io, > struct inode *inode, > + struct folio *io_folio, > struct buffer_head *bh) > { > struct bio *bio; > @@ -426,7 +427,10 @@ static void io_submit_init_bio(struct ext4_io_submit *io, > * __GFP_DIRECT_RECLAIM is set, see comments for bio_alloc_bioset(). > */ > bio = bio_alloc(bh->b_bdev, BIO_MAX_VECS, REQ_OP_WRITE, GFP_NOIO); > - fscrypt_set_bio_crypt_ctx_bh(bio, bh, GFP_NOIO); > + fscrypt_set_bio_crypt_ctx(bio, inode, > + (folio_pos(io_folio) + bh_offset(bh)) >> > + inode->i_blkbits, > + GFP_NOIO); > bio->bi_iter.bi_sector = bh->b_blocknr * (bh->b_size >> 9); > bio->bi_end_io = ext4_end_bio; > bio->bi_private = ext4_get_io_end(io->io_end); > @@ -448,7 +452,7 @@ static void io_submit_add_bh(struct ext4_io_submit *io, > ext4_io_submit(io); > } > if (io->io_bio == NULL) > - io_submit_init_bio(io, inode, bh); > + io_submit_init_bio(io, inode, io_folio, bh); > if (!bio_add_folio(io->io_bio, io_folio, bh->b_size, bh_offset(bh))) > goto submit_and_retry;
This should use 'folio', not 'io_folio'. folio_pos() works only for pagecache folios. - Eric
