Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 12 May 2010 21:24:46 +0000 (UTC)
From:      Zachary Loafman <zml@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r208003 - in head/sys: kern sys
Message-ID:  <201005122124.o4CLOk3b027904@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: zml
Date: Wed May 12 21:24:46 2010
New Revision: 208003
URL: http://svn.freebsd.org/changeset/base/208003

Log:
  Add VOP_ADVLOCKPURGE so that the file system is called when purging
  locks (in the case where the VFS impl isn't using lf_*)
  
  Submitted by:       Matthew Fleming <matthew.fleming@isilon.com>
  Reviewed by:        zml, dfr

Modified:
  head/sys/kern/vfs_default.c
  head/sys/kern/vfs_subr.c
  head/sys/kern/vnode_if.src
  head/sys/sys/vnode.h

Modified: head/sys/kern/vfs_default.c
==============================================================================
--- head/sys/kern/vfs_default.c	Wed May 12 21:20:04 2010	(r208002)
+++ head/sys/kern/vfs_default.c	Wed May 12 21:24:46 2010	(r208003)
@@ -98,6 +98,7 @@ struct vop_vector default_vnodeops = {
 	.vop_accessx =		vop_stdaccessx,
 	.vop_advlock =		vop_stdadvlock,
 	.vop_advlockasync =	vop_stdadvlockasync,
+	.vop_advlockpurge =	vop_stdadvlockpurge,
 	.vop_bmap =		vop_stdbmap,
 	.vop_close =		VOP_NULL,
 	.vop_fsync =		VOP_NULL,
@@ -413,6 +414,16 @@ vop_stdadvlockasync(struct vop_advlockas
 	return (lf_advlockasync(ap, &(vp->v_lockf), vattr.va_size));
 }
 
+int
+vop_stdadvlockpurge(struct vop_advlockpurge_args *ap)
+{
+	struct vnode *vp;
+
+	vp = ap->a_vp;
+	lf_purgelocks(vp, &vp->v_lockf);
+	return (0);
+}
+
 /*
  * vop_stdpathconf:
  *

Modified: head/sys/kern/vfs_subr.c
==============================================================================
--- head/sys/kern/vfs_subr.c	Wed May 12 21:20:04 2010	(r208002)
+++ head/sys/kern/vfs_subr.c	Wed May 12 21:24:46 2010	(r208003)
@@ -2585,7 +2585,7 @@ vgonel(struct vnode *vp)
 	/*
 	 * Clear the advisory locks and wake up waiting threads.
 	 */
-	lf_purgelocks(vp, &(vp->v_lockf));
+	(void)VOP_ADVLOCKPURGE(vp);
 	/*
 	 * Delete from old mount point vnode list.
 	 */

Modified: head/sys/kern/vnode_if.src
==============================================================================
--- head/sys/kern/vnode_if.src	Wed May 12 21:20:04 2010	(r208002)
+++ head/sys/kern/vnode_if.src	Wed May 12 21:24:46 2010	(r208003)
@@ -453,6 +453,13 @@ vop_advlockasync {
 };
 
 
+%% advlockpurge	vp	E E E
+
+vop_advlockpurge {
+	IN struct vnode *vp;
+};
+
+
 %% reallocblks	vp	E E E
 
 vop_reallocblks {

Modified: head/sys/sys/vnode.h
==============================================================================
--- head/sys/sys/vnode.h	Wed May 12 21:20:04 2010	(r208002)
+++ head/sys/sys/vnode.h	Wed May 12 21:24:46 2010	(r208003)
@@ -692,6 +692,7 @@ int	vop_stdaccess(struct vop_access_args
 int	vop_stdaccessx(struct vop_accessx_args *ap);
 int	vop_stdadvlock(struct vop_advlock_args *ap);
 int	vop_stdadvlockasync(struct vop_advlockasync_args *ap);
+int	vop_stdadvlockpurge(struct vop_advlockpurge_args *ap);
 int	vop_stdpathconf(struct vop_pathconf_args *);
 int	vop_stdpoll(struct vop_poll_args *);
 int	vop_stdvptocnp(struct vop_vptocnp_args *ap);



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