File xfsprogs-xfs_repair-set-rsumino-version-to-2.patch of Package xfsprogs.21270
From 643f6acc4bb2d799bebd54c973949c1a90eb26a3 Mon Sep 17 00:00:00 2001
From: Eric Sandeen <sandeen@redhat.com>
Date: Tue, 21 Jun 2016 12:55:15 +1000
Subject: [PATCH] xfs_repair: set rsumino version to 2
Git-commit: 643f6acc4bb2d799bebd54c973949c1a90eb26a3
Patch-mainline: v4.7.0-rc1
References: bsc#1171812
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 <sandeen@redhat.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
Acked-by: Anthony Iliopoulos <ailiop@suse.com>
---
repair/phase6.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/repair/phase6.c b/repair/phase6.c
index 0a711640cf08d9..774e2cd7670c24 100644
--- a/repair/phase6.c
+++ b/repair/phase6.c
@@ -768,7 +768,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));
ip->i_d.di_magic = XFS_DINODE_MAGIC;
--
2.26.2