xchk_inode_flags[2]() currently treats any di_flags[2] values that the running kernel doesn't recognize as corruption, and calls xchk_ino_set_corrupt() if they are set. However, it's entirely possible that these flags were set in some newer kernel and are quite valid, but ignored in this kernel. (Validators don't care one bit about unknown di_flags[2].) Call xchk_ino_set_warning instead, because this may or may not actually indicate a problem. Signed-off-by: Eric Sandeen <sandeen@xxxxxxxxxx> --- diff --git a/fs/xfs/scrub/inode.c b/fs/xfs/scrub/inode.c index 5b3b177..e53ed83 100644 --- a/fs/xfs/scrub/inode.c +++ b/fs/xfs/scrub/inode.c @@ -126,8 +126,9 @@ { struct xfs_mount *mp = sc->mp; + /* Unknown di_flags could simply be from newer kernel */ if (flags & ~XFS_DIFLAG_ANY) - goto bad; + xchk_ino_set_warning(sc, ino); /* rt flags require rt device */ if ((flags & (XFS_DIFLAG_REALTIME | XFS_DIFLAG_RTINHERIT)) && @@ -172,8 +173,9 @@ { struct xfs_mount *mp = sc->mp; + /* Unknown di_flags2 could simply be from newer kernel */ if (flags2 & ~XFS_DIFLAG2_ANY) - goto bad; + xchk_ino_set_warning(sc, ino); /* reflink flag requires reflink feature */ if ((flags2 & XFS_DIFLAG2_REFLINK) &&