Erez Zadok wrote on 1/29/08 11:32 PM:
I was able to reproduce the bug in question: just umount -f an nfs partition
or umount -l any partition that's used as a lower branch, then try to umount
unionfs's mount; you get the exact oops above.  Turns out that grabbing a
vfsmount ref isn't enough: it prevents a casual umount on a lower branch
from succeeding, returning an EBUSY.  But we also needed to grab an s_active
reference on all lower superblocks, to prevent a forced/detached unmount
from destroying the lower super too early.  With the patch below, the lower
super will be detached from the namespace, but it won't be destroyed until
unionfs is mounted: unionfs_put_super will decrement the (possibly last)
reference on the lower super, which'd then be properly destroyed.

Try this patch.  I quickly tried it w/ branch management, umount -l, and my
basic regression suite.  It seems to work, but I'd like to hear from both of
you first before considering this bug fixed.

Poking around at my logs, I see that the OOPS I've been getting under heavy usage (that I've been meaning to send you all our config so you could reproduce it) actually matches the one we get when trying to shut down with the unionfs still mounted (which is the one you're trying to fix here). If this patch fixes this particular OOPS this may well solve our whole problem. I've got it compiling now, I'll throw the load test script at it again and let you know. :)

--
Dave Miller                                   http://www.justdave.net/
System Administrator, Mozilla Corporation      http://www.mozilla.com/
Project Leader, Bugzilla Bug Tracking System  http://www.bugzilla.org/
_______________________________________________
unionfs mailing list: http://unionfs.filesystems.org/
unionfs@mail.fsl.cs.sunysb.edu
http://www.fsl.cs.sunysb.edu/mailman/listinfo/unionfs

Reply via email to