xfs: convert inode shrinker to per-filesystem contexts

Now the shrinker passes us a context, wire up a shrinker context per
filesystem. This allows us to remove the global mount list and the
locking problems that introduced. It also means that a shrinker call
does not need to traverse clean filesystems before finding a
filesystem with reclaimable inodes.  This significantly reduces
scanning overhead when lots of filesystems are present.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
This commit is contained in:
Dave Chinner
2010-07-20 08:07:02 +10:00
committed by Dave Chinner
parent 7f8275d0d6
commit 70e60ce715
4 changed files with 15 additions and 53 deletions

View File

@@ -259,7 +259,7 @@ typedef struct xfs_mount {
wait_queue_head_t m_wait_single_sync_task;
__int64_t m_update_flags; /* sb flags we need to update
on the next remount,rw */
struct list_head m_mplist; /* inode shrinker mount list */
struct shrinker m_inode_shrink; /* inode reclaim shrinker */
} xfs_mount_t;
/*