xfsprogs/0048-xfs-allow-files-to-require-data-mappings-to-be-align.patch
zhangjian f908c320a1 support atomic write
(cherry picked from commit 40226fa996b6e2d02ded47834cf5289a5f7160e6)
2024-06-19 11:40:47 +08:00

50 lines
1.5 KiB
Diff

From 066996554fe69ee6e8b2acfc59013414adc9669c Mon Sep 17 00:00:00 2001
From: "Darrick J. Wong" <djwong@kernel.org>
Date: Fri, 29 Sep 2023 09:53:37 +0000
Subject: [PATCH 02/11] xfs: allow files to require data mappings to be aligned
to extszhint
Conflict: xfs_bmapi_allocate is refactored in v6.4, so delete some code related
to alignment.
Add a new inode flag to require that all file data extent mappings must
be aligned (both the file offset range and the allocated space itself)
to the extent size hint. Having a separate COW extent size hint is no
longer allowed.
Signed-off-by: "Darrick J. Wong" <djwong@kernel.org>
Co-developed-by: John Garry <john.g.garry@oracle.com>
Signed-off-by: John Garry <john.g.garry@oracle.com>
---
libxfs/xfs_bmap.c | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/libxfs/xfs_bmap.c b/libxfs/xfs_bmap.c
index 16dbe71..303370e 100644
--- a/libxfs/xfs_bmap.c
+++ b/libxfs/xfs_bmap.c
@@ -3428,6 +3428,19 @@ xfs_bmap_compute_alignments(
align = xfs_get_cowextsz_hint(ap->ip);
else if (ap->datatype & XFS_ALLOC_USERDATA)
align = xfs_get_extsz_hint(ap->ip);
+
+ /*
+ * xfs_get_cowextsz_hint() returns extsz_hint for when forcealign is
+ * set as forcealign and cowextsz_hint are mutually exclusive
+ */
+ if (xfs_inode_forcealign(ap->ip) && align) {
+ args->alignment = align;
+ if (stripe_align % align)
+ stripe_align = align;
+ } else {
+ args->alignment = 1;
+ }
+
if (align) {
if (xfs_bmap_extsize_align(mp, &ap->got, &ap->prev, align, 0,
ap->eof, 0, ap->conv, &ap->offset,
--
2.33.0