mirror of
https://github.com/torvalds/linux.git
synced 2026-05-25 15:41:52 +02:00
xfs: don't increment m_generation for all errors in xfs_growfs_data
xfs_growfs_data needs to increment m_generation as soon as the primary
superblock has been updated. As the update of the secondary superblocks
was part of xfs_growfs_data_private that mean the incremented had to be
done unconditionally once that was called. Later, commit 83a7f86e39
("xfs: separate secondary sb update in growfs") split the secondary
superblock update into a separate helper, so now the increment on error
can be limited to failed calls to xfs_update_secondary_sbs.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Carlos Maiolino <cmaiolino@redhat.com>
Signed-off-by: Carlos Maiolino <cem@kernel.org>
This commit is contained in:
parent
beba948713
commit
9ec3f7977a
|
|
@ -311,20 +311,20 @@ xfs_growfs_data(
|
|||
/* we can't grow the data section when an internal RT section exists */
|
||||
if (in->newblocks != mp->m_sb.sb_dblocks && mp->m_sb.sb_rtstart) {
|
||||
error = -EINVAL;
|
||||
goto out_error;
|
||||
goto out_unlock;
|
||||
}
|
||||
|
||||
/* update imaxpct separately to the physical grow of the filesystem */
|
||||
if (in->imaxpct != mp->m_sb.sb_imax_pct) {
|
||||
error = xfs_growfs_imaxpct(mp, in->imaxpct);
|
||||
if (error)
|
||||
goto out_error;
|
||||
goto out_unlock;
|
||||
}
|
||||
|
||||
if (in->newblocks != mp->m_sb.sb_dblocks) {
|
||||
error = xfs_growfs_data_private(mp, in);
|
||||
if (error)
|
||||
goto out_error;
|
||||
goto out_unlock;
|
||||
}
|
||||
|
||||
/* Post growfs calculations needed to reflect new state in operations */
|
||||
|
|
@ -338,13 +338,12 @@ xfs_growfs_data(
|
|||
/* Update secondary superblocks now the physical grow has completed */
|
||||
error = xfs_update_secondary_sbs(mp);
|
||||
|
||||
out_error:
|
||||
/*
|
||||
* Increment the generation unconditionally, the error could be from
|
||||
* updating the secondary superblocks, in which case the new size
|
||||
* is live already.
|
||||
* Increment the generation unconditionally, after trying to update the
|
||||
* secondary superblocks, as the new size is live already at this point.
|
||||
*/
|
||||
mp->m_generation++;
|
||||
out_unlock:
|
||||
mutex_unlock(&mp->m_growlock);
|
||||
return error;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user