nfs_nfsdserv.c (224080) | nfs_nfsdserv.c (224081) |
---|---|
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 224080 2011-07-16 08:05:26Z zack $"); | 35__FBSDID("$FreeBSD: head/sys/fs/nfsserver/nfs_nfsdserv.c 224081 2011-07-16 08:05:31Z zack $"); |
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 --- 189 unchanged lines hidden (view full) --- 233 VREF(tvp); 234 at_root = 1; 235 } else 236 at_root = 0; 237 vfs_ref(mp); 238 VOP_UNLOCK(vp, 0); 239 if (at_root != 0) { 240 if ((nd->nd_repstat = | 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 --- 189 unchanged lines hidden (view full) --- 233 VREF(tvp); 234 at_root = 1; 235 } else 236 at_root = 0; 237 vfs_ref(mp); 238 VOP_UNLOCK(vp, 0); 239 if (at_root != 0) { 240 if ((nd->nd_repstat = |
241 vn_lock(tvp, LK_SHARED)) == 0) { | 241 NFSVOPLOCK(tvp, LK_SHARED)) == 0) { |
242 nd->nd_repstat = VOP_GETATTR( 243 tvp, &va, nd->nd_cred); 244 vput(tvp); 245 } else 246 vrele(tvp); 247 if (nd->nd_repstat == 0) 248 mounted_on_fileno = (uint64_t) 249 va.va_fileid; --- 2448 unchanged lines hidden (view full) --- 2698#ifdef NFS4_ACL_EXTATTR_NAME 2699 acl_free(aclp); 2700#endif 2701 FREE((caddr_t)stp, M_NFSDSTATE); 2702 return (0); 2703 }; 2704 stp->ls_flags |= NFSLCK_RECLAIM; 2705 vp = dp; | 242 nd->nd_repstat = VOP_GETATTR( 243 tvp, &va, nd->nd_cred); 244 vput(tvp); 245 } else 246 vrele(tvp); 247 if (nd->nd_repstat == 0) 248 mounted_on_fileno = (uint64_t) 249 va.va_fileid; --- 2448 unchanged lines hidden (view full) --- 2698#ifdef NFS4_ACL_EXTATTR_NAME 2699 acl_free(aclp); 2700#endif 2701 FREE((caddr_t)stp, M_NFSDSTATE); 2702 return (0); 2703 }; 2704 stp->ls_flags |= NFSLCK_RECLAIM; 2705 vp = dp; |
2706 vn_lock(vp, LK_EXCLUSIVE | LK_RETRY); | 2706 NFSVOPLOCK(vp, LK_EXCLUSIVE | LK_RETRY); |
2707 if ((vp->v_iflag & VI_DOOMED) == 0) 2708 nd->nd_repstat = nfsrv_opencheck(clientid, &stateid, 2709 stp, vp, nd, p, nd->nd_repstat); 2710 else 2711 nd->nd_repstat = NFSERR_PERM; 2712 } else { 2713 nd->nd_repstat = NFSERR_BADXDR; 2714 vrele(dp); --- 753 unchanged lines hidden --- | 2707 if ((vp->v_iflag & VI_DOOMED) == 0) 2708 nd->nd_repstat = nfsrv_opencheck(clientid, &stateid, 2709 stp, vp, nd, p, nd->nd_repstat); 2710 else 2711 nd->nd_repstat = NFSERR_PERM; 2712 } else { 2713 nd->nd_repstat = NFSERR_BADXDR; 2714 vrele(dp); --- 753 unchanged lines hidden --- |