Deleted Added
full compact
nfs_node.c (11921) nfs_node.c (16312)
1/*
2 * Copyright (c) 1989, 1993
3 * The Regents of the University of California. All rights reserved.
4 *
5 * This code is derived from software contributed to Berkeley by
6 * Rick Macklem at The University of Guelph.
7 *
8 * Redistribution and use in source and binary forms, with or without

--- 20 unchanged lines hidden (view full) ---

29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
30 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
31 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
32 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
33 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
34 * SUCH DAMAGE.
35 *
36 * @(#)nfs_node.c 8.2 (Berkeley) 12/30/93
1/*
2 * Copyright (c) 1989, 1993
3 * The Regents of the University of California. All rights reserved.
4 *
5 * This code is derived from software contributed to Berkeley by
6 * Rick Macklem at The University of Guelph.
7 *
8 * Redistribution and use in source and binary forms, with or without

--- 20 unchanged lines hidden (view full) ---

29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
30 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
31 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
32 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
33 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
34 * SUCH DAMAGE.
35 *
36 * @(#)nfs_node.c 8.2 (Berkeley) 12/30/93
37 * $Id: nfs_node.c,v 1.11 1995/07/22 03:32:18 davidg Exp $
37 * $Id: nfs_node.c,v 1.12 1995/10/29 15:32:50 phk Exp $
38 */
39
40#include <sys/param.h>
41#include <sys/systm.h>
42#include <sys/proc.h>
43#include <sys/mount.h>
44#include <sys/namei.h>
45#include <sys/vnode.h>

--- 87 unchanged lines hidden (view full) ---

133 if (nfs_node_hash_lock) {
134 while (nfs_node_hash_lock) {
135 nfs_node_hash_lock = -1;
136 tsleep(&nfs_node_hash_lock, PVM, "nfsngt", 0);
137 }
138 goto loop;
139 }
140 nfs_node_hash_lock = 1;
38 */
39
40#include <sys/param.h>
41#include <sys/systm.h>
42#include <sys/proc.h>
43#include <sys/mount.h>
44#include <sys/namei.h>
45#include <sys/vnode.h>

--- 87 unchanged lines hidden (view full) ---

133 if (nfs_node_hash_lock) {
134 while (nfs_node_hash_lock) {
135 nfs_node_hash_lock = -1;
136 tsleep(&nfs_node_hash_lock, PVM, "nfsngt", 0);
137 }
138 goto loop;
139 }
140 nfs_node_hash_lock = 1;
141
142 /*
143 * Do the MALLOC before the getnewvnode since doing so afterward
144 * might cause a bogus v_data pointer to get dereferenced
145 * elsewhere if MALLOC should block.
146 */
147 MALLOC(np, struct nfsnode *, sizeof *np, M_NFSNODE, M_WAITOK);
141
142 error = getnewvnode(VT_NFS, mntp, nfsv2_vnodeop_p, &nvp);
143 if (error) {
144 if (nfs_node_hash_lock < 0)
145 wakeup(&nfs_node_hash_lock);
146 nfs_node_hash_lock = 0;
147 *npp = 0;
148
149 error = getnewvnode(VT_NFS, mntp, nfsv2_vnodeop_p, &nvp);
150 if (error) {
151 if (nfs_node_hash_lock < 0)
152 wakeup(&nfs_node_hash_lock);
153 nfs_node_hash_lock = 0;
154 *npp = 0;
155 FREE(np, M_NFSNODE);
148 return (error);
149 }
150 vp = nvp;
156 return (error);
157 }
158 vp = nvp;
151 MALLOC(np, struct nfsnode *, sizeof *np, M_NFSNODE, M_WAITOK);
152 bzero((caddr_t)np, sizeof *np);
153 vp->v_data = np;
154 np->n_vnode = vp;
155 /*
156 * Insert the nfsnode in the hash queue for its new file handle
157 */
158 LIST_INSERT_HEAD(nhpp, np, n_hash);
159 if (fhsize > NFS_SMALLFH) {

--- 209 unchanged lines hidden ---
159 bzero((caddr_t)np, sizeof *np);
160 vp->v_data = np;
161 np->n_vnode = vp;
162 /*
163 * Insert the nfsnode in the hash queue for its new file handle
164 */
165 LIST_INSERT_HEAD(nhpp, np, n_hash);
166 if (fhsize > NFS_SMALLFH) {

--- 209 unchanged lines hidden ---