smbfs_vnops.c (144852) | smbfs_vnops.c (145006) |
---|---|
1/*- 2 * Copyright (c) 2000-2001 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) 2000-2001 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/smbfs/smbfs_vnops.c 144852 2005-04-10 03:17:42Z delphij $ | 32 * $FreeBSD: head/sys/fs/smbfs/smbfs_vnops.c 145006 2005-04-13 10:59:09Z jeff $ |
33 */ 34#include <sys/param.h> 35#include <sys/systm.h> 36#include <sys/namei.h> 37#include <sys/kernel.h> 38#include <sys/proc.h> 39#include <sys/bio.h> 40#include <sys/buf.h> --- 1109 unchanged lines hidden (view full) --- 1150 * guarantee that prevents this case from happening. 1151 */ 1152 if (killit && vp != dvp) 1153 vgone(vp); 1154 if (vp != dvp) 1155 vput(vp); 1156 else 1157 vrele(vp); | 33 */ 34#include <sys/param.h> 35#include <sys/systm.h> 36#include <sys/namei.h> 37#include <sys/kernel.h> 38#include <sys/proc.h> 39#include <sys/bio.h> 40#include <sys/buf.h> --- 1109 unchanged lines hidden (view full) --- 1150 * guarantee that prevents this case from happening. 1151 */ 1152 if (killit && vp != dvp) 1153 vgone(vp); 1154 if (vp != dvp) 1155 vput(vp); 1156 else 1157 vrele(vp); |
1158 if (flags & ISDOTDOT) 1159 if (vn_lock(dvp, LK_EXCLUSIVE, td)) 1160 panic("smbfs_lookup: Can't relock directory."); | |
1161 *vpp = NULLVP; 1162 } 1163 /* 1164 * entry is not in the cache or has been expired 1165 */ 1166 error = 0; 1167 *vpp = NULLVP; 1168 smb_makescred(&scred, td, cnp->cn_cred); --- 55 unchanged lines hidden (view full) --- 1224 return error; 1225 *vpp = vp; 1226 cnp->cn_flags |= SAVENAME; 1227 return 0; 1228 } 1229 if (flags & ISDOTDOT) { 1230 VOP_UNLOCK(dvp, 0, td); 1231 error = smbfs_nget(mp, dvp, name, nmlen, NULL, &vp); | 1158 *vpp = NULLVP; 1159 } 1160 /* 1161 * entry is not in the cache or has been expired 1162 */ 1163 error = 0; 1164 *vpp = NULLVP; 1165 smb_makescred(&scred, td, cnp->cn_cred); --- 55 unchanged lines hidden (view full) --- 1221 return error; 1222 *vpp = vp; 1223 cnp->cn_flags |= SAVENAME; 1224 return 0; 1225 } 1226 if (flags & ISDOTDOT) { 1227 VOP_UNLOCK(dvp, 0, td); 1228 error = smbfs_nget(mp, dvp, name, nmlen, NULL, &vp); |
1232 if (error) { 1233 vn_lock(dvp, LK_EXCLUSIVE | LK_RETRY, td); | 1229 vn_lock(dvp, LK_EXCLUSIVE | LK_RETRY, td); 1230 if (error) |
1234 return error; | 1231 return error; |
1235 } | |
1236 *vpp = vp; 1237 } else if (isdot) { 1238 vref(dvp); 1239 *vpp = dvp; 1240 } else { 1241 error = smbfs_nget(mp, dvp, name, nmlen, fap, &vp); 1242 if (error) 1243 return error; 1244 *vpp = vp; 1245 SMBVDEBUG("lookup: getnewvp!\n"); 1246 } 1247 if ((cnp->cn_flags & MAKEENTRY)/* && !islastcn*/) { 1248/* VTOSMB(*vpp)->n_ctime = VTOSMB(*vpp)->n_vattr.va_ctime.tv_sec;*/ 1249 cache_enter(dvp, *vpp, cnp); 1250 } 1251 return 0; 1252} | 1232 *vpp = vp; 1233 } else if (isdot) { 1234 vref(dvp); 1235 *vpp = dvp; 1236 } else { 1237 error = smbfs_nget(mp, dvp, name, nmlen, fap, &vp); 1238 if (error) 1239 return error; 1240 *vpp = vp; 1241 SMBVDEBUG("lookup: getnewvp!\n"); 1242 } 1243 if ((cnp->cn_flags & MAKEENTRY)/* && !islastcn*/) { 1244/* VTOSMB(*vpp)->n_ctime = VTOSMB(*vpp)->n_vattr.va_ctime.tv_sec;*/ 1245 cache_enter(dvp, *vpp, cnp); 1246 } 1247 return 0; 1248} |