Sat Jun 18 16:17:39 2011 UTC ()
Pull up following revision(s) (requested by manu in ticket #1623):
	lib/libpuffs/puffs.c: revision 1.116 via patch
	sys/fs/puffs/puffs_vnops.c: revision 1.151 via patch
Call advlock method if supplied


(bouyer)
diff -r1.92.4.4 -r1.92.4.5 src/lib/libpuffs/puffs.c
diff -r1.129.4.7 -r1.129.4.8 src/sys/fs/puffs/puffs_vnops.c

cvs diff -r1.92.4.4 -r1.92.4.5 src/lib/libpuffs/puffs.c (expand / switch to unified diff)

--- src/lib/libpuffs/puffs.c 2009/10/27 20:37:38 1.92.4.4
+++ src/lib/libpuffs/puffs.c 2011/06/18 16:17:38 1.92.4.5
@@ -1,14 +1,14 @@ @@ -1,14 +1,14 @@
1/* $NetBSD: puffs.c,v 1.92.4.4 2009/10/27 20:37:38 bouyer Exp $ */ 1/* $NetBSD: puffs.c,v 1.92.4.5 2011/06/18 16:17:38 bouyer Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 2005, 2006, 2007 Antti Kantee. All Rights Reserved. 4 * Copyright (c) 2005, 2006, 2007 Antti Kantee. All Rights Reserved.
5 * 5 *
6 * Development of this software was supported by the 6 * Development of this software was supported by the
7 * Google Summer of Code program and the Ulla Tuominen Foundation. 7 * Google Summer of Code program and the Ulla Tuominen Foundation.
8 * The Google SoC project was mentored by Bill Studenmund. 8 * The Google SoC project was mentored by Bill Studenmund.
9 * 9 *
10 * Redistribution and use in source and binary forms, with or without 10 * Redistribution and use in source and binary forms, with or without
11 * modification, are permitted provided that the following conditions 11 * modification, are permitted provided that the following conditions
12 * are met: 12 * are met:
13 * 1. Redistributions of source code must retain the above copyright 13 * 1. Redistributions of source code must retain the above copyright
14 * notice, this list of conditions and the following disclaimer. 14 * notice, this list of conditions and the following disclaimer.
@@ -21,27 +21,27 @@ @@ -21,27 +21,27 @@
21 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 21 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22 * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 22 * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
23 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 24 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
25 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 25 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
26 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 26 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 27 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
28 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 28 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29 * SUCH DAMAGE. 29 * SUCH DAMAGE.
30 */ 30 */
31 31
32#include <sys/cdefs.h> 32#include <sys/cdefs.h>
33#if !defined(lint) 33#if !defined(lint)
34__RCSID("$NetBSD: puffs.c,v 1.92.4.4 2009/10/27 20:37:38 bouyer Exp $"); 34__RCSID("$NetBSD: puffs.c,v 1.92.4.5 2011/06/18 16:17:38 bouyer Exp $");
35#endif /* !lint */ 35#endif /* !lint */
36 36
37#include <sys/param.h> 37#include <sys/param.h>
38#include <sys/mount.h> 38#include <sys/mount.h>
39 39
40#include <assert.h> 40#include <assert.h>
41#include <err.h> 41#include <err.h>
42#include <errno.h> 42#include <errno.h>
43#include <fcntl.h> 43#include <fcntl.h>
44#include <mntopts.h> 44#include <mntopts.h>
45#include <paths.h> 45#include <paths.h>
46#include <puffs.h> 46#include <puffs.h>
47#include <stdio.h> 47#include <stdio.h>
@@ -89,26 +89,27 @@ fillvnopmask(struct puffs_ops *pops, uin @@ -89,26 +89,27 @@ fillvnopmask(struct puffs_ops *pops, uin
89 FILLOP(remove, REMOVE); 89 FILLOP(remove, REMOVE);
90 FILLOP(link, LINK); 90 FILLOP(link, LINK);
91 FILLOP(rename, RENAME); 91 FILLOP(rename, RENAME);
92 FILLOP(mkdir, MKDIR); 92 FILLOP(mkdir, MKDIR);
93 FILLOP(rmdir, RMDIR); 93 FILLOP(rmdir, RMDIR);
94 FILLOP(symlink, SYMLINK); 94 FILLOP(symlink, SYMLINK);
95 FILLOP(readdir, READDIR); 95 FILLOP(readdir, READDIR);
96 FILLOP(readlink, READLINK); 96 FILLOP(readlink, READLINK);
97 FILLOP(reclaim, RECLAIM); 97 FILLOP(reclaim, RECLAIM);
98 FILLOP(inactive, INACTIVE); 98 FILLOP(inactive, INACTIVE);
99 FILLOP(print, PRINT); 99 FILLOP(print, PRINT);
100 FILLOP(read, READ); 100 FILLOP(read, READ);
101 FILLOP(write, WRITE); 101 FILLOP(write, WRITE);
 102 FILLOP(advlock, ADVLOCK);
102 FILLOP(abortop, ABORTOP); 103 FILLOP(abortop, ABORTOP);
103} 104}
104#undef FILLOP 105#undef FILLOP
105 106
106/* 107/*
107 * Go over all framev entries and write everything we can. This is 108 * Go over all framev entries and write everything we can. This is
108 * mostly for the benefit of delivering "unmount" to the kernel. 109 * mostly for the benefit of delivering "unmount" to the kernel.
109 */ 110 */
110static void 111static void
111finalpush(struct puffs_usermount *pu) 112finalpush(struct puffs_usermount *pu)
112{ 113{
113 struct puffs_fctrl_io *fio; 114 struct puffs_fctrl_io *fio;
114 115

cvs diff -r1.129.4.7 -r1.129.4.8 src/sys/fs/puffs/puffs_vnops.c (expand / switch to unified diff)

--- src/sys/fs/puffs/puffs_vnops.c 2010/01/16 17:52:13 1.129.4.7
+++ src/sys/fs/puffs/puffs_vnops.c 2011/06/18 16:17:38 1.129.4.8
@@ -1,14 +1,14 @@ @@ -1,14 +1,14 @@
1/* $NetBSD: puffs_vnops.c,v 1.129.4.7 2010/01/16 17:52:13 bouyer Exp $ */ 1/* $NetBSD: puffs_vnops.c,v 1.129.4.8 2011/06/18 16:17:38 bouyer Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 2005, 2006, 2007 Antti Kantee. All Rights Reserved. 4 * Copyright (c) 2005, 2006, 2007 Antti Kantee. All Rights Reserved.
5 * 5 *
6 * Development of this software was supported by the 6 * Development of this software was supported by the
7 * Google Summer of Code program and the Ulla Tuominen Foundation. 7 * Google Summer of Code program and the Ulla Tuominen Foundation.
8 * The Google SoC project was mentored by Bill Studenmund. 8 * The Google SoC project was mentored by Bill Studenmund.
9 * 9 *
10 * Redistribution and use in source and binary forms, with or without 10 * Redistribution and use in source and binary forms, with or without
11 * modification, are permitted provided that the following conditions 11 * modification, are permitted provided that the following conditions
12 * are met: 12 * are met:
13 * 1. Redistributions of source code must retain the above copyright 13 * 1. Redistributions of source code must retain the above copyright
14 * notice, this list of conditions and the following disclaimer. 14 * notice, this list of conditions and the following disclaimer.
@@ -20,35 +20,36 @@ @@ -20,35 +20,36 @@
20 * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 20 * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 21 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22 * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 22 * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
23 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 24 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
25 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 25 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
26 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 26 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 27 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
28 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 28 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29 * SUCH DAMAGE. 29 * SUCH DAMAGE.
30 */ 30 */
31 31
32#include <sys/cdefs.h> 32#include <sys/cdefs.h>
33__KERNEL_RCSID(0, "$NetBSD: puffs_vnops.c,v 1.129.4.7 2010/01/16 17:52:13 bouyer Exp $"); 33__KERNEL_RCSID(0, "$NetBSD: puffs_vnops.c,v 1.129.4.8 2011/06/18 16:17:38 bouyer Exp $");
34 34
35#include <sys/param.h> 35#include <sys/param.h>
36#include <sys/fstrans.h> 36#include <sys/fstrans.h>
37#include <sys/malloc.h> 37#include <sys/malloc.h>
38#include <sys/mount.h> 38#include <sys/mount.h>
39#include <sys/namei.h> 39#include <sys/namei.h>
40#include <sys/vnode.h> 40#include <sys/vnode.h>
41#include <sys/proc.h> 41#include <sys/proc.h>
 42#include <sys/lockf.h>
42 43
43#include <uvm/uvm.h> 44#include <uvm/uvm.h>
44 45
45#include <fs/puffs/puffs_msgif.h> 46#include <fs/puffs/puffs_msgif.h>
46#include <fs/puffs/puffs_sys.h> 47#include <fs/puffs/puffs_sys.h>
47 48
48#include <miscfs/fifofs/fifo.h> 49#include <miscfs/fifofs/fifo.h>
49#include <miscfs/genfs/genfs.h> 50#include <miscfs/genfs/genfs.h>
50#include <miscfs/specfs/specdev.h> 51#include <miscfs/specfs/specdev.h>
51 52
52int puffs_vnop_lookup(void *); 53int puffs_vnop_lookup(void *);
53int puffs_vnop_create(void *); 54int puffs_vnop_create(void *);
54int puffs_vnop_access(void *); 55int puffs_vnop_access(void *);
@@ -2114,44 +2115,45 @@ puffs_vnop_pathconf(void *v) @@ -2114,44 +2115,45 @@ puffs_vnop_pathconf(void *v)
2114int 2115int
2115puffs_vnop_advlock(void *v) 2116puffs_vnop_advlock(void *v)
2116{ 2117{
2117 struct vop_advlock_args /* { 2118 struct vop_advlock_args /* {
2118 const struct vnodeop_desc *a_desc; 2119 const struct vnodeop_desc *a_desc;
2119 struct vnode *a_vp; 2120 struct vnode *a_vp;
2120 void *a_id; 2121 void *a_id;
2121 int a_op; 2122 int a_op;
2122 struct flock *a_fl; 2123 struct flock *a_fl;
2123 int a_flags; 2124 int a_flags;
2124 } */ *ap = v; 2125 } */ *ap = v;
2125 PUFFS_MSG_VARS(vn, advlock); 2126 PUFFS_MSG_VARS(vn, advlock);
2126 struct vnode *vp = ap->a_vp; 2127 struct vnode *vp = ap->a_vp;
 2128 struct puffs_node *pn = VPTOPP(vp);
2127 struct puffs_mount *pmp = MPTOPUFFSMP(vp->v_mount); 2129 struct puffs_mount *pmp = MPTOPUFFSMP(vp->v_mount);
2128 int error; 2130 int error;
2129 2131
 2132 if (!EXISTSOP(pmp, ADVLOCK))
 2133 return lf_advlock(ap, &pn->pn_lockf, vp->v_size);
 2134
2130 PUFFS_MSG_ALLOC(vn, advlock); 2135 PUFFS_MSG_ALLOC(vn, advlock);
2131 error = copyin(ap->a_fl, &advlock_msg->pvnr_fl, sizeof(struct flock)); 2136 (void)memcpy(&advlock_msg->pvnr_fl, ap->a_fl,
2132 if (error) 2137 sizeof(advlock_msg->pvnr_fl));
2133 goto out; 
2134 advlock_msg->pvnr_id = ap->a_id; 2138 advlock_msg->pvnr_id = ap->a_id;
2135 advlock_msg->pvnr_op = ap->a_op; 2139 advlock_msg->pvnr_op = ap->a_op;
2136 advlock_msg->pvnr_flags = ap->a_flags; 2140 advlock_msg->pvnr_flags = ap->a_flags;
2137 puffs_msg_setinfo(park_advlock, PUFFSOP_VN, 2141 puffs_msg_setinfo(park_advlock, PUFFSOP_VN,
2138 PUFFS_VN_ADVLOCK, VPTOPNC(vp)); 2142 PUFFS_VN_ADVLOCK, VPTOPNC(vp));
2139 
2140 PUFFS_MSG_ENQUEUEWAIT2(pmp, park_advlock, vp->v_data, NULL, error); 2143 PUFFS_MSG_ENQUEUEWAIT2(pmp, park_advlock, vp->v_data, NULL, error);
2141 error = checkerr(pmp, error, __func__); 2144 error = checkerr(pmp, error, __func__);
2142 
2143 out: 
2144 PUFFS_MSG_RELEASE(advlock); 2145 PUFFS_MSG_RELEASE(advlock);
 2146
2145 return error; 2147 return error;
2146} 2148}
2147 2149
2148int 2150int
2149puffs_vnop_abortop(void *v) 2151puffs_vnop_abortop(void *v)
2150{ 2152{
2151 struct vop_abortop_args /* { 2153 struct vop_abortop_args /* {
2152 struct vnode *a_dvp; 2154 struct vnode *a_dvp;
2153 struct componentname *a_cnp; 2155 struct componentname *a_cnp;
2154 }; */ *ap = v; 2156 }; */ *ap = v;
2155 PUFFS_MSG_VARS(vn, abortop); 2157 PUFFS_MSG_VARS(vn, abortop);
2156 struct vnode *dvp = ap->a_dvp; 2158 struct vnode *dvp = ap->a_dvp;
2157 struct puffs_mount *pmp = MPTOPUFFSMP(dvp->v_mount); 2159 struct puffs_mount *pmp = MPTOPUFFSMP(dvp->v_mount);