Andrew,
I think dcache_rcu-nfs-server-fix needs to be included irrespective of
dcache_rcu. All fs should be using dcache APIs to manipulate dcache hash
lists. This is in line with the dcache cleanup patch (dcache_rcu-1) from
Maneesh that Linus accepted. This seems like a reasonable cleanup. One
change though, we don't need to grab dcache_lock while deleting
dentries from the private list and __d_drop() should suffice here.
Untested replacement patch included.
Thanks
Dipankar
--- linux-2.5.59-dc/net/sunrpc/~rpc_pipe.c 2003-02-11 15:49:18.000000000 +0530
+++ linux-2.5.59-dc/net/sunrpc/rpc_pipe.c 2003-02-11 15:47:55.000000000 +0530
@@ -488,14 +488,15 @@
dentry = list_entry(pos, struct dentry, d_child);
if (!d_unhashed(dentry)) {
dget_locked(dentry);
- list_del(&dentry->d_hash);
+ __d_drop(dentry);
list_add(&dentry->d_hash, &head);
}
}
spin_unlock(&dcache_lock);
while (!list_empty(&head)) {
dentry = list_entry(head.next, struct dentry, d_hash);
- list_del_init(&dentry->d_hash);
+ /* Private list, so no dcache_lock needed and use __d_drop */
+ __d_drop(dentry);
if (dentry->d_inode) {
rpc_inode_setowner(dentry->d_inode, NULL);
simple_unlink(dir->d_inode, dentry);
-
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/