From: Darrick J. Wong Date: Wed, 30 Jun 2021 22:27:00 +0000 (-0400) Subject: xfs_repair: refactor resetting incore dinode fields to zero X-Git-Tag: v5.13.0-rc0~49 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b81d043c4cf7deec95251857675c881f2905b15e;p=thirdparty%2Fxfsprogs-dev.git xfs_repair: refactor resetting incore dinode fields to zero 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 Reviewed-by: Eric Sandeen Signed-off-by: Eric Sandeen --- diff --git a/repair/phase6.c b/repair/phase6.c index 6bddfefa3..e8acba343 100644 --- a/repair/phase6.c +++ b/repair/phase6.c @@ -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;