Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 05 Apr 1997 18:29:37 +0200
From:      Tor Egge <Tor.Egge@idi.ntnu.no>
To:        terry@lambert.org
Cc:        dfr@nlsystems.com, 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:  <199704051629.SAA00567@pat.idt.unit.no>
In-Reply-To: Your message of "Fri, 4 Apr 1997 21:21:42 -0700 (MST)"
References:  <199704050421.VAA20745@phaeton.artisoft.com>

next in thread | previous in thread | raw e-mail | index | archive | help
> > 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. 

- Tor Egge



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199704051629.SAA00567>