xfs: scrub: Remove incorrect check executed on block format directories
authorChandan Babu R <chandanrlinux@gmail.com>
Fri, 26 Mar 2021 17:52:56 +0000 (10:52 -0700)
committerDarrick J. Wong <djwong@kernel.org>
Wed, 7 Apr 2021 21:36:34 +0000 (14:36 -0700)
A directory with one directory block which in turns consists of two or more fs
blocks is incorrectly flagged as corrupt by scrub since it assumes that
"Block" format directories have a data fork single extent spanning the file
offset range of [0, Dir block size - 1].

This commit fixes the bug by removing the incorrect check.

Signed-off-by: Chandan Babu R <chandanrlinux@gmail.com>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
fs/xfs/scrub/dir.c

index 178b3455a17098c86710148fa365f960708b9552..3ec6290c78bb3d79affd783c9d75d202cffcf088 100644 (file)
@@ -694,15 +694,6 @@ xchk_directory_blocks(
        /* Iterate all the data extents in the directory... */
        found = xfs_iext_lookup_extent(sc->ip, ifp, lblk, &icur, &got);
        while (found && !(sc->sm->sm_flags & XFS_SCRUB_OFLAG_CORRUPT)) {
-               /* Block directories only have a single block at offset 0. */
-               if (is_block &&
-                   (got.br_startoff > 0 ||
-                    got.br_blockcount != args.geo->fsbcount)) {
-                       xchk_fblock_set_corrupt(sc, XFS_DATA_FORK,
-                                       got.br_startoff);
-                       break;
-               }
-
                /* No more data blocks... */
                if (got.br_startoff >= leaf_lblk)
                        break;