On Thu, Sep 09, 2004 at 02:36:58AM +1000, Greg Banks wrote: > On Thu, 2004-09-09 at 01:44, Jakob Oestergaard wrote: > > SMP systems on 2.6 have a problem with XFS+NFS. > > Knfsd threads in 2.6 are no longer serialised by the BKL, and the > change has exposed a number of SMP issues in the dcache. Try the > two patches at Ok - the "small" server just hosed itself with a debug.c:106 - so I'll be doing some testing on that one as well (after hours, today). > > http://marc.theaimsgroup.com/?l=linux-kernel&m=108330112505555&w=2 Ok, I must say that mail has some *scary* comments to the patch... This should be interesting :) The patch assumes some dcache code is -------------- if (res) { spin_lock(&res->d_lock); res->d_sb = inode->i_sb; res->d_parent = res; res->d_inode = inode; res->d_bucket = d_hash(res, res->d_name.hash); res->d_flags |= DCACHE_DISCONNECTED; res->d_vfs_flags &= ~DCACHE_UNHASHED; list_add(&res->d_alias, &inode->i_dentry); hlist_add_head(&res->d_hash, &inode->i_sb->s_anon); spin_unlock(&res->d_lock); } -------------- While it was actually changed to -------------- if (res) { spin_lock(&res->d_lock); res->d_sb = inode->i_sb; res->d_parent = res; res->d_inode = inode; /* * Set d_bucket to an "impossible" bucket address so * that d_move() doesn't get a false positive */ res->d_bucket = NULL; res->d_flags |= DCACHE_DISCONNECTED; res->d_flags &= ~DCACHE_UNHASHED; list_add(&res->d_alias, &inode->i_dentry); hlist_add_head(&res->d_hash, &inode->i_sb->s_anon); spin_unlock(&res->d_lock); } -------------- I'm assuming I should just adapt this to the res->d_bucket change... New patch against 2.6.8.1 attached. > > and > > http://linus.bkbits.net:8080/linux-2.5/cset@1.1722.48.23 This one is in plain 2.6.8.1 (as you said). -- / jakob