NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: kern/41417 (WAPBL: hang on tstile)



        hello.  After beating on these patches for a bit longer, I've
discovered a case where softdep gives trouble.  The problem is that
softdep code uses the i_offset field of the inode structure as a key for
matching a vnode buffer to a file.  These patches track all the offset data
in the ulr structure, outside of the inode, instead.  The following second
patch, which can be applied to the ufs_lookup.c file after you apply the
first set of patches, copies the offset data back into the inode if we're
doing softdep and seems to eliminate this problem entirely.
        I'm still seeing an issue with softdeps enabled when resource
exhaustion occurs, i.e. when the system runs out of files or vnodes, but I
suspect this issue predates this set of patches, and if I track it down and
fix it, I'm actually fixing another latent bug which has been extent in our
code for a while.
        Again, I hope folks are trying these patches out, because although
NetBSD-5 is now a bit older, as far as I can tell, it's still a supported
release until such time as NetBSD-7 comes out, and these bugs are rather
serious, even if they don't hit everyone.
        thank you for your time, and any feedback regarding these patches is
greatly appreciated.

sincerely

-Brian


--- ufs_lookup.c        2012-04-01 23:27:15.000000000 -0700
+++ ufs_lookup.c.good   2012-03-29 16:02:42.000000000 -0700
@@ -803,6 +803,8 @@
 
        dp = VTOI(dvp);
        newentrysize = DIRSIZ(0, dirp, 0);
+       if (DOINGSOFTDEP(dvp))
+               dp->i_offset = ulr->ulr_offset; /*sofdep tags buffers withthis 
value*/
 
  #if 0
        struct ufs_lookup_results *ulr;


Home | Main Index | Thread Index | Old Index