Function gfs2_block_map had a lot of redundancy between its create and
no_create paths. This patch simplifies the code to eliminate the redundancy.

Signed-off-by: Bob Peterson <rpete...@redhat.com>
---
 fs/gfs2/bmap.c | 14 +++++---------
 1 file changed, 5 insertions(+), 9 deletions(-)

diff --git a/fs/gfs2/bmap.c b/fs/gfs2/bmap.c
index 6d2ea788d0a1..67aff327bf38 100644
--- a/fs/gfs2/bmap.c
+++ b/fs/gfs2/bmap.c
@@ -1291,6 +1291,7 @@ int gfs2_block_map(struct inode *inode, sector_t lblock,
        loff_t length = bh_map->b_size;
        struct metapath mp = { .mp_aheight = 1, };
        struct iomap iomap = { };
+       int flags = create ? IOMAP_WRITE : 0;
        int ret;
 
        clear_buffer_mapped(bh_map);
@@ -1298,15 +1299,10 @@ int gfs2_block_map(struct inode *inode, sector_t lblock,
        clear_buffer_boundary(bh_map);
        trace_gfs2_bmap(ip, bh_map, lblock, create, 1);
 
-       if (create) {
-               ret = gfs2_iomap_get(inode, pos, length, IOMAP_WRITE, &iomap, 
&mp);
-               if (!ret && iomap.type == IOMAP_HOLE)
-                       ret = gfs2_iomap_alloc(inode, &iomap, &mp);
-               release_metapath(&mp);
-       } else {
-               ret = gfs2_iomap_get(inode, pos, length, 0, &iomap, &mp);
-               release_metapath(&mp);
-       }
+       ret = gfs2_iomap_get(inode, pos, length, flags, &iomap, &mp);
+       if (create && !ret && iomap.type == IOMAP_HOLE)
+               ret = gfs2_iomap_alloc(inode, &iomap, &mp);
+       release_metapath(&mp);
        if (ret)
                goto out;
 
-- 
2.26.2

Reply via email to