[PATCH 18/22] xfs_repair: allow realtime files to have the reflink flag set

Darrick J. Wong
2025-02-06T23:01:28Z

Now that we allow reflink on the realtime volume, allow that combination
of inode flags if the feature's enabled. Note that we now allow inodes
to have rtinherit even if there's no realtime volume, since the kernel
has never restricted that.

Signed-off-by: "Darrick J. Wong" <djwong@kernel.org>
---
repair/dinode.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/repair/dinode.c b/repair/dinode.c
index f49c735d34356b..5a1c8e8cb3ec11 100644
--- a/repair/dinode.c
+++ b/repair/dinode.c
@@ -3356,7 +3356,8 @@ _("bad (negative) size %" PRId64 " on inode %" PRIu64 "\n"),
}

if ((flags2 & XFS_DIFLAG2_REFLINK) &&
- (flags & (XFS_DIFLAG_REALTIME | XFS_DIFLAG_RTINHERIT))) {
+ !xfs_has_rtreflink(mp) &&
+ (flags & XFS_DIFLAG_REALTIME)) {
if (!uncertain) {
do_warn(
_("Cannot have a reflinked realtime inode %" PRIu64 "\n"),
@@ -3388,7 +3389,8 @@ _("bad (negative) size %" PRId64 " on inode %" PRIu64 "\n"),
}

if ((flags2 & XFS_DIFLAG2_COWEXTSIZE) &&
- (flags & (XFS_DIFLAG_REALTIME | XFS_DIFLAG_RTINHERIT))) {
+ !xfs_has_rtreflink(mp) &&
+ (flags & XFS_DIFLAG_REALTIME)) {
if (!uncertain) {
do_warn(
_("Cannot have CoW extent size hint on a realtime inode %" PRIu64 "\n"),