lkml.org 
[lkml]   [2003]   [Apr]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
Subject[patch] dentry_stat fix

Hello Andrew,

This patch the corrects the dentry_stat.nr_unused calculation.

In select_parent() and shrink_dcache_anon() we were not doing
any adjustments to the nr_unused count after manipulating the dentry_unused
list. Now the nr_unused count is decremented if the dentry is on dentry_unused
list and is removed from there.

Further in the same routines, we have to adjust the nr_unused count
again if the dentry is moved to the end of d_lru list for pruning.


Regards,
Maneesh


diff -urN linux-2.5.67-base/fs/dcache.c linux-2.5.67-dentry_stat/fs/dcache.c
--- linux-2.5.67-base/fs/dcache.c Mon Apr 7 23:00:42 2003
+++ linux-2.5.67-dentry_stat/fs/dcache.c Fri Apr 11 15:53:53 2003
@@ -538,13 +538,18 @@
struct list_head *tmp = next;
struct dentry *dentry = list_entry(tmp, struct dentry, d_child);
next = tmp->next;
- list_del_init(&dentry->d_lru);

- /* don't add non zero d_count dentries
- * back to d_lru list
+ if (!list_empty(&dentry->d_lru)) {
+ dentry_stat.nr_unused--;
+ list_del_init(&dentry->d_lru);
+ }
+ /*
+ * move only zero ref count dentries to the end
+ * of the unused list for prune_dcache
*/
if (!atomic_read(&dentry->d_count)) {
list_add(&dentry->d_lru, dentry_unused.prev);
+ dentry_stat.nr_unused++;
found++;
}
/*
@@ -609,13 +614,18 @@
spin_lock(&dcache_lock);
hlist_for_each(lp, head) {
struct dentry *this = hlist_entry(lp, struct dentry, d_hash);
- list_del(&this->d_lru);
+ if (!list_empty(&this->d_lru)) {
+ dentry_stat.nr_unused--;
+ list_del(&this->d_lru);
+ }

- /* don't add non zero d_count dentries
- * back to d_lru list
+ /*
+ * move only zero ref count dentries to the end
+ * of the unused list for prune_dcache
*/
if (!atomic_read(&this->d_count)) {
list_add_tail(&this->d_lru, &dentry_unused);
+ dentry_stat.nr_unused++;
found++;
}
}
--
Maneesh Soni
IBM Linux Technology Center,
IBM India Software Lab, Bangalore.
Phone: +91-80-5044999 email: maneesh@in.ibm.com
http://lse.sourceforge.net/

--
Maneesh Soni
IBM Linux Technology Center,
IBM India Software Lab, Bangalore.
Phone: +91-80-5044999 email: maneesh@in.ibm.com
http://lse.sourceforge.net/
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 13:34    [W:0.046 / U:0.252 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site