From: Darrick J. Wong Date: Thu, 9 Nov 2017 17:35:25 +0000 (-0600) Subject: xfs_repair: clear DAX flag from non-file inodes X-Git-Tag: v4.14.0-rc1~11 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c1604fa403ec3099cd213e67689c76f456788673;p=thirdparty%2Fxfsprogs-dev.git 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 --- 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) {