svn commit: r208003 - in head/sys: kern sys

Zachary Loafman zml at FreeBSD.org
Wed May 12 21:24:47 UTC 2010


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 at 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);


More information about the svn-src-all mailing list