xfs: unset MS_ACTIVE if mount fails
As part of the inode block map intent log item recovery process, we had to set the IRECOVERY flag to prevent an unlinked inode from being truncated during the first iput call. This required us to set MS_ACTIVE so that iput puts the inode on the lru instead of immediately evicting the inode. Unfortunately, if the mount fails later on, the inodes that have been loaded (root dir and realtime) actually need to be evicted since we're aborting the mount. If we don't clear MS_ACTIVE in the failure step, those inodes are not evicted and therefore leak. The leak was found by running xfs/130 and rmmoding xfs immediately after the test. Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Dave Chinner <david@fromorbit.com>
This commit is contained in:
parent
fe23759eaf
commit
d099245297
|
@ -1009,6 +1009,7 @@ xfs_mountfs(
|
|||
out_quota:
|
||||
xfs_qm_unmount_quotas(mp);
|
||||
out_rtunmount:
|
||||
mp->m_super->s_flags &= ~MS_ACTIVE;
|
||||
xfs_rtunmount_inodes(mp);
|
||||
out_rele_rip:
|
||||
IRELE(rip);
|
||||
|
|
Loading…
Reference in a new issue