]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - fs/super.c
dcache: convert to use new lru list infrastructure
[karo-tx-linux.git] / fs / super.c
index 2785fd46bb01a41d39e455b5ee4384b8878bf1f4..d8f14938911cce7a43b286ddb4ef77d502be37fa 100644 (file)
@@ -79,11 +79,11 @@ static unsigned long super_cache_scan(struct shrinker *shrink,
                fs_objects = sb->s_op->nr_cached_objects(sb);
 
        inodes = list_lru_count(&sb->s_inode_lru);
-       total_objects = sb->s_nr_dentry_unused + inodes + fs_objects + 1;
+       dentries = list_lru_count(&sb->s_dentry_lru);
+       total_objects = dentries + inodes + fs_objects + 1;
 
        /* proportion the scan between the caches */
-       dentries = mult_frac(sc->nr_to_scan, sb->s_nr_dentry_unused,
-                                                               total_objects);
+       dentries = mult_frac(sc->nr_to_scan, dentries, total_objects);
        inodes = mult_frac(sc->nr_to_scan, inodes, total_objects);
 
        /*
@@ -117,7 +117,7 @@ static unsigned long super_cache_count(struct shrinker *shrink,
        if (sb->s_op && sb->s_op->nr_cached_objects)
                total_objects = sb->s_op->nr_cached_objects(sb);
 
-       total_objects += sb->s_nr_dentry_unused;
+       total_objects += list_lru_count(&sb->s_dentry_lru);
        total_objects += list_lru_count(&sb->s_inode_lru);
 
        total_objects = vfs_pressure_ratio(total_objects);
@@ -197,8 +197,7 @@ static struct super_block *alloc_super(struct file_system_type *type, int flags)
                INIT_HLIST_NODE(&s->s_instances);
                INIT_HLIST_BL_HEAD(&s->s_anon);
                INIT_LIST_HEAD(&s->s_inodes);
-               INIT_LIST_HEAD(&s->s_dentry_lru);
-               spin_lock_init(&s->s_dentry_lru_lock);
+               list_lru_init(&s->s_dentry_lru);
                list_lru_init(&s->s_inode_lru);
                INIT_LIST_HEAD(&s->s_mounts);
                init_rwsem(&s->s_umount);