if (refs == 1) {
if (_cache_lock_nonblock(ncp) == 0) {
+ ncp->nc_flag &= ~NCF_DEFEREDZAP;
if ((ncp->nc_flag & NCF_UNRESOLVED) &&
TAILQ_EMPTY(&ncp->nc_list)) {
ncp = cache_zap(ncp, 1);
struct namecache dummy;
int i;
+ numdefered = 0;
bzero(&dummy, sizeof(dummy));
dummy.nc_flag = NCF_DESTROYED;
LIST_INSERT_AFTER(ncp, &dummy, nc_hash);
_cache_hold(ncp);
spin_unlock_wr(&nchpp->spin);
+ if (_cache_lock_nonblock(ncp) == 0) {
+ ncp->nc_flag &= ~NCF_DEFEREDZAP;
+ _cache_unlock(ncp);
+ }
_cache_drop(ncp);
spin_lock_wr(&nchpp->spin);
ncp = &dummy;