mirror of https://gitee.com/openkylin/linux.git
clean out unused code in dentry pruning
It looks like in the end all pruners want parents removed. So remove unused code and function arguments. Signed-off-by: Miklos Szeredi <mszeredi@suse.cz> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
1a159dd229
commit
85864e1038
24
fs/dcache.c
24
fs/dcache.c
|
@ -381,20 +381,17 @@ void d_prune_aliases(struct inode *inode)
|
||||||
* Throw away a dentry - free the inode, dput the parent. This requires that
|
* Throw away a dentry - free the inode, dput the parent. This requires that
|
||||||
* the LRU list has already been removed.
|
* the LRU list has already been removed.
|
||||||
*
|
*
|
||||||
* If prune_parents is true, try to prune ancestors as well.
|
* Try to prune ancestors as well. This is necessary to prevent
|
||||||
|
* quadratic behavior of shrink_dcache_parent(), but is also expected
|
||||||
|
* to be beneficial in reducing dentry cache fragmentation.
|
||||||
*
|
*
|
||||||
* Called with dcache_lock, drops it and then regains.
|
* Called with dcache_lock, drops it and then regains.
|
||||||
* Called with dentry->d_lock held, drops it.
|
* Called with dentry->d_lock held, drops it.
|
||||||
*/
|
*/
|
||||||
static void prune_one_dentry(struct dentry * dentry, int prune_parents)
|
static void prune_one_dentry(struct dentry * dentry)
|
||||||
{
|
{
|
||||||
__d_drop(dentry);
|
__d_drop(dentry);
|
||||||
dentry = d_kill(dentry);
|
dentry = d_kill(dentry);
|
||||||
if (!prune_parents) {
|
|
||||||
dput(dentry);
|
|
||||||
spin_lock(&dcache_lock);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Prune ancestors. Locking is simpler than in dput(),
|
* Prune ancestors. Locking is simpler than in dput(),
|
||||||
|
@ -422,7 +419,6 @@ static void prune_one_dentry(struct dentry * dentry, int prune_parents)
|
||||||
* @count: number of entries to try and free
|
* @count: number of entries to try and free
|
||||||
* @sb: if given, ignore dentries for other superblocks
|
* @sb: if given, ignore dentries for other superblocks
|
||||||
* which are being unmounted.
|
* which are being unmounted.
|
||||||
* @prune_parents: if true, try to prune ancestors as well in one go
|
|
||||||
*
|
*
|
||||||
* Shrink the dcache. This is done when we need
|
* Shrink the dcache. This is done when we need
|
||||||
* more memory, or simply when we need to unmount
|
* more memory, or simply when we need to unmount
|
||||||
|
@ -433,7 +429,7 @@ static void prune_one_dentry(struct dentry * dentry, int prune_parents)
|
||||||
* all the dentries are in use.
|
* all the dentries are in use.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static void prune_dcache(int count, struct super_block *sb, int prune_parents)
|
static void prune_dcache(int count, struct super_block *sb)
|
||||||
{
|
{
|
||||||
spin_lock(&dcache_lock);
|
spin_lock(&dcache_lock);
|
||||||
for (; count ; count--) {
|
for (; count ; count--) {
|
||||||
|
@ -493,7 +489,7 @@ static void prune_dcache(int count, struct super_block *sb, int prune_parents)
|
||||||
* without taking the s_umount lock (I already hold it).
|
* without taking the s_umount lock (I already hold it).
|
||||||
*/
|
*/
|
||||||
if (sb && dentry->d_sb == sb) {
|
if (sb && dentry->d_sb == sb) {
|
||||||
prune_one_dentry(dentry, prune_parents);
|
prune_one_dentry(dentry);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
|
@ -508,7 +504,7 @@ static void prune_dcache(int count, struct super_block *sb, int prune_parents)
|
||||||
s_umount = &dentry->d_sb->s_umount;
|
s_umount = &dentry->d_sb->s_umount;
|
||||||
if (down_read_trylock(s_umount)) {
|
if (down_read_trylock(s_umount)) {
|
||||||
if (dentry->d_sb->s_root != NULL) {
|
if (dentry->d_sb->s_root != NULL) {
|
||||||
prune_one_dentry(dentry, prune_parents);
|
prune_one_dentry(dentry);
|
||||||
up_read(s_umount);
|
up_read(s_umount);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -579,7 +575,7 @@ void shrink_dcache_sb(struct super_block * sb)
|
||||||
spin_unlock(&dentry->d_lock);
|
spin_unlock(&dentry->d_lock);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
prune_one_dentry(dentry, 1);
|
prune_one_dentry(dentry);
|
||||||
cond_resched_lock(&dcache_lock);
|
cond_resched_lock(&dcache_lock);
|
||||||
goto repeat;
|
goto repeat;
|
||||||
}
|
}
|
||||||
|
@ -858,7 +854,7 @@ void shrink_dcache_parent(struct dentry * parent)
|
||||||
int found;
|
int found;
|
||||||
|
|
||||||
while ((found = select_parent(parent)) != 0)
|
while ((found = select_parent(parent)) != 0)
|
||||||
prune_dcache(found, parent->d_sb, 1);
|
prune_dcache(found, parent->d_sb);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -878,7 +874,7 @@ static int shrink_dcache_memory(int nr, gfp_t gfp_mask)
|
||||||
if (nr) {
|
if (nr) {
|
||||||
if (!(gfp_mask & __GFP_FS))
|
if (!(gfp_mask & __GFP_FS))
|
||||||
return -1;
|
return -1;
|
||||||
prune_dcache(nr, NULL, 1);
|
prune_dcache(nr, NULL);
|
||||||
}
|
}
|
||||||
return (dentry_stat.nr_unused / 100) * sysctl_vfs_cache_pressure;
|
return (dentry_stat.nr_unused / 100) * sysctl_vfs_cache_pressure;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue