From 066996554fe69ee6e8b2acfc59013414adc9669c Mon Sep 17 00:00:00 2001 From: "Darrick J. Wong" 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" Co-developed-by: John Garry Signed-off-by: John Garry --- 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