mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-12-27 08:45:26 -05:00
xfs: validate that zoned RT devices are zone aligned
Garbage collection assumes all zones contain the full amount of blocks.
Mkfs already ensures this happens, but make the kernel check it as well
to avoid getting into trouble due to fuzzers or mkfs bugs.
Fixes: 2167eaabe2 ("xfs: define the zoned on-disk format")
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Cc: stable@vger.kernel.org # v6.15
Signed-off-by: Carlos Maiolino <cem@kernel.org>
This commit is contained in:
committed by
Carlos Maiolino
parent
8dc15b7a6e
commit
982d2616a2
@@ -301,6 +301,21 @@ xfs_validate_rt_geometry(
|
||||
sbp->sb_rbmblocks != xfs_expected_rbmblocks(sbp))
|
||||
return false;
|
||||
|
||||
if (xfs_sb_is_v5(sbp) &&
|
||||
(sbp->sb_features_incompat & XFS_SB_FEAT_INCOMPAT_ZONED)) {
|
||||
uint32_t mod;
|
||||
|
||||
/*
|
||||
* Zoned RT devices must be aligned to the RT group size,
|
||||
* because garbage collection assumes that all zones have the
|
||||
* same size to avoid insane complexity if that weren't the
|
||||
* case.
|
||||
*/
|
||||
div_u64_rem(sbp->sb_rextents, sbp->sb_rgextents, &mod);
|
||||
if (mod)
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user