Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 5 Apr 1997 17:40:31 +0100 (BST)
From:      Doug Rabson <dfr@nlsystems.com>
To:        Tor Egge <Tor.Egge@idi.ntnu.no>
Cc:        terry@lambert.org, dg@root.com, ponds!rivers@dg-rtp.dg.com, freebsd-hackers@freebsd.org
Subject:   Re: kern/3184: vnodes are used after they are freed. (dup alloc?)
Message-ID:  <Pine.BSF.3.95q.970405173829.8538J-100000@herring.nlsystems.com>
In-Reply-To: <199704051629.SAA00567@pat.idt.unit.no>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sat, 5 Apr 1997, Tor Egge wrote:

> > > Proper locking on NFS will help against the crash I experienced, but
> > > if the NFS server goes down at the wrong moment, a call to getnewvnode
> > > may hang until the NFS server is back again.
> > 
> > This will always be the case, right?
> > 
> > Or do you mean the case where an attempt to vclean() a vnode is against
> > an NFS vnode with the server down?
> 
> When the first vnode on the so-called free list is a NFS vnode, where
> VOP_INACTIVE is blocked (due to nfs_remove blocking when the NFS
> server is down), that vnode cannot be reused for a long time (until
> the nfs server is up again). 
> 
> When getnewvnode picks that vnode it waits for the lock to drain (in
> vclean). if the routine that called getnewvnode is ffs_vget, the
> ffs_inode_hash_lock is set while getnewvnode blocks.  This has the
> side effect that any further calls to ffs_vget will block. This might
> block any creation of new files on local ufs file systems while the
> NFS server is down. 

I know about this problem.  Unfortunately the only way of fixing it is
probably to keep private pools of vnodes for each filesystem (which Terry
has been badgering me about for *years*).  It might happen but it is a
fair amount of work.  For the moment, I will settle with a system which is
stable, even it does hang when a server fails.

--
Doug Rabson				Mail:  dfr@nlsystems.com
Nonlinear Systems Ltd.			Phone: +44 181 951 1891




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.3.95q.970405173829.8538J-100000>