[XFS] Prevent the incore superblock sb_fdblocks count from leaking when we
are getting ENOSPC errors on writes. When we fail to allocate space for indirect blocks in xfs_bmapi() make sure we release the direct block allocation before returning. SGI-PV: 938502 SGI-Modid: xfs-linux:xfs-kern:22986a Signed-off-by: David Chinner <dgc@sgi.com> Signed-off-by: Nathan Scott <nathans@sgi.com>
This commit is contained in:
committed by
Nathan Scott
parent
bcec2b7f2b
commit
3bdbfb104e
@@ -4754,10 +4754,20 @@ xfs_bmapi(
|
|||||||
error = xfs_mod_incore_sb(mp,
|
error = xfs_mod_incore_sb(mp,
|
||||||
XFS_SBS_FDBLOCKS,
|
XFS_SBS_FDBLOCKS,
|
||||||
-(alen), rsvd);
|
-(alen), rsvd);
|
||||||
if (!error)
|
if (!error) {
|
||||||
error = xfs_mod_incore_sb(mp,
|
error = xfs_mod_incore_sb(mp,
|
||||||
XFS_SBS_FDBLOCKS,
|
XFS_SBS_FDBLOCKS,
|
||||||
-(indlen), rsvd);
|
-(indlen), rsvd);
|
||||||
|
if (error && rt) {
|
||||||
|
xfs_mod_incore_sb(ip->i_mount,
|
||||||
|
XFS_SBS_FREXTENTS,
|
||||||
|
extsz, rsvd);
|
||||||
|
} else if (error) {
|
||||||
|
xfs_mod_incore_sb(ip->i_mount,
|
||||||
|
XFS_SBS_FDBLOCKS,
|
||||||
|
alen, rsvd);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (error) {
|
if (error) {
|
||||||
if (XFS_IS_QUOTA_ON(ip->i_mount))
|
if (XFS_IS_QUOTA_ON(ip->i_mount))
|
||||||
|
Reference in New Issue
Block a user