From: Eric Sandeen Date: Tue, 21 Jun 2016 02:55:15 +0000 (+1000) Subject: xfs_repair: set rsumino version to 2 X-Git-Tag: v4.7.0-rc1~17 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=643f6acc4bb2d799bebd54c973949c1a90eb26a3;p=thirdparty%2Fxfsprogs-dev.git xfs_repair: set rsumino version to 2 If we run xfs/033 with "-m crc=0", the test fails with a repair output difference: Phase 7 - verify and correct link counts... +resetting inode INO nlinks from 0 to 1 done This is because when we zero out the realtime summary inode and rebuild it, we set its version to 1, then set its ip->i_d.di_nlink to 1. This is a little odd, because v1 inodes store their link count in di_onlink... Then, later in repair we call xfs_inode_from_disk(), which sees the version one inode, and converts it to version 2 in part by copying di_onlink to di_nlink. But we never *set* di_onlink, so di_nlink gets reset to zero, and this error is discovered later in repair. Interestingly, mk_rbmino() was changed in 138659f1 to set version 2; it looks like mk_rsumino was just missed. Signed-off-by: Eric Sandeen Reviewed-by: Dave Chinner Signed-off-by: Dave Chinner --- diff --git a/repair/phase6.c b/repair/phase6.c index 0a711640c..774e2cd76 100644 --- a/repair/phase6.c +++ b/repair/phase6.c @@ -760,7 +760,7 @@ mk_rsumino(xfs_mount_t *mp) error); } - vers = xfs_sb_version_hascrc(&mp->m_sb) ? 3 : 1; + vers = xfs_sb_version_hascrc(&mp->m_sb) ? 3 : 2; memset(&ip->i_d, 0, sizeof(ip->i_d)); VFS_I(ip)->i_mode = S_IFREG;