50 lines
1.5 KiB
Diff
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
|
|
|