Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 25 Oct 1998 21:13:51 +0900 (JST)
From:      Michael Hancock <michaelh@cet.co.jp>
To:        Love <lha@e.kth.se>
Cc:        freebsd-fs@FreeBSD.ORG, kom-arla@stacken.kth.se
Subject:   Re: deadfs in FreeBSD 3.0/current ?
Message-ID:  <Pine.BSF.3.95LJ1.1b3.981025211009.1324A-100000@sv01.cet.co.jp>
In-Reply-To: <Pine.BSF.3.95LJ1.1b3.981025202548.1224A-100000@sv01.cet.co.jp>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, 25 Oct 1998, Michael Hancock wrote:

> On 25 Oct 1998, Love wrote:
> 
> > > > kern/vfs_subr.c:vclean() does a vp->v_flag |= VXLOCK; and after that
> > > > "calls" VOP_LOCK().
> > > > 
> > > > Now when the filesystem is deadfs (we use it in arla[1]), the call
> > > > ends up in miscfs/deadfs/dead_vnops.c:dead_lock() that calls
> > > > chkvnlock(). Now chkvnlock() sleeps when VXLOCK is set.
> > > > 
> > > > Who will wake us up ?
> > >
> > > The wakeup at the bottom of vclean()?  That code also clears VXLOCK.
> > 
> > But that is done *after* the tsleep, and therefor that code will *never* be
> > reached. Kind of hard to wake yourself up. It will hang in
> > miscfs/deadfs/dead_vnops.c(1.24):240 forever.
> 
> Umm...  Why are you using deadfs in arla?  I think you're breaking an
> invariant if vclean is trying to clean out something that's already dead.
> Kinda like a double free.

Sorry, let me guess.  You're trying to cache vnodes but the kernel wants
to control the lifetime of vnodes.  With the global vnode management
policy and how deadfs works this is tricky.  You might want to look at how
the Coda people solved this, I don't have a clue.

Regards,

Mike



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-fs" in the body of the message



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.3.95LJ1.1b3.981025211009.1324A-100000>