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