]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
xfs_repair: clear DAX flag from non-file inodes
authorDarrick J. Wong <darrick.wong@oracle.com>
Thu, 9 Nov 2017 17:35:25 +0000 (11:35 -0600)
committerEric Sandeen <sandeen@redhat.com>
Thu, 9 Nov 2017 17:35:25 +0000 (11:35 -0600)
The DAX flag should only be set for files and directories.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
repair/dinode.c

index e7de6d4292f50490eb4ce76002a3be0ca0f5548d..e62ec335d10ea11e1fea41b9db3115edbc069900 100644 (file)
@@ -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) {