]> www.infradead.org Git - users/hch/xfs.git/commitdiff
xfs: fix xfs_get_extsz_hint behavior with realtime alwayscow files
authorDarrick J. Wong <djwong@kernel.org>
Tue, 15 Oct 2024 19:40:29 +0000 (12:40 -0700)
committerDarrick J. Wong <djwong@kernel.org>
Fri, 1 Nov 2024 20:47:11 +0000 (13:47 -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>
fs/xfs/libxfs/xfs_bmap.c

index 77a80f511a45a56677b0dafe36ada3a2237d9520..400a357ee85e00fbac725b9547ef7ba2c53950d9 100644 (file)
@@ -6504,9 +6504,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) &&
            ip->i_mount->m_sb.sb_rextsize > 1)