diff options
author | Darrick J. Wong <darrick.wong@oracle.com> | 2019-08-30 15:45:12 -0700 |
---|---|---|
committer | Darrick J. Wong <darrick.wong@oracle.com> | 2019-10-09 09:39:24 -0700 |
commit | fbf95404d148decb0b431a730f80f34a4a043088 (patch) | |
tree | 180e256185f1d0e46473370866a8f57663cf8c91 /fs/xfs/xfs_super.c | |
parent | 6065474081094c19b7d524f49d2d1948f5a28e02 (diff) |
xfs: create a polled function to force inode inactivationdeferred-inactivation_2019-10-09
Create a polled version of xfs_inactive_force so that we can force
inactivation while holding a lock (usually the umount lock) without
tripping over the softlockup timer. This is for callers that hold vfs
locks while calling inactivation, which is currently unmount, iunlink
processing during mount, and rw->ro remount.
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Diffstat (limited to 'fs/xfs/xfs_super.c')
-rw-r--r-- | fs/xfs/xfs_super.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c index 90de69cfc00d..bba942a91f6c 100644 --- a/fs/xfs/xfs_super.c +++ b/fs/xfs/xfs_super.c @@ -1402,7 +1402,7 @@ xfs_fs_remount( * inodes. Since this can involve finobt updates, do it now * before we lose the per-AG space reservations. */ - xfs_inactive_force(mp); + xfs_inactive_force_poll(mp); /* Free the per-AG metadata reservation pool. */ error = xfs_fs_unreserve_ag_blocks(mp); @@ -1643,6 +1643,7 @@ xfs_mount_alloc( INIT_DELAYED_WORK(&mp->m_eofblocks_work, xfs_eofblocks_worker); INIT_DELAYED_WORK(&mp->m_cowblocks_work, xfs_cowblocks_worker); mp->m_kobj.kobject.kset = xfs_kset; + init_waitqueue_head(&mp->m_inactive_wait); /* * We don't create the finobt per-ag space reservation until after log * recovery, so we must set this to true so that an ifree transaction |