From owner-svn-src-head@FreeBSD.ORG Wed May 12 21:24:47 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 520671065672; Wed, 12 May 2010 21:24:47 +0000 (UTC) (envelope-from zml@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 28C078FC24; Wed, 12 May 2010 21:24:47 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4CLOlic027909; Wed, 12 May 2010 21:24:47 GMT (envelope-from zml@svn.freebsd.org) Received: (from zml@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4CLOk3b027904; Wed, 12 May 2010 21:24:46 GMT (envelope-from zml@svn.freebsd.org) Message-Id: <201005122124.o4CLOk3b027904@svn.freebsd.org> From: Zachary Loafman Date: Wed, 12 May 2010 21:24:46 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208003 - in head/sys: kern sys X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 12 May 2010 21:24:47 -0000 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 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);