diff options
author | Dave Chinner <dchinner@redhat.com> | 2010-04-29 09:55:50 +1000 |
---|---|---|
committer | Alex Elder <aelder@sgi.com> | 2010-04-29 16:22:13 -0500 |
commit | 9bf729c0af67897ea8498ce17c29b0683f7f2028 (patch) | |
tree | 9e6350fd9da5aef0b53ddeddd82f618ae16bf931 /fs/xfs/linux-2.6/xfs_sync.h | |
parent | 79dba2eaa771c3173957eccfd288e0e0d12e4d3f (diff) | |
download | blackbird-op-linux-9bf729c0af67897ea8498ce17c29b0683f7f2028.tar.gz blackbird-op-linux-9bf729c0af67897ea8498ce17c29b0683f7f2028.zip |
xfs: add a shrinker to background inode reclaim
On low memory boxes or those with highmem, kernel can OOM before the
background reclaims inodes via xfssyncd. Add a shrinker to run inode
reclaim so that it inode reclaim is expedited when memory is low.
This is more complex than it needs to be because the VM folk don't
want a context added to the shrinker infrastructure. Hence we need
to add a global list of XFS mount structures so the shrinker can
traverse them.
Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Diffstat (limited to 'fs/xfs/linux-2.6/xfs_sync.h')
-rw-r--r-- | fs/xfs/linux-2.6/xfs_sync.h | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/fs/xfs/linux-2.6/xfs_sync.h b/fs/xfs/linux-2.6/xfs_sync.h index d480c346cabb..cdcbaaca9880 100644 --- a/fs/xfs/linux-2.6/xfs_sync.h +++ b/fs/xfs/linux-2.6/xfs_sync.h @@ -53,6 +53,11 @@ void __xfs_inode_clear_reclaim_tag(struct xfs_mount *mp, struct xfs_perag *pag, int xfs_sync_inode_valid(struct xfs_inode *ip, struct xfs_perag *pag); int xfs_inode_ag_iterator(struct xfs_mount *mp, int (*execute)(struct xfs_inode *ip, struct xfs_perag *pag, int flags), - int flags, int tag, int write_lock); + int flags, int tag, int write_lock, int *nr_to_scan); + +void xfs_inode_shrinker_init(void); +void xfs_inode_shrinker_destroy(void); +void xfs_inode_shrinker_register(struct xfs_mount *mp); +void xfs_inode_shrinker_unregister(struct xfs_mount *mp); #endif |