]> www.infradead.org Git - users/hch/xfsprogs.git/commitdiff
xfs: fix xfs_get_extsz_hint behavior with realtime alwayscow files
authorDarrick J. Wong <djwong@kernel.org>
Tue, 9 Jan 2024 17:40:28 +0000 (09:40 -0800)
committerDarrick J. Wong <djwong@kernel.org>
Wed, 10 Apr 2024 00:21:47 +0000 (17:21 -0700)
Currently, we (ab)use xfs_get_extsz_hint so that it always returns a
nonzero value for realtime files.  This apparently was done to disable
delayed allocation for realtime files.

However, once we enable realtime reflink, we can also turn on the
alwayscow flag to force CoW writes to realtime files.  In this case, the
logic will incorrectly send the write through the delalloc write path.

Fix this by adjusting the logic slightly.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
libxfs/xfs_bmap.c

index 0f2ec7ac1c8f728f0b15111e86ad45a750bda1bc..d4aadb9a39f3372201d1ce970ccb4708e3988a4b 100644 (file)
@@ -6401,9 +6401,8 @@ xfs_get_extsz_hint(
         * No point in aligning allocations if we need to COW to actually
         * write to them.
         */
-       if (xfs_is_always_cow_inode(ip))
-               return 0;
-       if ((ip->i_diflags & XFS_DIFLAG_EXTSIZE) && ip->i_extsize)
+       if (!xfs_is_always_cow_inode(ip) &&
+           (ip->i_diflags & XFS_DIFLAG_EXTSIZE) && ip->i_extsize)
                return ip->i_extsize;
        if (XFS_IS_REALTIME_INODE(ip))
                return ip->i_mount->m_sb.sb_rextsize;