Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 24 Feb 2016 13:48:40 +0000 (UTC)
From:      Konstantin Belousov <kib@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org
Subject:   svn commit: r295970 - stable/10/sys/fs/nullfs
Message-ID:  <201602241348.u1ODmeqi027894@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: kib
Date: Wed Feb 24 13:48:40 2016
New Revision: 295970
URL: https://svnweb.freebsd.org/changeset/base/295970

Log:
  MFC r295717:
  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.
  
  Approved by:	re (marius)

Modified:
  stable/10/sys/fs/nullfs/null_vnops.c
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/sys/fs/nullfs/null_vnops.c
==============================================================================
--- stable/10/sys/fs/nullfs/null_vnops.c	Wed Feb 24 13:16:03 2016	(r295969)
+++ stable/10/sys/fs/nullfs/null_vnops.c	Wed Feb 24 13:48:40 2016	(r295970)
@@ -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,



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