Lines Matching refs:nd

254  *      struct nfsrv_descript *nd - the NFS request descriptor
262 * provided in nd->nd_nmreq.
275 struct nfsrv_descript *nd,
293 nmreq = &nd->nd_nmreq;
301 error = nfsrv_fhtovp(&nfh, nd, &vp, &nx, &nxo);
308 nfsrv_update_user_stat(nx, nd, kauth_cred_getuid(nd->nd_cr), 1, 0, 0);
310 error = nfsrv_credcheck(nd, ctx, nx, nxo);
379 nd->nd_repstat = error;
380 error = nfsrv_rephead(nd, slp, &nmrep, NFSX_POSTOPATTR(NFS_VER3) + NFSX_UNSIGNED);
383 nfsmout_on_status(nd, error);
384 nfsm_chain_add_postop_attr(error, nd, &nmrep, attrerr, &vattr);
385 if (!nd->nd_repstat)
403 struct nfsrv_descript *nd,
417 nmreq = &nd->nd_nmreq;
422 nfsm_chain_get_fh_ptr(error, nmreq, nd->nd_vers, nfh.nfh_fhp, nfh.nfh_len);
424 error = nfsrv_fhtovp(&nfh, nd, &vp, &nx, &nxo);
431 nfsrv_update_user_stat(nx, nd, kauth_cred_getuid(nd->nd_cr), 1, 0, 0);
433 error = nfsrv_credcheck(nd, ctx, nx, nxo);
436 nfsm_srv_vattr_init(&vattr, nd->nd_vers);
443 nd->nd_repstat = error;
444 error = nfsrv_rephead(nd, slp, &nmrep, NFSX_FATTR(nd->nd_vers));
447 nfsmout_if(nd->nd_repstat);
448 error = nfsm_chain_add_fattr(nd, &nmrep, &vattr);
465 struct nfsrv_descript *nd,
485 nmreq = &nd->nd_nmreq;
490 nfsm_chain_get_fh_ptr(error, nmreq, nd->nd_vers, nfh.nfh_fhp, nfh.nfh_len);
494 error = nfsm_chain_get_sattr(nd, nmreq, vap);
495 if (nd->nd_vers == NFS_VER3) {
498 nfsm_chain_get_time(error, nmreq, nd->nd_vers, guard.tv_sec, guard.tv_nsec);
506 saved_uid = kauth_cred_getuid(nd->nd_cr);
511 error = nfsrv_fhtovp(&nfh, nd, &vp, &nx, &nxo);
518 nfsrv_update_user_stat(nx, nd, saved_uid, 1, 0, 0);
520 error = nfsrv_credcheck(nd, ctx, nx, nxo);
523 if (nd->nd_vers == NFS_VER3) {
539 if ((vap->va_uid == saved_uid) && (kauth_cred_getuid(nd->nd_cr) != saved_uid)) {
541 VATTR_SET(vap, va_uid, kauth_cred_getuid(nd->nd_cr));
542 if (kauth_cred_ismember_gid(nd->nd_cr, vap->va_gid, &ismember) || !ismember)
543 VATTR_SET(vap, va_gid, kauth_cred_getgid(nd->nd_cr));
555 if (!error || (nd->nd_vers == NFS_VER3)) {
556 nfsm_srv_vattr_init(&postattr, nd->nd_vers);
567 nd->nd_repstat = error;
568 error = nfsrv_rephead(nd, slp, &nmrep, NFSX_WCCORFATTR(nd->nd_vers));
571 nfsmout_on_status(nd, error);
572 if (nd->nd_vers == NFS_VER3)
573 nfsm_chain_add_wcc_data(error, nd, &nmrep,
576 error = nfsm_chain_add_fattr(nd, &nmrep, &postattr);
591 struct nfsrv_descript *nd,
609 nmreq = &nd->nd_nmreq;
611 saved_uid = kauth_cred_getuid(nd->nd_cr);
613 nfsm_chain_get_fh_ptr(error, nmreq, nd->nd_vers, dnfh.nfh_fhp, dnfh.nfh_len);
615 nfsm_name_len_check(error, nd, len);
626 error = nfsrv_namei(nd, ctx, &ni, &dnfh, &dirp, &nx, &nxo);
632 nfsrv_update_user_stat(nx, nd, saved_uid, 1, 0, 0);
637 if (nd->nd_vers == NFS_VER3) {
648 error = nfsrv_vptofh(nx, nd->nd_vers, (isdotdot ? &dnfh : NULL), vp, ctx, &nfh);
650 nfsm_srv_vattr_init(vap, nd->nd_vers);
657 nd->nd_repstat = error;
658 error = nfsrv_rephead(nd, slp, &nmrep, NFSX_SRVFH(nd->nd_vers, &nfh) +
659 NFSX_POSTOPORFATTR(nd->nd_vers) + NFSX_POSTOPATTR(nd->nd_vers));
662 if (nd->nd_repstat) {
663 if (nd->nd_vers == NFS_VER3)
664 nfsm_chain_add_postop_attr(error, nd, &nmrep, dirattrerr, &dirattr);
667 nfsm_chain_add_fh(error, &nmrep, nd->nd_vers, nfh.nfh_fhp, nfh.nfh_len);
668 if (nd->nd_vers == NFS_VER3) {
669 nfsm_chain_add_postop_attr(error, nd, &nmrep, attrerr, vap);
670 nfsm_chain_add_postop_attr(error, nd, &nmrep, dirattrerr, &dirattr);
672 error = nfsm_chain_add_fattr(nd, &nmrep, vap);
688 struct nfsrv_descript *nd,
708 nmreq = &nd->nd_nmreq;
714 nfsm_chain_get_fh_ptr(error, nmreq, nd->nd_vers, nfh.nfh_fhp, nfh.nfh_len);
735 error = nfsrv_fhtovp(&nfh, nd, &vp, &nx, &nxo);
742 nfsrv_update_user_stat(nx, nd, kauth_cred_getuid(nd->nd_cr), 1, 0, 0);
744 error = nfsrv_credcheck(nd, ctx, nx, nxo);
748 if (nd->nd_vers == NFS_VER3)
759 if (nd->nd_vers == NFS_VER3) {
773 nd->nd_repstat = error;
774 error = nfsrv_rephead(nd, slp, &nmrep, NFSX_POSTOPATTR(nd->nd_vers) + NFSX_UNSIGNED);
777 nfsmout_on_status(nd, error);
778 if (nd->nd_vers == NFS_VER3)
779 nfsm_chain_add_postop_attr(error, nd, &nmrep, attrerr, &vattr);
780 if (error || nd->nd_repstat) {
814 struct nfsrv_descript *nd,
836 nmreq = &nd->nd_nmreq;
841 saved_uid = kauth_cred_getuid(nd->nd_cr);
843 nfsm_chain_get_fh_ptr(error, nmreq, nd->nd_vers, nfh.nfh_fhp, nfh.nfh_len);
845 if (nd->nd_vers == NFS_VER3)
850 maxlen = NFSRV_NDMAXDATA(nd);
854 error = nfsrv_fhtovp(&nfh, nd, &vp, &nx, &nxo);
860 error = nfsrv_credcheck(nd, ctx, nx, nxo);
864 if (nd->nd_vers == NFS_VER3)
874 nfsm_srv_vattr_init(vap, nd->nd_vers);
912 if (!error || (nd->nd_vers == NFS_VER3)) {
913 nfsm_srv_vattr_init(vap, nd->nd_vers);
915 if (!error && (nd->nd_vers == NFS_VER2))
931 nd->nd_repstat = error;
932 error = nfsrv_rephead(nd, slp, &nmrep, NFSX_POSTOPORFATTR(nd->nd_vers) + 3 * NFSX_UNSIGNED);
935 nfsmout_on_status(nd, error);
936 if (nd->nd_vers == NFS_VER3)
937 nfsm_chain_add_postop_attr(error, nd, &nmrep, attrerr, vap);
938 if (error || nd->nd_repstat) {
942 if (nd->nd_vers == NFS_VER3) {
946 error = nfsm_chain_add_fattr(nd, &nmrep, vap);
959 nfsrv_update_user_stat(nx, nd, saved_uid, 1, len, 0);
1170 struct nfsrv_descript *nd,
1191 if (nd->nd_nmreq.nmc_mhead == NULL) {
1198 saved_uid = kauth_cred_getuid(nd->nd_cr);
1199 nmreq = &nd->nd_nmreq;
1204 nfsm_chain_get_fh_ptr(error, nmreq, nd->nd_vers, nfh.nfh_fhp, nfh.nfh_len);
1206 if (nd->nd_vers == NFS_VER3) {
1237 error = nfsrv_fhtovp(&nfh, nd, &vp, &nx, &nxo);
1243 error = nfsrv_credcheck(nd, ctx, nx, nxo);
1246 if (nd->nd_vers == NFS_VER3) {
1251 if (nd->nd_vers == NFS_VER3)
1292 nfsrv_update_user_stat(nx, nd, saved_uid, 1, 0, len);
1299 nfsm_srv_vattr_init(&postattr, nd->nd_vers);
1301 if (!error && (nd->nd_vers == NFS_VER2))
1308 nd->nd_repstat = error;
1309 error = nfsrv_rephead(nd, slp, &nmrep, NFSX_PREOPATTR(nd->nd_vers) +
1310 NFSX_POSTOPORFATTR(nd->nd_vers) + 2 * NFSX_UNSIGNED +
1311 NFSX_WRITEVERF(nd->nd_vers));
1314 nfsmout_on_status(nd, error);
1315 if (nd->nd_vers == NFS_VER3) {
1316 nfsm_chain_add_wcc_data(error, nd, &nmrep,
1318 nfsmout_if(error || nd->nd_repstat);
1329 error = nfsm_chain_add_fattr(nd, &nmrep, &postattr);
1373 struct nfsrv_descript *nd, *wp, *owp, *swp;
1396 nd = *ndp;
1398 nmreq = &nd->nd_nmreq;
1399 LIST_INIT(&nd->nd_coalesce);
1400 nd->nd_mrep = NULL;
1401 nd->nd_stable = NFS_WRITE_FILESYNC;
1404 nd->nd_time = cur_usec +
1405 ((nd->nd_vers == NFS_VER3) ? nfsrv_wg_delay_v3 : nfsrv_wg_delay);
1408 nfsm_chain_get_fh_ptr(error, nmreq, nd->nd_vers, nd->nd_fh.nfh_fhp, nd->nd_fh.nfh_len);
1411 if (nd->nd_vers == NFS_VER3) {
1412 nfsm_chain_get_64(error, nmreq, nd->nd_off);
1414 nfsm_chain_get_32(error, nmreq, nd->nd_stable);
1417 nfsm_chain_get_32(error, nmreq, nd->nd_off);
1420 nd->nd_stable = NFS_WRITE_UNSTABLE;
1422 nfsm_chain_get_32(error, nmreq, nd->nd_len);
1424 nd->nd_eoff = nd->nd_off + nd->nd_len;
1426 if (nd->nd_len > 0) {
1427 error = nfsm_chain_trim_data(nmreq, nd->nd_len, &mlen);
1433 if ((nd->nd_len > NFSRV_MAXDATA) || (nd->nd_len < 0) || (mlen < nd->nd_len)) {
1436 nd->nd_repstat = error;
1437 error = nfsrv_rephead(nd, slp, &nmrep, NFSX_WCCDATA(nd->nd_vers));
1439 nd->nd_mrep = nmrep.nmc_mhead;
1440 if (nd->nd_vers == NFS_VER3)
1441 nfsm_chain_add_wcc_data(error, nd, &nmrep,
1445 nd->nd_time = 1;
1454 while (wp && wp->nd_time < nd->nd_time) {
1459 LIST_INSERT_AFTER(owp, nd, nd_tq);
1461 LIST_INSERT_HEAD(&slp->ns_tq, nd, nd_tq);
1464 wpp = NWDELAYHASH(slp, nd->nd_fh.nfh_fid);
1467 while (wp && !nfsrv_fhmatch(&nd->nd_fh, &wp->nd_fh)) {
1471 while (wp && (wp->nd_off < nd->nd_off) &&
1472 nfsrv_fhmatch(&nd->nd_fh, &wp->nd_fh)) {
1477 LIST_INSERT_AFTER(owp, nd, nd_hash);
1482 for(; nd && NFSW_CONTIG(owp, nd); nd = wp) {
1483 wp = nd->nd_hash.le_next;
1484 if (NFSW_SAMECRED(owp, nd))
1485 nfsrv_wg_coalesce(owp, nd);
1488 LIST_INSERT_HEAD(wpp, nd, nd_hash);
1502 for (nd = slp->ns_tq.lh_first; nd; nd = owp) {
1503 owp = nd->nd_tq.le_next;
1504 if (nd->nd_time > cur_usec)
1506 if (nd->nd_mrep)
1508 LIST_REMOVE(nd, nd_tq);
1509 LIST_REMOVE(nd, nd_hash);
1510 nmreq = &nd->nd_nmreq;
1515 saved_uid = kauth_cred_getuid(nd->nd_cr);
1517 error = nfsrv_fhtovp(&nd->nd_fh, nd, &vp, &nx, &nxo);
1522 error = nfsrv_credcheck(nd, ctx, nx, nxo);
1527 if (nd->nd_vers == NFS_VER3) {
1532 if (nd->nd_vers == NFS_VER3)
1542 if (nd->nd_stable == NFS_WRITE_UNSTABLE)
1544 else if (nd->nd_stable == NFS_WRITE_DATASYNC)
1549 if (!error && ((nd->nd_eoff - nd->nd_off) > 0)) {
1556 auio = uio_createwithbuffer(i, nd->nd_off, UIO_SYSSPACE,
1568 NFSStatAdd64(&nx->nx_stats.bytes_written, nd->nd_len);
1570 nfsrv_update_user_stat(nx, nd, saved_uid, 1, 0, nd->nd_len);
1583 nfsm_srv_vattr_init(&postattr, nd->nd_vers);
1592 swp = nd;
1595 nd->nd_repstat = error;
1596 error = nfsrv_rephead(nd, slp, &nmrep, NFSX_WCCDATA(nd->nd_vers));
1597 if (!error && (nd->nd_vers == NFS_VER3)) {
1598 nfsm_chain_add_wcc_data(error, nd, &nmrep,
1602 nd->nd_repstat = error;
1603 error = nfsrv_rephead(nd, slp, &nmrep, NFSX_PREOPATTR(nd->nd_vers) +
1604 NFSX_POSTOPORFATTR(nd->nd_vers) + 2 * NFSX_UNSIGNED +
1605 NFSX_WRITEVERF(nd->nd_vers));
1606 if (!error && (nd->nd_vers == NFS_VER3)) {
1607 nfsm_chain_add_wcc_data(error, nd, &nmrep,
1609 nfsm_chain_add_32(error, &nmrep, nd->nd_len);
1610 nfsm_chain_add_32(error, &nmrep, nd->nd_stable);
1615 error = nfsm_chain_add_fattr(nd, &nmrep, &postattr);
1620 nd->nd_mrep = nmrep.nmc_mhead;
1626 if (nd != swp) {
1627 nd->nd_time = 1;
1628 LIST_INSERT_HEAD(&slp->ns_tq, nd, nd_tq);
1630 nd = swp->nd_coalesce.lh_first;
1631 if (nd) {
1632 LIST_REMOVE(nd, nd_tq);
1634 } while (nd);
1643 for (nd = slp->ns_tq.lh_first; nd; nd = nd->nd_tq.le_next)
1644 if (nd->nd_mrep) {
1645 LIST_REMOVE(nd, nd_tq);
1646 *mrepp = nd->nd_mrep;
1647 *ndp = nd;
1680 * Coalesce the write request nd into owp. To do this we must:
1681 * - remove nd from the queues
1682 * - merge nd->nd_nmreq into owp->nd_nmreq
1684 * - put nd on owp's nd_coalesce list
1687 nfsrv_wg_coalesce(struct nfsrv_descript *owp, struct nfsrv_descript *nd)
1693 LIST_REMOVE(nd, nd_hash);
1694 LIST_REMOVE(nd, nd_tq);
1695 if (owp->nd_eoff < nd->nd_eoff) {
1696 overlap = owp->nd_eoff - nd->nd_off;
1700 mbuf_adj(nd->nd_nmreq.nmc_mhead, overlap);
1704 error = mbuf_setnext(mp, nd->nd_nmreq.nmc_mhead);
1707 owp->nd_eoff = nd->nd_eoff;
1709 mbuf_freem(nd->nd_nmreq.nmc_mhead);
1711 nd->nd_nmreq.nmc_mhead = NULL;
1712 nd->nd_nmreq.nmc_mcur = NULL;
1713 if (nd->nd_stable == NFS_WRITE_FILESYNC)
1715 else if ((nd->nd_stable == NFS_WRITE_DATASYNC) &&
1718 LIST_INSERT_HEAD(&owp->nd_coalesce, nd, nd_tq);
1721 * If nd had anything else coalesced into it, transfer them
1724 while ((p = nd->nd_coalesce.lh_first)) {
1807 struct nfsrv_descript *nd,
1829 nmreq = &nd->nd_nmreq;
1836 saved_uid = kauth_cred_getuid(nd->nd_cr);
1838 nfsm_chain_get_fh_ptr(error, nmreq, nd->nd_vers, nfh.nfh_fhp, nfh.nfh_len);
1840 nfsm_name_len_check(error, nd, len);
1850 error = nfsrv_namei(nd, ctx, &ni, &nfh, &dirp, &nx, &nxo);
1856 nfsrv_update_user_stat(nx, nd, saved_uid, 1, 0, 0);
1860 if (nd->nd_vers == NFS_VER3) {
1878 if (nd->nd_vers == NFS_VER3) {
1888 error = nfsm_chain_get_sattr(nd, nmreq, vap);
1901 error = nfsm_chain_get_sattr(nd, nmreq, vap);
1998 error = suser(nd->nd_cr, NULL);
2068 error = nfsrv_vptofh(nx, nd->nd_vers, NULL, vp, ctx, &nfh);
2070 nfsm_srv_vattr_init(&postattr, nd->nd_vers);
2072 if (nd->nd_vers == NFS_VER2)
2079 if (nd->nd_vers == NFS_VER3) {
2091 nd->nd_repstat = error;
2092 error = nfsrv_rephead(nd, slp, &nmrep, NFSX_SRVFH(nd->nd_vers, &nfh) +
2093 NFSX_FATTR(nd->nd_vers) + NFSX_WCCDATA(nd->nd_vers));
2096 nfsmout_on_status(nd, error);
2097 if (nd->nd_vers == NFS_VER3) {
2098 if (!nd->nd_repstat) {
2100 nfsm_chain_add_postop_attr(error, nd, &nmrep, postattrerr, &postattr);
2102 nfsm_chain_add_wcc_data(error, nd, &nmrep,
2107 error = nfsm_chain_add_fattr(nd, &nmrep, &postattr);
2136 struct nfsrv_descript *nd,
2159 nmreq = &nd->nd_nmreq;
2164 saved_uid = kauth_cred_getuid(nd->nd_cr);
2168 nfsm_name_len_check(error, nd, len);
2178 error = nfsrv_namei(nd, ctx, &ni, &nfh, &dirp, &nx, &nxo);
2184 nfsrv_update_user_stat(nx, nd, saved_uid, 1, 0, 0);
2208 error = nfsm_chain_get_sattr(nd, nmreq, vap);
2267 if (vtyp != VFIFO && (error = suser(nd->nd_cr, (u_short *)0)))
2329 nd->nd_repstat = error;
2330 error = nfsrv_rephead(nd, slp, &nmrep, NFSX_SRVFH(NFS_VER3, &nfh) +
2334 nfsmout_on_status(nd, error);
2335 if (!nd->nd_repstat) {
2337 nfsm_chain_add_postop_attr(error, nd, &nmrep, postattrerr, &postattr);
2339 nfsm_chain_add_wcc_data(error, nd, &nmrep,
2372 struct nfsrv_descript *nd,
2390 saved_uid = kauth_cred_getuid(nd->nd_cr);
2392 nmreq = &nd->nd_nmreq;
2395 nfsm_chain_get_fh_ptr(error, nmreq, nd->nd_vers, nfh.nfh_fhp, nfh.nfh_len);
2397 nfsm_name_len_check(error, nd, len);
2407 error = nfsrv_namei(nd, ctx, &ni, &nfh, &dirp, &nx, &nxo);
2413 nfsrv_update_user_stat(nx, nd, saved_uid, 1, 0, 0);
2417 if (nd->nd_vers == NFS_VER3) {
2482 nfsm_srv_vattr_init(&dpostattr, nd->nd_vers);
2488 nd->nd_repstat = error;
2489 error = nfsrv_rephead(nd, slp, &nmrep, NFSX_WCCDATA(nd->nd_vers));
2492 nfsmout_on_status(nd, error);
2493 if (nd->nd_vers == NFS_VER3)
2494 nfsm_chain_add_wcc_data(error, nd, &nmrep,
2510 struct nfsrv_descript *nd,
2544 saved_uid = kauth_cred_getuid(nd->nd_cr);
2548 nmreq = &nd->nd_nmreq;
2560 nfsm_chain_get_fh_ptr(error, nmreq, nd->nd_vers, fnfh.nfh_fhp, fnfh.nfh_len);
2562 nfsm_name_len_check(error, nd, fromlen);
2568 nfsm_chain_get_fh_ptr(error, nmreq, nd->nd_vers, tnfh.nfh_fhp, tnfh.nfh_len);
2570 nfsm_name_len_check(error, nd, tolen);
2580 saved_cred = nd->nd_cr;
2594 error = nfsrv_namei(nd, ctx, &fromni, &fnfh, &fdirp, &fnx, &fnxo);
2601 if (nd->nd_vers == NFS_VER3) {
2612 if (nd->nd_cr != saved_cred) {
2614 kauth_cred_unref(&nd->nd_cr);
2615 ctx->vc_ucred = nd->nd_cr = saved_cred;
2633 error = nfsrv_namei(nd, ctx, &toni, &tnfh, &tdirp, &tnx, &tnxo);
2639 if (nd->nd_vers == NFS_VER3)
2656 nfsrv_update_user_stat(tnx, nd, saved_uid, 1, 0, 0);
2662 if (nd->nd_vers == NFS_VER3) {
2675 if (nd->nd_vers == NFS_VER3)
2681 if (nd->nd_vers == NFS_VER3)
2688 if (nd->nd_vers == NFS_VER3)
2696 if (nd->nd_vers == NFS_VER3)
2757 if (nd->nd_vers == NFS_VER3)
2779 if (nd->nd_vers == NFS_VER3)
2786 if (nd->nd_vers == NFS_VER3)
2902 if (nd->nd_cr != saved_cred) {
2904 kauth_cred_unref(&nd->nd_cr);
2905 ctx->vc_ucred = nd->nd_cr = saved_cred;
3045 nfsm_srv_vattr_init(&fdpostattr, nd->nd_vers);
3051 nfsm_srv_vattr_init(&tdpostattr, nd->nd_vers);
3059 nd->nd_repstat = error;
3060 error = nfsrv_rephead(nd, slp, &nmrep, 2 * NFSX_WCCDATA(nd->nd_vers));
3063 nfsmout_on_status(nd, error);
3064 if (nd->nd_vers == NFS_VER3) {
3065 nfsm_chain_add_wcc_data(error, nd, &nmrep,
3067 nfsm_chain_add_wcc_data(error, nd, &nmrep,
3120 struct nfsrv_descript *nd,
3138 nmreq = &nd->nd_nmreq;
3141 nfsm_chain_get_fh_ptr(error, nmreq, nd->nd_vers, nfh.nfh_fhp, nfh.nfh_len);
3142 nfsm_chain_get_fh_ptr(error, nmreq, nd->nd_vers, dnfh.nfh_fhp, dnfh.nfh_len);
3144 nfsm_name_len_check(error, nd, len);
3146 error = nfsrv_fhtovp(&nfh, nd, &vp, &nx, &nxo);
3153 nfsrv_update_user_stat(nx, nd, kauth_cred_getuid(nd->nd_cr), 1, 0, 0);
3155 error = nfsrv_credcheck(nd, ctx, nx, nxo);
3175 error = nfsrv_namei(nd, ctx, &ni, &dnfh, &dirp, &nx, &nxo);
3177 if (nd->nd_vers == NFS_VER3) {
3236 if (nd->nd_vers == NFS_VER3) {
3241 nfsm_srv_vattr_init(&dpostattr, nd->nd_vers);
3251 nd->nd_repstat = error;
3252 error = nfsrv_rephead(nd, slp, &nmrep, NFSX_POSTOPATTR(nd->nd_vers) + NFSX_WCCDATA(nd->nd_vers));
3255 nfsmout_on_status(nd, error);
3256 if (nd->nd_vers == NFS_VER3) {
3257 nfsm_chain_add_postop_attr(error, nd, &nmrep, attrerr, &attr);
3258 nfsm_chain_add_wcc_data(error, nd, &nmrep,
3277 struct nfsrv_descript *nd,
3299 nmreq = &nd->nd_nmreq;
3304 saved_uid = kauth_cred_getuid(nd->nd_cr);
3309 nfsm_chain_get_fh_ptr(error, nmreq, nd->nd_vers, nfh.nfh_fhp, nfh.nfh_len);
3311 nfsm_name_len_check(error, nd, len);
3321 error = nfsrv_namei(nd, ctx, &ni, &nfh, &dirp, &nx, &nxo);
3327 nfsrv_update_user_stat(nx, nd, saved_uid, 1, 0, 0);
3331 if (nd->nd_vers == NFS_VER3) {
3347 if (nd->nd_vers == NFS_VER3)
3348 error = nfsm_chain_get_sattr(nd, nmreq, vap);
3350 if (!error && (((nd->nd_vers == NFS_VER2) && (linkdatalen > NFS_MAXPATHLEN)) ||
3351 ((nd->nd_vers == NFS_VER3) && (linkdatalen > MAXPATHLEN))))
3364 if (!error && (nd->nd_vers == NFS_VER2))
3365 error = nfsm_chain_get_sattr(nd, nmreq, vap);
3394 if (!error && (nd->nd_vers == NFS_VER3)) {
3446 nfsm_srv_vattr_init(&dpostattr, nd->nd_vers);
3454 nd->nd_repstat = error;
3455 error = nfsrv_rephead(nd, slp, &nmrep, NFSX_SRVFH(nd->nd_vers, &nfh) +
3456 NFSX_POSTOPATTR(nd->nd_vers) + NFSX_WCCDATA(nd->nd_vers));
3459 nfsmout_on_status(nd, error);
3460 if (nd->nd_vers == NFS_VER3) {
3461 if (!nd->nd_repstat) {
3463 nfsm_chain_add_postop_attr(error, nd, &nmrep, postattrerr, &postattr);
3465 nfsm_chain_add_wcc_data(error, nd, &nmrep,
3498 struct nfsrv_descript *nd,
3518 nmreq = &nd->nd_nmreq;
3521 saved_uid = kauth_cred_getuid(nd->nd_cr);
3526 nfsm_chain_get_fh_ptr(error, nmreq, nd->nd_vers, nfh.nfh_fhp, nfh.nfh_len);
3528 nfsm_name_len_check(error, nd, len);
3538 error = nfsrv_namei(nd, ctx, &ni, &nfh, &dirp, &nx, &nxo);
3544 nfsrv_update_user_stat(nx, nd, saved_uid, 1, 0, 0);
3548 if (nd->nd_vers == NFS_VER3) {
3564 error = nfsm_chain_get_sattr(nd, nmreq, vap);
3640 error = nfsrv_vptofh(nx, nd->nd_vers, NULL, vp, ctx, &nfh);
3642 nfsm_srv_vattr_init(&postattr, nd->nd_vers);
3644 if (nd->nd_vers == NFS_VER2)
3660 nfsm_srv_vattr_init(&dpostattr, nd->nd_vers);
3668 nd->nd_repstat = error;
3669 error = nfsrv_rephead(nd, slp, &nmrep, NFSX_SRVFH(nd->nd_vers, &nfh) +
3670 NFSX_POSTOPATTR(nd->nd_vers) + NFSX_WCCDATA(nd->nd_vers));
3673 nfsmout_on_status(nd, error);
3674 if (nd->nd_vers == NFS_VER3) {
3675 if (!nd->nd_repstat) {
3677 nfsm_chain_add_postop_attr(error, nd, &nmrep, postattrerr, &postattr);
3679 nfsm_chain_add_wcc_data(error, nd, &nmrep,
3684 error = nfsm_chain_add_fattr(nd, &nmrep, &postattr);
3712 struct nfsrv_descript *nd,
3730 saved_uid = kauth_cred_getuid(nd->nd_cr);
3731 nmreq = &nd->nd_nmreq;
3736 nfsm_chain_get_fh_ptr(error, nmreq, nd->nd_vers, nfh.nfh_fhp, nfh.nfh_len);
3738 nfsm_name_len_check(error, nd, len);
3748 error = nfsrv_namei(nd, ctx, &ni, &nfh, &dirp, &nx, &nxo);
3754 nfsrv_update_user_stat(nx, nd, saved_uid, 1, 0, 0);
3758 if (nd->nd_vers == NFS_VER3) {
3830 nfsm_srv_vattr_init(&dpostattr, nd->nd_vers);
3838 nd->nd_repstat = error;
3839 error = nfsrv_rephead(nd, slp, &nmrep, NFSX_WCCDATA(nd->nd_vers));
3842 nfsmout_on_status(nd, error);
3843 if (nd->nd_vers == NFS_VER3)
3844 nfsm_chain_add_wcc_data(error, nd, &nmrep,
3886 struct nfsrv_descript *nd,
3909 nmreq = &nd->nd_nmreq;
3916 nfsm_chain_get_fh_ptr(error, nmreq, nd->nd_vers, nfh.nfh_fhp, nfh.nfh_len);
3917 if (nd->nd_vers == NFS_VER3) {
3928 xfer = NFSRV_NDMAXDATA(nd);
3933 error = nfsrv_fhtovp(&nfh, nd, &vp, &nx, &nxo);
3940 nfsrv_update_user_stat(nx, nd, kauth_cred_getuid(nd->nd_cr), 1, 0, 0);
3942 error = nfsrv_credcheck(nd, ctx, nx, nxo);
3945 if (nxo->nxo_flags & NX_MANGLEDNAMES || nd->nd_vers == NFS_VER2)
3948 if ((nd->nd_vers == NFS_VER2) || (nxo->nxo_flags & NX_32BITCLIENTS))
3951 if (nd->nd_vers == NFS_VER3) {
3976 if (nd->nd_vers == NFS_VER3) {
3991 nd->nd_repstat = error;
3992 error = nfsrv_rephead(nd, slp, &nmrep, NFSX_POSTOPATTR(nd->nd_vers) +
3993 NFSX_COOKIEVERF(nd->nd_vers) + 2 * NFSX_UNSIGNED);
3996 nfsmout_on_status(nd, error);
3997 if (nd->nd_vers == NFS_VER3) {
3998 nfsm_chain_add_postop_attr(error, nd, &nmrep, attrerr, &attr);
4030 nd->nd_repstat = error;
4031 error = nfsrv_rephead(nd, slp, &nmrep, NFSX_POSTOPATTR(nd->nd_vers) +
4032 NFSX_COOKIEVERF(nd->nd_vers) + siz);
4035 nfsmout_on_status(nd, error);
4039 if (nd->nd_vers == NFS_VER3) {
4041 nfsm_chain_add_postop_attr(error, nd, &nmrep, attrerr, &attr);
4050 if ((nd->nd_vers == NFS_VER2) && (nlen > NFS_MAXNAMLEN))
4054 if (nd->nd_vers == NFS_VER3)
4062 if (nd->nd_vers == NFS_VER3) {
4068 if (nd->nd_vers == NFS_VER3) {
4090 nd->nd_repstat = error;
4091 error = nfsrv_rephead(nd, slp, &nmrep, NFSX_POSTOPATTR(nd->nd_vers));
4094 nfsmout_on_status(nd, error);
4095 if (nd->nd_vers == NFS_VER3)
4096 nfsm_chain_add_postop_attr(error, nd, &nmrep, attrerr, &attr);
4108 struct nfsrv_descript *nd,
4131 nmreq = &nd->nd_nmreq;
4139 nfsm_chain_get_fh_ptr(error, nmreq, nd->nd_vers, dnfh.nfh_fhp, dnfh.nfh_len);
4147 xfer = NFSRV_NDMAXDATA(nd);
4156 error = nfsrv_fhtovp(&dnfh, nd, &vp, &nx, &nxo);
4163 nfsrv_update_user_stat(nx, nd, kauth_cred_getuid(nd->nd_cr), 1, 0, 0);
4165 error = nfsrv_credcheck(nd, ctx, nx, nxo);
4210 nd->nd_repstat = error;
4211 error = nfsrv_rephead(nd, slp, &nmrep, NFSX_V3POSTOPATTR +
4215 nfsmout_on_status(nd, error);
4216 nfsm_chain_add_postop_attr(error, nd, &nmrep, attrerr, &attr);
4255 nd->nd_repstat = error;
4256 error = nfsrv_rephead(nd, slp, &nmrep, maxcount);
4259 nfsmout_on_status(nd, error);
4263 nfsm_chain_add_postop_attr(error, nd, &nmrep, attrerr, &attr);
4313 nfsm_chain_add_postop_attr(error, nd, &nmrep, (gotattr ? 0 : ENOENT), vap);
4333 nd->nd_repstat = error;
4334 error = nfsrv_rephead(nd, slp, &nmrep, NFSX_V3POSTOPATTR);
4337 nfsmout_on_status(nd, error);
4338 nfsm_chain_add_postop_attr(error, nd, &nmrep, attrerr, &attr);
4355 struct nfsrv_descript *nd,
4371 nmreq = &nd->nd_nmreq;
4385 error = nfsrv_fhtovp(&nfh, nd, &vp, &nx, &nxo);
4392 nfsrv_update_user_stat(nx, nd, kauth_cred_getuid(nd->nd_cr), 1, 0, 0);
4394 error = nfsrv_credcheck(nd, ctx, nx, nxo);
4410 nd->nd_repstat = error;
4411 error = nfsrv_rephead(nd, slp, &nmrep, NFSX_V3WCCDATA + NFSX_V3WRITEVERF);
4414 nfsmout_on_status(nd, error);
4415 nfsm_chain_add_wcc_data(error, nd, &nmrep,
4417 if (!nd->nd_repstat) {
4435 struct nfsrv_descript *nd,
4452 nmreq = &nd->nd_nmreq;
4457 nfsm_chain_get_fh_ptr(error, nmreq, nd->nd_vers, nfh.nfh_fhp, nfh.nfh_len);
4459 error = nfsrv_fhtovp(&nfh, nd, &vp, &nx, &nxo);
4466 nfsrv_update_user_stat(nx, nd, kauth_cred_getuid(nd->nd_cr), 1, 0, 0);
4468 error = nfsrv_credcheck(nd, ctx, nx, nxo);
4479 if (nd->nd_vers == NFS_VER3) {
4480 nfsm_srv_vattr_init(&attr, nd->nd_vers);
4489 nd->nd_repstat = error;
4490 error = nfsrv_rephead(nd, slp, &nmrep, NFSX_POSTOPATTR(nd->nd_vers) + NFSX_STATFS(nd->nd_vers));
4493 nfsmout_on_status(nd, error);
4494 if (nd->nd_vers == NFS_VER3)
4495 nfsm_chain_add_postop_attr(error, nd, &nmrep, attrerr, &attr);
4496 nfsmout_if(nd->nd_repstat);
4498 if (nd->nd_vers == NFS_VER3) {
4527 struct nfsrv_descript *nd,
4542 nmreq = &nd->nd_nmreq;
4546 nfsm_chain_get_fh_ptr(error, nmreq, nd->nd_vers, nfh.nfh_fhp, nfh.nfh_len);
4548 error = nfsrv_fhtovp(&nfh, nd, &vp, &nx, &nxo);
4555 nfsrv_update_user_stat(nx, nd, kauth_cred_getuid(nd->nd_cr), 1, 0, 0);
4557 error = nfsrv_credcheck(nd, ctx, nx, nxo);
4568 nd->nd_repstat = error;
4569 error = nfsrv_rephead(nd, slp, &nmrep, NFSX_V3POSTOPATTR + NFSX_V3FSINFO);
4572 nfsmout_on_status(nd, error);
4573 nfsm_chain_add_postop_attr(error, nd, &nmrep, attrerr, &attr);
4574 nfsmout_if(nd->nd_repstat);
4615 struct nfsrv_descript *nd,
4631 nmreq = &nd->nd_nmreq;
4635 nfsm_chain_get_fh_ptr(error, nmreq, nd->nd_vers, nfh.nfh_fhp, nfh.nfh_len);
4637 error = nfsrv_fhtovp(&nfh, nd, &vp, &nx, &nxo);
4644 nfsrv_update_user_stat(nx, nd, kauth_cred_getuid(nd->nd_cr), 1, 0, 0);
4646 error = nfsrv_credcheck(nd, ctx, nx, nxo);
4669 nd->nd_repstat = error;
4670 error = nfsrv_rephead(nd, slp, &nmrep, NFSX_V3POSTOPATTR + NFSX_V3PATHCONF);
4673 nfsmout_on_status(nd, error);
4674 nfsm_chain_add_postop_attr(error, nd, &nmrep, attrerr, &attr);
4675 nfsmout_if(nd->nd_repstat);
4699 struct nfsrv_descript *nd,
4710 if (nd->nd_gss_context)
4711 return(nfs_gss_svc_ctx_init(nd, slp, mrepp));
4716 nd->nd_repstat = error;
4717 error = nfsrv_rephead(nd, slp, &nmrep, 0);
4735 struct nfsrv_descript *nd,
4745 if (nd->nd_repstat)
4746 error = nd->nd_repstat;
4751 nd->nd_repstat = error;
4752 error = nfsrv_rephead(nd, slp, &nmrep, 0);
4764 int (*nfsrv_procs[NFS_NPROCS])(struct nfsrv_descript *nd,