mirror of
https://github.com/torvalds/linux.git
synced 2026-03-08 04:04:43 +01:00
xfs: fix the zoned RT growfs check for zone alignment
The grofs code for zoned RT subvolums already tries to check for zone
alignment, but gets it wrong by using the old instead of the new mount
structure.
Fixes: 01b71e64bb ("xfs: support growfs on zoned file systems")
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:
parent
982d2616a2
commit
dc68c0f601
1 changed files with 8 additions and 6 deletions
|
|
@ -1255,12 +1255,10 @@ xfs_growfs_check_rtgeom(
|
|||
min_logfsbs = min_t(xfs_extlen_t, xfs_log_calc_minimum_size(nmp),
|
||||
nmp->m_rsumblocks * 2);
|
||||
|
||||
kfree(nmp);
|
||||
|
||||
trace_xfs_growfs_check_rtgeom(mp, min_logfsbs);
|
||||
|
||||
if (min_logfsbs > mp->m_sb.sb_logblocks)
|
||||
return -EINVAL;
|
||||
goto out_inval;
|
||||
|
||||
if (xfs_has_zoned(mp)) {
|
||||
uint32_t gblocks = mp->m_groups[XG_TYPE_RTG].blocks;
|
||||
|
|
@ -1268,16 +1266,20 @@ xfs_growfs_check_rtgeom(
|
|||
|
||||
if (rextsize != 1)
|
||||
return -EINVAL;
|
||||
div_u64_rem(mp->m_sb.sb_rblocks, gblocks, &rem);
|
||||
div_u64_rem(nmp->m_sb.sb_rblocks, gblocks, &rem);
|
||||
if (rem) {
|
||||
xfs_warn(mp,
|
||||
"new RT volume size (%lld) not aligned to RT group size (%d)",
|
||||
mp->m_sb.sb_rblocks, gblocks);
|
||||
return -EINVAL;
|
||||
nmp->m_sb.sb_rblocks, gblocks);
|
||||
goto out_inval;
|
||||
}
|
||||
}
|
||||
|
||||
kfree(nmp);
|
||||
return 0;
|
||||
out_inval:
|
||||
kfree(nmp);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue