[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