]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
xfs_repair: refactor resetting incore dinode fields to zero
authorDarrick J. Wong <djwong@kernel.org>
Wed, 30 Jun 2021 22:27:00 +0000 (18:27 -0400)
committerEric Sandeen <sandeen@sandeen.net>
Wed, 30 Jun 2021 22:27:00 +0000 (18:27 -0400)
Refactor the repair code that resets inode fields when we want to
recreate the rt bitmap, rt summary, and root directories.  This will
become important as we deconstruct xfs_dinode.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
repair/phase6.c

index 6bddfefa3cb286f0f3ab075cbf0debf30765f075..e8acba343c7b1deef45869ab507b092440a1f821 100644 (file)
@@ -437,6 +437,12 @@ res_failed(
                do_error(_("xfs_trans_reserve returned %d\n"), err);
 }
 
+static inline void
+reset_inode_fields(struct xfs_inode *ip)
+{
+       memset(&ip->i_d, 0, sizeof(ip->i_d));
+}
+
 static void
 mk_rbmino(xfs_mount_t *mp)
 {
@@ -465,7 +471,7 @@ mk_rbmino(xfs_mount_t *mp)
                        error);
        }
 
-       memset(&ip->i_d, 0, sizeof(ip->i_d));
+       reset_inode_fields(ip);
 
        VFS_I(ip)->i_mode = S_IFREG;
        ip->i_df.if_format = XFS_DINODE_FMT_EXTENTS;
@@ -706,7 +712,7 @@ mk_rsumino(xfs_mount_t *mp)
                        error);
        }
 
-       memset(&ip->i_d, 0, sizeof(ip->i_d));
+       reset_inode_fields(ip);
 
        VFS_I(ip)->i_mode = S_IFREG;
        ip->i_df.if_format = XFS_DINODE_FMT_EXTENTS;
@@ -806,7 +812,7 @@ mk_root_dir(xfs_mount_t *mp)
        /*
         * take care of the core -- initialization from xfs_ialloc()
         */
-       memset(&ip->i_d, 0, sizeof(ip->i_d));
+       reset_inode_fields(ip);
 
        VFS_I(ip)->i_mode = mode|S_IFDIR;
        ip->i_df.if_format = XFS_DINODE_FMT_EXTENTS;