[Unionfs] unmounting order during shutdown [was: Re: unionfs
2.2.3 OOPS]
Luiz Fernando N. Capitulino
lcapitulino at mandriva.com.br
Wed Jan 30 08:05:21 EST 2008
Em Tue, 29 Jan 2008 23:32:14 -0500
Erez Zadok <ezk at cs.sunysb.edu> escreveu:
| In message <20080129164040.124c9d81 at mandriva.com.br>, "Luiz Fernando N. Capitulino" writes:
| [...]
| > Yeah, maybe.. But we have to fix that OOPS too.
| >
| > I've captured the backtrace, but I'm not sure what the shutdown
| > script is doing when the OOPS happens.
| >
| > I'm still investigating. Should I open a ticket for that one too?
| >
| > The first and last lines of the backtrace are mixed with the output of
| > the Mandriva's shutdown script because I was running it with 'bash -x'
| > when I got the OOPS.
| >
| > """
| > BUG: Dentry dc1ad6b8{i=6b5e2,n=} still in use (1) [unmount of nfs 0:15]
| > me/ { print $1 }------------[ cut here ]------------
|
| Luiz/Dave,
|
| 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.
Yeah, it fixes the bug for me too.
Thanks a lot.
--
Luiz Fernando N. Capitulino
More information about the unionfs
mailing list