mirror of
https://github.com/freebsd/freebsd-src
synced 2024-10-02 06:35:36 +00:00
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:
parent
fa48f413ef
commit
830cd4b810
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=295717
|
@ -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,
|
||||
|
|
Loading…
Reference in a new issue