diff options
author | Darrick J. Wong <djwong@kernel.org> | 2021-09-01 11:18:45 -0700 |
---|---|---|
committer | Darrick J. Wong <djwong@kernel.org> | 2021-12-15 17:29:23 -0800 |
commit | 77b713ca8efc3f9cd8bf681f3349ef989f006318 (patch) | |
tree | 44ba5a21c6fab22394b4ad74bac9226de3aeec13 /fs/xfs/scrub | |
parent | d6d7997b7389a852941b14091272f4829c85fcfe (diff) |
xfs: allow inodes to have the realtime and reflink flags
Now that we can share blocks between realtime files, allow this
combination.
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Diffstat (limited to 'fs/xfs/scrub')
-rw-r--r-- | fs/xfs/scrub/inode.c | 5 | ||||
-rw-r--r-- | fs/xfs/scrub/inode_repair.c | 6 |
2 files changed, 3 insertions, 8 deletions
diff --git a/fs/xfs/scrub/inode.c b/fs/xfs/scrub/inode.c index eda59f7ab97f..d0be3cbfb8dd 100644 --- a/fs/xfs/scrub/inode.c +++ b/fs/xfs/scrub/inode.c @@ -191,8 +191,9 @@ xchk_inode_flags2( if ((flags2 & XFS_DIFLAG2_REFLINK) && !S_ISREG(mode)) goto bad; - /* realtime and reflink make no sense, currently */ - if ((flags & XFS_DIFLAG_REALTIME) && (flags2 & XFS_DIFLAG2_REFLINK)) + /* realtime and reflink don't always go together */ + if ((flags & XFS_DIFLAG_REALTIME) && (flags2 & XFS_DIFLAG2_REFLINK) && + !xfs_has_rtreflink(mp)) goto bad; /* no bigtime iflag without the bigtime feature */ diff --git a/fs/xfs/scrub/inode_repair.c b/fs/xfs/scrub/inode_repair.c index 0bfa7e8f6e03..f49a184d82d5 100644 --- a/fs/xfs/scrub/inode_repair.c +++ b/fs/xfs/scrub/inode_repair.c @@ -347,8 +347,6 @@ xrep_dinode_flags( flags2 |= XFS_DIFLAG2_REFLINK; else flags2 &= ~(XFS_DIFLAG2_REFLINK | XFS_DIFLAG2_COWEXTSIZE); - if (flags & XFS_DIFLAG_REALTIME) - flags2 &= ~XFS_DIFLAG2_REFLINK; if (flags2 & XFS_DIFLAG2_REFLINK) flags2 &= ~XFS_DIFLAG2_DAX; if (!xfs_has_bigtime(mp)) @@ -1367,10 +1365,6 @@ xrep_inode_flags( if (!(S_ISREG(mode) || S_ISDIR(mode))) sc->ip->i_diflags2 &= ~XFS_DIFLAG2_DAX; - /* No reflink files on the realtime device. */ - if (sc->ip->i_diflags & XFS_DIFLAG_REALTIME) - sc->ip->i_diflags2 &= ~XFS_DIFLAG2_REFLINK; - /* No mixing reflink and DAX yet. */ if (sc->ip->i_diflags2 & XFS_DIFLAG2_REFLINK) sc->ip->i_diflags2 &= ~XFS_DIFLAG2_DAX; |