Revert "gfs2: Ignore journal log writes for jdata holes"
authorBob Peterson <rpeterso@redhat.com>
Wed, 11 Nov 2020 17:09:55 +0000 (11:09 -0600)
committerAndreas Gruenbacher <agruenba@redhat.com>
Thu, 12 Nov 2020 17:41:57 +0000 (18:41 +0100)
This reverts commit b2a846dbef4ef54ef032f0f5ee188c609a0278a7.

That commit changed the behavior of function gfs2_block_map to return
-ENODATA in cases where a hole (IOMAP_HOLE) is encountered and create is
false.  While that fixed the intended problem for jdata, it also broke
other callers of gfs2_block_map such as some jdata block reads.  Before
the patch, an encountered hole would be skipped and the buffer seen as
unmapped by the caller.  The patch changed the behavior to return
-ENODATA, which is interpreted as an error by the caller.

The -ENODATA return code should be restricted to the specific case where
jdata holes are encountered during ail1 writes.  That will be done in a
later patch.

Signed-off-by: Bob Peterson <rpeterso@redhat.com>
Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
fs/gfs2/bmap.c

index 8dff9cb..62d9081 100644 (file)
@@ -1301,12 +1301,8 @@ int gfs2_block_map(struct inode *inode, sector_t lblock,
        trace_gfs2_bmap(ip, bh_map, lblock, create, 1);
 
        ret = gfs2_iomap_get(inode, pos, length, flags, &iomap, &mp);
-       if (!ret && iomap.type == IOMAP_HOLE) {
-               if (create)
-                       ret = gfs2_iomap_alloc(inode, &iomap, &mp);
-               else
-                       ret = -ENODATA;
-       }
+       if (create && !ret && iomap.type == IOMAP_HOLE)
+               ret = gfs2_iomap_alloc(inode, &iomap, &mp);
        release_metapath(&mp);
        if (ret)
                goto out;