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-head
mailing list