diff options
author | zml <zml@FreeBSD.org> | 2010-05-12 21:24:46 +0000 |
---|---|---|
committer | zml <zml@FreeBSD.org> | 2010-05-12 21:24:46 +0000 |
commit | 773cda6040b0b1d6fe89422c1946947d521fd2eb (patch) | |
tree | ce67b9798568e20fc8bce6cc7b78d0c998d7bf42 /sys/kern | |
parent | 9fed13dcbad587e7ad67a1970047081baec1a257 (diff) | |
download | FreeBSD-src-773cda6040b0b1d6fe89422c1946947d521fd2eb.zip FreeBSD-src-773cda6040b0b1d6fe89422c1946947d521fd2eb.tar.gz |
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
Diffstat (limited to 'sys/kern')
-rw-r--r-- | sys/kern/vfs_default.c | 11 | ||||
-rw-r--r-- | sys/kern/vfs_subr.c | 2 | ||||
-rw-r--r-- | sys/kern/vnode_if.src | 7 |
3 files changed, 19 insertions, 1 deletions
diff --git a/sys/kern/vfs_default.c b/sys/kern/vfs_default.c index 3788147..2d9a908 100644 --- a/sys/kern/vfs_default.c +++ b/sys/kern/vfs_default.c @@ -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_advlockasync_args *ap) 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: * diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c index 1fb131a..d44b735 100644 --- a/sys/kern/vfs_subr.c +++ b/sys/kern/vfs_subr.c @@ -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. */ diff --git a/sys/kern/vnode_if.src b/sys/kern/vnode_if.src index c9f20e3..304e009 100644 --- a/sys/kern/vnode_if.src +++ b/sys/kern/vnode_if.src @@ -453,6 +453,13 @@ vop_advlockasync { }; +%% advlockpurge vp E E E + +vop_advlockpurge { + IN struct vnode *vp; +}; + + %% reallocblks vp E E E vop_reallocblks { |