Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6
[linux-2.6.git] / fs / xfs / linux-2.6 / xfs_super.c
index 25fd2cd..9a72dda 100644 (file)
@@ -1024,11 +1024,6 @@ xfs_fs_put_super(
 {
        struct xfs_mount        *mp = XFS_M(sb);
 
-       /*
-        * Unregister the memory shrinker before we tear down the mount
-        * structure so we don't have memory reclaim racing with us here.
-        */
-       xfs_inode_shrinker_unregister(mp);
        xfs_syncd_stop(mp);
 
        /*
@@ -1411,8 +1406,6 @@ xfs_fs_fill_super(
        sb->s_time_gran = 1;
        set_posix_acl_flag(sb);
 
-       xfs_inode_shrinker_register(mp);
-
        error = xfs_mountfs(mp);
        if (error)
                goto out_filestream_unmount;
@@ -1439,7 +1432,6 @@ xfs_fs_fill_super(
        return 0;
 
  out_filestream_unmount:
-       xfs_inode_shrinker_unregister(mp);
        xfs_filestream_unmount(mp);
  out_free_sb:
        xfs_freesb(mp);
@@ -1458,8 +1450,6 @@ xfs_fs_fill_super(
  out_syncd_stop:
        xfs_syncd_stop(mp);
  out_unmount:
-       xfs_inode_shrinker_unregister(mp);
-
        /*
         * Blow away any referenced inode in the filestreams cache.
         * This can and will cause log traffic as inodes go inactive
@@ -1483,6 +1473,21 @@ xfs_fs_mount(
        return mount_bdev(fs_type, flags, dev_name, data, xfs_fs_fill_super);
 }
 
+static int
+xfs_fs_nr_cached_objects(
+       struct super_block      *sb)
+{
+       return xfs_reclaim_inodes_count(XFS_M(sb));
+}
+
+static void
+xfs_fs_free_cached_objects(
+       struct super_block      *sb,
+       int                     nr_to_scan)
+{
+       xfs_reclaim_inodes_nr(XFS_M(sb), nr_to_scan);
+}
+
 static const struct super_operations xfs_super_operations = {
        .alloc_inode            = xfs_fs_alloc_inode,
        .destroy_inode          = xfs_fs_destroy_inode,
@@ -1496,6 +1501,8 @@ static const struct super_operations xfs_super_operations = {
        .statfs                 = xfs_fs_statfs,
        .remount_fs             = xfs_fs_remount,
        .show_options           = xfs_fs_show_options,
+       .nr_cached_objects      = xfs_fs_nr_cached_objects,
+       .free_cached_objects    = xfs_fs_free_cached_objects,
 };
 
 static struct file_system_type xfs_fs_type = {