After nullfs rmdir operation, reclaim the directory vnode which was

unlinked.  Otherwise the vnode stays cached, causing leak.  This is
similar to r292961 for regular files.

Reported and tested by:	pho (previous version)
Sponsored by:	The FreeBSD Foundation
MFC after:	1 week
This commit is contained in:
Konstantin Belousov 2016-02-17 19:43:03 +00:00
parent fa48f413ef
commit 830cd4b810
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=295717

View file

@ -619,6 +619,14 @@ null_rename(struct vop_rename_args *ap)
return (null_bypass((struct vop_generic_args *)ap));
}
static int
null_rmdir(struct vop_rmdir_args *ap)
{
VTONULL(ap->a_vp)->null_flags |= NULLV_DROP;
return (null_bypass(&ap->a_gen));
}
/*
* We need to process our own vnode lock and then clear the
* interlock flag as it applies only to our vnode, not the
@ -920,6 +928,7 @@ struct vop_vector null_vnodeops = {
.vop_reclaim = null_reclaim,
.vop_remove = null_remove,
.vop_rename = null_rename,
.vop_rmdir = null_rmdir,
.vop_setattr = null_setattr,
.vop_strategy = VOP_EOPNOTSUPP,
.vop_unlock = null_unlock,