Deleted Added
full compact
nfs_nfsdserv.c (216693) nfs_nfsdserv.c (216700)
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

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

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 */
33
34#include <sys/cdefs.h>
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

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

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 */
33
34#include <sys/cdefs.h>
35__FBSDID("$FreeBSD: head/sys/fs/nfsserver/nfs_nfsdserv.c 216693 2010-12-24 21:31:18Z rmacklem $");
35__FBSDID("$FreeBSD: head/sys/fs/nfsserver/nfs_nfsdserv.c 216700 2010-12-25 21:56:25Z rmacklem $");
36
37/*
38 * nfs version 2, 3 and 4 server calls to vnode ops
39 * - these routines generally have 3 phases
40 * 1 - break down and validate rpc request in mbuf list
41 * 2 - do the vnode ops for the request, usually by calling a nfsvno_XXX()
42 * function in nfsd_port.c
43 * 3 - build the rpc reply in an mbuf list

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

1387 vput(dp);
1388 /* todp is always NULL except NFSv4 */
1389 nfsvno_relpathbuf(&fromnd);
1390 return (error);
1391 }
1392 nd->nd_cred->cr_uid = nd->nd_saveduid;
1393 /* Won't lock vfs if already locked, mp == NULL */
1394 tnes.nes_vfslocked = exp->nes_vfslocked;
36
37/*
38 * nfs version 2, 3 and 4 server calls to vnode ops
39 * - these routines generally have 3 phases
40 * 1 - break down and validate rpc request in mbuf list
41 * 2 - do the vnode ops for the request, usually by calling a nfsvno_XXX()
42 * function in nfsd_port.c
43 * 3 - build the rpc reply in an mbuf list

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

1387 vput(dp);
1388 /* todp is always NULL except NFSv4 */
1389 nfsvno_relpathbuf(&fromnd);
1390 return (error);
1391 }
1392 nd->nd_cred->cr_uid = nd->nd_saveduid;
1393 /* Won't lock vfs if already locked, mp == NULL */
1394 tnes.nes_vfslocked = exp->nes_vfslocked;
1395 nfsd_fhtovp(nd, &tfh, &tdp, &tnes, &mp, 0, p);
1395 nfsd_fhtovp(nd, &tfh, LK_EXCLUSIVE, &tdp, &tnes, &mp, 0, p);
1396 if (tdp) {
1397 tdirfor_ret = nfsvno_getattr(tdp, &tdirfor, nd->nd_cred,
1398 p, 1);
1399 NFSVOPUNLOCK(tdp, 0, p);
1400 }
1401 }
1402 NFSNAMEICNDSET(&tond.ni_cnd, nd->nd_cred, RENAME, LOCKPARENT | LOCKLEAF | NOCACHE | SAVESTART);
1403 nfsvno_setpathbuf(&tond, &tbufp, &hashp);

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

1541 error = nfsrv_mtofh(nd, &dfh);
1542 if (error) {
1543 vrele(vp);
1544 /* tovp is always NULL unless NFSv4 */
1545 return (error);
1546 }
1547 /* Won't lock vfs if already locked, mp == NULL */
1548 tnes.nes_vfslocked = exp->nes_vfslocked;
1396 if (tdp) {
1397 tdirfor_ret = nfsvno_getattr(tdp, &tdirfor, nd->nd_cred,
1398 p, 1);
1399 NFSVOPUNLOCK(tdp, 0, p);
1400 }
1401 }
1402 NFSNAMEICNDSET(&tond.ni_cnd, nd->nd_cred, RENAME, LOCKPARENT | LOCKLEAF | NOCACHE | SAVESTART);
1403 nfsvno_setpathbuf(&tond, &tbufp, &hashp);

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

1541 error = nfsrv_mtofh(nd, &dfh);
1542 if (error) {
1543 vrele(vp);
1544 /* tovp is always NULL unless NFSv4 */
1545 return (error);
1546 }
1547 /* Won't lock vfs if already locked, mp == NULL */
1548 tnes.nes_vfslocked = exp->nes_vfslocked;
1549 nfsd_fhtovp(nd, &dfh, &dp, &tnes, &mp, 0, p);
1549 nfsd_fhtovp(nd, &dfh, LK_EXCLUSIVE, &dp, &tnes, &mp, 0,
1550 p);
1550 if (dp)
1551 NFSVOPUNLOCK(dp, 0, p);
1552 }
1553 }
1554 NFSNAMEICNDSET(&named.ni_cnd, nd->nd_cred, CREATE,
1555 LOCKPARENT | SAVENAME);
1556 if (!nd->nd_repstat) {
1557 nfsvno_setpathbuf(&named, &bufp, &hashp);

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

3136 fh.nfsrvfh_len = NFSX_MYFH;
3137 vp = named.ni_vp;
3138 nd->nd_repstat = nfsvno_getfh(vp, (fhandle_t *)fh.nfsrvfh_data, p);
3139 mp = vnode_mount(vp); /* so it won't try to re-lock filesys */
3140 retnes.nes_vfslocked = exp->nes_vfslocked;
3141 vput(vp);
3142 savflag = nd->nd_flag;
3143 if (!nd->nd_repstat) {
1551 if (dp)
1552 NFSVOPUNLOCK(dp, 0, p);
1553 }
1554 }
1555 NFSNAMEICNDSET(&named.ni_cnd, nd->nd_cred, CREATE,
1556 LOCKPARENT | SAVENAME);
1557 if (!nd->nd_repstat) {
1558 nfsvno_setpathbuf(&named, &bufp, &hashp);

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

3137 fh.nfsrvfh_len = NFSX_MYFH;
3138 vp = named.ni_vp;
3139 nd->nd_repstat = nfsvno_getfh(vp, (fhandle_t *)fh.nfsrvfh_data, p);
3140 mp = vnode_mount(vp); /* so it won't try to re-lock filesys */
3141 retnes.nes_vfslocked = exp->nes_vfslocked;
3142 vput(vp);
3143 savflag = nd->nd_flag;
3144 if (!nd->nd_repstat) {
3144 nfsd_fhtovp(nd, &fh, &vp, &retnes, &mp, 0, p);
3145 nfsd_fhtovp(nd, &fh, LK_SHARED, &vp, &retnes, &mp, 0, p);
3145 if (vp)
3146 vput(vp);
3147 }
3148 nd->nd_flag = savflag;
3149 if (nd->nd_repstat)
3150 return (0);
3151
3152 /*

--- 292 unchanged lines hidden ---
3146 if (vp)
3147 vput(vp);
3148 }
3149 nd->nd_flag = savflag;
3150 if (nd->nd_repstat)
3151 return (0);
3152
3153 /*

--- 292 unchanged lines hidden ---