Messages in this thread | | | Date | Sat, 28 Aug 2004 09:37:09 +0200 | From | Ingo Molnar <> | Subject | Re: [patch] voluntary-preempt-2.6.8.1-P9 |
| |
* Lee Revell <rlrevell@joe-job.com> wrote:
> I am seeing large latencies (600-2000 usec) latencies in > dcache_readdir. This started when the machine became a Samba server > and the dcache presumably got large. Traces are at the above url (8 > and 9 I believe). I think this patch fixes it. > > --- fs/libfs.c~ 2004-08-14 06:54:47.000000000 -0400 > +++ fs/libfs.c 2004-08-27 00:44:17.000000000 -0400 > @@ -140,6 +140,7 @@ > } > for (p=q->next; p != &dentry->d_subdirs; p=p->next) { > struct dentry *next; > + voluntary_resched_lock(&dcache_lock); > next = list_entry(p, struct dentry, d_child); > if (d_unhashed(next) || !next->d_inode) > continue;
In this loop we are iterating over the child-directories of this directory. In the next line (not shown in this patch) we drop the dcache_lock - so the issue is the 'continue' - where we skip already deleted entries. Are you positive this fixes the latencies you are seeing? The 'deleted entries' situation ought to be relatively rare.
Ingo - 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/
| |