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.flem...@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);
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to