]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
ext4: remove unneeded check for error allocating bio_post_read_ctx
authorEric Biggers <ebiggers@google.com>
Tue, 31 Dec 2019 18:12:56 +0000 (12:12 -0600)
committerTheodore Ts'o <tytso@mit.edu>
Fri, 17 Jan 2020 21:24:54 +0000 (16:24 -0500)
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 <ebiggers@google.com>
Link: https://lore.kernel.org/r/20191231181256.47770-1-ebiggers@kernel.org
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
fs/ext4/readpage.c

index 410c904cf59b97b56a51920be76a6516601c257f..c1769afbf799530b8ce61e5815cb22fa51570e5d 100644 (file)
@@ -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);
                }