mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-07-23 07:27:30 -04:00
xfs: only log freed extents for the current RTG in zoned growfs
Otherwise a power fail or crash during growfs could lead to an
elevated sb_rblocks counter.
Note that the step function is much simpler compared to the classic RT
allocator as zoned RT sections must be aligned to real time group
boundaries.
Fixes: 01b71e64bb ("xfs: support growfs on zoned file systems")
Cc: <stable@vger.kernel.org> # v6.15
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: "Darrick J. Wong" <djwong@kernel.org>
Reviewed-by: Damien Le Moal <dlemoal@kernel.org>
Signed-off-by: Carlos Maiolino <cem@kernel.org>
This commit is contained in:
committed by
Carlos Maiolino
parent
ae3692c7f4
commit
44cccefe65
@@ -890,8 +890,7 @@ xfs_growfs_rt_sb_fields(
|
||||
|
||||
static int
|
||||
xfs_growfs_rt_zoned(
|
||||
struct xfs_rtgroup *rtg,
|
||||
xfs_rfsblock_t nrblocks)
|
||||
struct xfs_rtgroup *rtg)
|
||||
{
|
||||
struct xfs_mount *mp = rtg_mount(rtg);
|
||||
struct xfs_mount *nmp;
|
||||
@@ -903,7 +902,8 @@ xfs_growfs_rt_zoned(
|
||||
* Calculate new sb and mount fields for this round. Also ensure the
|
||||
* rtg_extents value is uptodate as the rtbitmap code relies on it.
|
||||
*/
|
||||
nmp = xfs_growfs_rt_alloc_fake_mount(mp, nrblocks,
|
||||
nmp = xfs_growfs_rt_alloc_fake_mount(mp,
|
||||
xfs_rtgs_to_rfsbs(mp, rtg_rgno(rtg) + 1),
|
||||
mp->m_sb.sb_rextsize);
|
||||
if (!nmp)
|
||||
return -ENOMEM;
|
||||
@@ -1226,7 +1226,7 @@ xfs_growfs_rtg(
|
||||
}
|
||||
|
||||
if (xfs_has_zoned(mp)) {
|
||||
error = xfs_growfs_rt_zoned(rtg, nrblocks);
|
||||
error = xfs_growfs_rt_zoned(rtg);
|
||||
goto out_rele;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user