Deleted Added
full compact
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 ---