diff options
Diffstat (limited to 'fs/dcache.c')
-rw-r--r-- | fs/dcache.c | 40 |
1 files changed, 0 insertions, 40 deletions
diff --git a/fs/dcache.c b/fs/dcache.c index 59dbc92c2079..313b54b2b8f2 100644 --- a/fs/dcache.c +++ b/fs/dcache.c | |||
@@ -687,46 +687,6 @@ void shrink_dcache_parent(struct dentry * parent) | |||
687 | prune_dcache(found, parent->d_sb); | 687 | prune_dcache(found, parent->d_sb); |
688 | } | 688 | } |
689 | 689 | ||
690 | /** | ||
691 | * shrink_dcache_anon - further prune the cache | ||
692 | * @head: head of d_hash list of dentries to prune | ||
693 | * | ||
694 | * Prune the dentries that are anonymous | ||
695 | * | ||
696 | * parsing d_hash list does not hlist_for_each_entry_rcu() as it | ||
697 | * done under dcache_lock. | ||
698 | * | ||
699 | */ | ||
700 | void shrink_dcache_anon(struct super_block *sb) | ||
701 | { | ||
702 | struct hlist_node *lp; | ||
703 | struct hlist_head *head = &sb->s_anon; | ||
704 | int found; | ||
705 | do { | ||
706 | found = 0; | ||
707 | spin_lock(&dcache_lock); | ||
708 | hlist_for_each(lp, head) { | ||
709 | struct dentry *this = hlist_entry(lp, struct dentry, d_hash); | ||
710 | if (!list_empty(&this->d_lru)) { | ||
711 | dentry_stat.nr_unused--; | ||
712 | list_del_init(&this->d_lru); | ||
713 | } | ||
714 | |||
715 | /* | ||
716 | * move only zero ref count dentries to the end | ||
717 | * of the unused list for prune_dcache | ||
718 | */ | ||
719 | if (!atomic_read(&this->d_count)) { | ||
720 | list_add_tail(&this->d_lru, &dentry_unused); | ||
721 | dentry_stat.nr_unused++; | ||
722 | found++; | ||
723 | } | ||
724 | } | ||
725 | spin_unlock(&dcache_lock); | ||
726 | prune_dcache(found, sb); | ||
727 | } while(found); | ||
728 | } | ||
729 | |||
730 | /* | 690 | /* |
731 | * Scan `nr' dentries and return the number which remain. | 691 | * Scan `nr' dentries and return the number which remain. |
732 | * | 692 | * |