rem: old_ref = atomic_add(&v->ref_count, -1);
add: old_ref = atomic_add(&vnode->ref_count, -1);
context: dec_vnode_ref_count(struct vnode *v, bool free_mem, bool r){	int err;	int old_ref;	mutex_lock(&vfs_vnode_mutex);	if (v->busy == true)		panic("dec_vnode_ref_count called on vnode that was busy! vnode %p\n", v);	old_ref = atomic_add(&v->ref_count, -1);	PRINT(("dec_vnode_ref_count: vnode 0x%p, ref now %d\n", v, v->ref_count));	if (old_ref == 1) {		v->busy = true;		mutex_unlock(&vfs_vnode_mutex);		/* if we have a vm_cache attached, remove it */		if (v->cache)			vm_cache_release_ref((vm_cache_ref *)v->cache);		v->cache = NULL;		if (v->delete_me)			FS_CALL(v,fs_remove_vnode)(v->mount->cookie, v->priv_vnode, r);		else			FS_CALL(v,fs_put_vnode)(v->mount->cookie, v->priv_vnode, r);		remove_vnode_from_mount_list(v, v->mount);		mutex_lock(&vfs_vnode_mutex);		hash_remove(vnode_table, v);		mutex_unlock(&vfs_vnode_mutex);		if (free_mem)			kfree(v);		err = 1;	} else {		mutex_unlock(&vfs_vnode_mutex);		err = 0;	}	return err;}