ext4: remove unneeded check for error allocating bio_post_read_ctx
Eric Biggers
maintainerPATCH 1/1 ext4: remove unneeded check for error allocating bio_post_read_ctx
From: Eric Biggers <[email protected]>
Since allocating an object from a mempool never fails when __GFP_DIRECT_RECLAIM (which is included in GFP_NOFS) is set, the check for failure to allocate a bio_post_read_ctx is unnecessary. Remove it.
Also remove the redundant assignment to ->bi_private.
Signed-off-by Eric Biggers <[email protected]>
--- fs/ext4/readpage.c | 25 ++++++++----------------- 1 file changed, 8 insertions(+), 17 deletions(-)
fs/ext4/readpage.c +8 -17
@@ -189,12 +189,11 @@ static inline bool ext4_need_verity(const struct inode *inode, pgoff_t idx) idx <DIV_ROUND_UP (inode->i_size,PAGE_SIZE ); } -static struct bio_post_read_ctx *get_bio_post_read_ctx (struct inode *inode, -struct bio *bio, -pgoff_t first_idx) +static void ext4_set_bio_post_read_ctx (struct bio *bio, +const struct inode *inode, +pgoff_t first_idx) {unsigned int post_read_steps =0 ; -struct bio_post_read_ctx *ctx =NULL ;if (IS_ENCRYPTED (inode) &&S_ISREG (inode->i_mode)) post_read_steps |=1 <<STEP_DECRYPT ;
@@ -203,14 +202,14 @@ static struct bio_post_read_ctx *get_bio_post_read_ctx(struct inode *inode, post_read_steps |=1 <<STEP_VERITY ;if (post_read_steps) { - ctx =mempool_alloc (bio_post_read_ctx_pool,GFP_NOFS ); -if (!ctx) -return ERR_PTR (-ENOMEM ); +/* Due to the mempool, this never fails. */ +struct bio_post_read_ctx *ctx = +mempool_alloc (bio_post_read_ctx_pool,GFP_NOFS ); + ctx->bio = bio; ctx->enabled_steps = post_read_steps; bio->bi_private = ctx; } -return ctx; }static inline loff_t ext4_readpage_limit (struct inode *inode)
@@ -371,24 +370,16 @@ int ext4_mpage_readpages(struct address_space *mapping, bio =NULL ; }if (bio ==NULL ) { -struct bio_post_read_ctx *ctx; -/* * bio_alloc will _always_ be able to allocate a bio if * __GFP_DIRECT_RECLAIM is set, see bio_alloc_bioset(). */ bio =bio_alloc (GFP_KERNEL ,min_t (int, nr_pages,BIO_MAX_PAGES )); - ctx =get_bio_post_read_ctx (inode, bio, page->index); -if (IS_ERR (ctx)) { -bio_put (bio); - bio =NULL ; - goto set_error_page; - } +ext4_set_bio_post_read_ctx (bio, inode, page->index);bio_set_dev (bio, bdev); bio->bi_iter.bi_sector = blocks[0 ] << (blkbits -9 ); bio->bi_end_io = mpage_end_io; - bio->bi_private = ctx;bio_set_op_attrs (bio,REQ_OP_READ , is_readahead ?REQ_RAHEAD :0 ); }
Signature · 1 line
2.24.1
Quoted 9 lines · Eric Biggers
From: Eric Biggers <[email protected]>
Since allocating an object from a mempool never fails when
__GFP_DIRECT_RECLAIM(which is included inGFP_NOFS) is set, the check for failure to allocate abio_post_read_ctxis unnecessary. Remove it.Also remove the redundant assignment to ->bi_private.
Signed-off-by Eric Biggers <[email protected]>
Thanks, applied.
- Ted