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>