diff options
| author | David Chinner <david@fromorbit.com> | 2008-10-30 02:06:28 -0400 |
|---|---|---|
| committer | Lachlan McIlroy <lachlan@sgi.com> | 2008-10-30 02:06:28 -0400 |
| commit | 75c68f411b1242c8fdaf731078fdd4e77b14981d (patch) | |
| tree | 776eab26d76e14dc0478015d1f352c5d2bea9daa /fs/xfs/xfs_inode.c | |
| parent | a167b17e899a930758506bbc18748078d6fd8c89 (diff) | |
[XFS] Remove xfs_iflush_all and clean up xfs_finish_reclaim_all()
xfs_iflush_all() walks the m_inodes list to find inodes that need
reclaiming. We already have such a list - the m_del_inodes list. Replace
xfs_iflush_all() with a call to xfs_finish_reclaim_all() and clean up
xfs_finish_reclaim_all() to handle the different flush modes now needed.
Originally based on a patch from Christoph Hellwig.
Version 3 o rediff against new linux-2.6/xfs_sync.c code
Version 2 o revert xfs_syncsub() inode reclaim behaviour back to original
code o xfs_quiesce_fs() should use XFS_IFLUSH_DELWRI_ELSE_ASYNC, not
XFS_IFLUSH_ASYNC, to prevent change of behaviour.
SGI-PV: 988139
SGI-Modid: xfs-linux-melb:xfs-kern:32284a
Signed-off-by: David Chinner <david@fromorbit.com>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
Signed-off-by: Christoph Hellwig <hch@infradead.org>
Diffstat (limited to 'fs/xfs/xfs_inode.c')
| -rw-r--r-- | fs/xfs/xfs_inode.c | 35 |
1 files changed, 0 insertions, 35 deletions
diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c index 2b1294b8ad79..0c65ba2faa43 100644 --- a/fs/xfs/xfs_inode.c +++ b/fs/xfs/xfs_inode.c | |||
| @@ -3499,41 +3499,6 @@ corrupt_out: | |||
| 3499 | } | 3499 | } |
| 3500 | 3500 | ||
| 3501 | 3501 | ||
| 3502 | /* | ||
| 3503 | * Flush all inactive inodes in mp. | ||
| 3504 | */ | ||
| 3505 | void | ||
| 3506 | xfs_iflush_all( | ||
| 3507 | xfs_mount_t *mp) | ||
| 3508 | { | ||
| 3509 | xfs_inode_t *ip; | ||
| 3510 | |||
| 3511 | again: | ||
| 3512 | XFS_MOUNT_ILOCK(mp); | ||
| 3513 | ip = mp->m_inodes; | ||
| 3514 | if (ip == NULL) | ||
| 3515 | goto out; | ||
| 3516 | |||
| 3517 | do { | ||
| 3518 | /* Make sure we skip markers inserted by sync */ | ||
| 3519 | if (ip->i_mount == NULL) { | ||
| 3520 | ip = ip->i_mnext; | ||
| 3521 | continue; | ||
| 3522 | } | ||
| 3523 | |||
| 3524 | if (!VFS_I(ip)) { | ||
| 3525 | XFS_MOUNT_IUNLOCK(mp); | ||
| 3526 | xfs_finish_reclaim(ip, 0, XFS_IFLUSH_ASYNC); | ||
| 3527 | goto again; | ||
| 3528 | } | ||
| 3529 | |||
| 3530 | ASSERT(vn_count(VFS_I(ip)) == 0); | ||
| 3531 | |||
| 3532 | ip = ip->i_mnext; | ||
| 3533 | } while (ip != mp->m_inodes); | ||
| 3534 | out: | ||
| 3535 | XFS_MOUNT_IUNLOCK(mp); | ||
| 3536 | } | ||
| 3537 | 3502 | ||
| 3538 | #ifdef XFS_ILOCK_TRACE | 3503 | #ifdef XFS_ILOCK_TRACE |
| 3539 | ktrace_t *xfs_ilock_trace_buf; | 3504 | ktrace_t *xfs_ilock_trace_buf; |
