From c1604fa403ec3099cd213e67689c76f456788673 Mon Sep 17 00:00:00 2001 From: "Darrick J. Wong" Date: Thu, 9 Nov 2017 11:35:25 -0600 Subject: [PATCH] xfs_repair: clear DAX flag from non-file inodes The DAX flag should only be set for files and directories. Signed-off-by: Darrick J. Wong Reviewed-by: Eric Sandeen Signed-off-by: Eric Sandeen --- repair/dinode.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/repair/dinode.c b/repair/dinode.c index e7de6d429..e62ec335d 100644 --- a/repair/dinode.c +++ b/repair/dinode.c @@ -2510,6 +2510,18 @@ _("bad (negative) size %" PRId64 " on inode %" PRIu64 "\n"), flags2 &= XFS_DIFLAG2_ANY; } + if (flags2 & XFS_DIFLAG2_DAX) { + /* must be a file or dir */ + if (di_mode && !(S_ISREG(di_mode) || S_ISDIR(di_mode))) { + if (!uncertain) { + do_warn( + _("DAX flag set on special inode %" PRIu64 "\n"), + lino); + } + flags2 &= ~XFS_DIFLAG2_DAX; + } + } + if ((flags2 & XFS_DIFLAG2_REFLINK) && !xfs_sb_version_hasreflink(&mp->m_sb)) { if (!uncertain) { -- 2.47.2