nwfs_vnops.c (66540) | nwfs_vnops.c (66615) |
---|---|
1/* 2 * Copyright (c) 1999, 2000 Boris Popov 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 15 unchanged lines hidden (view full) --- 24 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 25 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 26 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 27 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 28 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 29 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 30 * SUCH DAMAGE. 31 * | 1/* 2 * Copyright (c) 1999, 2000 Boris Popov 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 15 unchanged lines hidden (view full) --- 24 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 25 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 26 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 27 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 28 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 29 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 30 * SUCH DAMAGE. 31 * |
32 * $FreeBSD: head/sys/fs/nwfs/nwfs_vnops.c 66540 2000-10-02 09:49:04Z bp $ | 32 * $FreeBSD: head/sys/fs/nwfs/nwfs_vnops.c 66615 2000-10-04 01:29:17Z jasone $ |
33 */ 34#include <sys/param.h> 35#include <sys/systm.h> 36#include <sys/namei.h> 37#include <sys/kernel.h> 38#include <sys/bio.h> 39#include <sys/buf.h> 40#include <sys/proc.h> 41#include <sys/fcntl.h> 42#include <sys/mount.h> 43#include <sys/unistd.h> 44#include <sys/vnode.h> 45 46#include <vm/vm.h> 47#include <vm/vm_extern.h> 48 | 33 */ 34#include <sys/param.h> 35#include <sys/systm.h> 36#include <sys/namei.h> 37#include <sys/kernel.h> 38#include <sys/bio.h> 39#include <sys/buf.h> 40#include <sys/proc.h> 41#include <sys/fcntl.h> 42#include <sys/mount.h> 43#include <sys/unistd.h> 44#include <sys/vnode.h> 45 46#include <vm/vm.h> 47#include <vm/vm_extern.h> 48 |
49#include <machine/mutex.h> 50 |
|
49#include <netncp/ncp.h> 50#include <netncp/ncp_conn.h> 51#include <netncp/ncp_subr.h> 52#include <netncp/nwerror.h> 53#include <netncp/ncp_nls.h> 54 55#include <nwfs/nwfs.h> 56#include <nwfs/nwfs_node.h> --- 193 unchanged lines hidden (view full) --- 250 struct vnode *vp = ap->a_vp; 251 struct nwnode *np = VTONW(vp); 252 int error; 253 254 NCPVNDEBUG("name=%s,pid=%d,c=%d\n",np->n_name,ap->a_p->p_pid,np->opened); 255 256 if (vp->v_type == VDIR) return 0; /* nothing to do now */ 257 error = 0; | 51#include <netncp/ncp.h> 52#include <netncp/ncp_conn.h> 53#include <netncp/ncp_subr.h> 54#include <netncp/nwerror.h> 55#include <netncp/ncp_nls.h> 56 57#include <nwfs/nwfs.h> 58#include <nwfs/nwfs_node.h> --- 193 unchanged lines hidden (view full) --- 252 struct vnode *vp = ap->a_vp; 253 struct nwnode *np = VTONW(vp); 254 int error; 255 256 NCPVNDEBUG("name=%s,pid=%d,c=%d\n",np->n_name,ap->a_p->p_pid,np->opened); 257 258 if (vp->v_type == VDIR) return 0; /* nothing to do now */ 259 error = 0; |
258 simple_lock(&vp->v_interlock); | 260 mtx_enter(&vp->v_interlock, MTX_DEF); |
259 if (np->opened == 0) { | 261 if (np->opened == 0) { |
260 simple_unlock(&vp->v_interlock); | 262 mtx_exit(&vp->v_interlock, MTX_DEF); |
261 return 0; 262 } | 263 return 0; 264 } |
263 simple_unlock(&vp->v_interlock); | 265 mtx_exit(&vp->v_interlock, MTX_DEF); |
264 error = nwfs_vinvalbuf(vp, V_SAVE, ap->a_cred, ap->a_p, 1); | 266 error = nwfs_vinvalbuf(vp, V_SAVE, ap->a_cred, ap->a_p, 1); |
265 simple_lock(&vp->v_interlock); | 267 mtx_enter(&vp->v_interlock, MTX_DEF); |
266 if (np->opened == 0) { | 268 if (np->opened == 0) { |
267 simple_unlock(&vp->v_interlock); | 269 mtx_exit(&vp->v_interlock, MTX_DEF); |
268 return 0; 269 } 270 if (--np->opened == 0) { | 270 return 0; 271 } 272 if (--np->opened == 0) { |
271 simple_unlock(&vp->v_interlock); | 273 mtx_exit(&vp->v_interlock, MTX_DEF); |
272 error = ncp_close_file(NWFSTOCONN(VTONWFS(vp)), &np->n_fh, 273 ap->a_p, ap->a_cred); 274 } else | 274 error = ncp_close_file(NWFSTOCONN(VTONWFS(vp)), &np->n_fh, 275 ap->a_p, ap->a_cred); 276 } else |
275 simple_unlock(&vp->v_interlock); | 277 mtx_exit(&vp->v_interlock, MTX_DEF); |
276 np->n_atime = 0; 277 return (error); 278} 279 280/* 281 * nwfs_getattr call from vfs. 282 */ 283static int --- 830 unchanged lines hidden --- | 278 np->n_atime = 0; 279 return (error); 280} 281 282/* 283 * nwfs_getattr call from vfs. 284 */ 285static int --- 830 unchanged lines hidden --- |