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 --- |