• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /macosx-10.5.8/xnu-1228.15.4/bsd/nfs/

Lines Matching refs:nd

240  *      struct nfsrv_descript *nd - the NFS request descriptor
248 * provided in nd->nd_nmreq.
261 struct nfsrv_descript *nd,
279 nmreq = &nd->nd_nmreq;
287 error = nfsrv_fhtovp(&nfh, nd, &vp, &nx, &nxo);
294 nfsrv_update_user_stat(nx, nd, kauth_cred_getuid(nd->nd_cr), 1, 0, 0);
296 error = nfsrv_credcheck(nd, ctx, nx, nxo);
373 nd->nd_repstat = error;
374 error = nfsrv_rephead(nd, slp, &nmrep, NFSX_POSTOPATTR(NFS_VER3) + NFSX_UNSIGNED);
377 nfsmout_on_status(nd, error);
378 nfsm_chain_add_postop_attr(error, nd, &nmrep, attrerr, &vattr);
379 if (!nd->nd_repstat)
397 struct nfsrv_descript *nd,
411 nmreq = &nd->nd_nmreq;
416 nfsm_chain_get_fh_ptr(error, nmreq, nd->nd_vers, nfh.nfh_fhp, nfh.nfh_len);
418 error = nfsrv_fhtovp(&nfh, nd, &vp, &nx, &nxo);
425 nfsrv_update_user_stat(nx, nd, kauth_cred_getuid(nd->nd_cr), 1, 0, 0);
427 error = nfsrv_credcheck(nd, ctx, nx, nxo);
430 nfsm_srv_vattr_init(&vattr, nd->nd_vers);
437 nd->nd_repstat = error;
438 error = nfsrv_rephead(nd, slp, &nmrep, NFSX_FATTR(nd->nd_vers));
441 nfsmout_if(nd->nd_repstat);
442 error = nfsm_chain_add_fattr(nd, &nmrep, &vattr);
459 struct nfsrv_descript *nd,
479 nmreq = &nd->nd_nmreq;
484 nfsm_chain_get_fh_ptr(error, nmreq, nd->nd_vers, nfh.nfh_fhp, nfh.nfh_len);
488 error = nfsm_chain_get_sattr(nd, nmreq, vap);
489 if (nd->nd_vers == NFS_VER3) {
492 nfsm_chain_get_time(error, nmreq, nd->nd_vers, guard.tv_sec, guard.tv_nsec);
500 saved_uid = kauth_cred_getuid(nd->nd_cr);
505 error = nfsrv_fhtovp(&nfh, nd, &vp, &nx, &nxo);
512 nfsrv_update_user_stat(nx, nd, saved_uid, 1, 0, 0);
514 error = nfsrv_credcheck(nd, ctx, nx, nxo);
517 if (nd->nd_vers == NFS_VER3) {
533 if ((vap->va_uid == saved_uid) && (kauth_cred_getuid(nd->nd_cr) != saved_uid)) {
535 VATTR_SET(vap, va_uid, kauth_cred_getuid(nd->nd_cr));
536 if (kauth_cred_ismember_gid(nd->nd_cr, vap->va_gid, &ismember) || !ismember)
537 VATTR_SET(vap, va_gid, kauth_cred_getgid(nd->nd_cr));
549 if (!error || (nd->nd_vers == NFS_VER3)) {
550 nfsm_srv_vattr_init(&postattr, nd->nd_vers);
561 nd->nd_repstat = error;
562 error = nfsrv_rephead(nd, slp, &nmrep, NFSX_WCCORFATTR(nd->nd_vers));
565 nfsmout_on_status(nd, error);
566 if (nd->nd_vers == NFS_VER3)
567 nfsm_chain_add_wcc_data(error, nd, &nmrep,
570 error = nfsm_chain_add_fattr(nd, &nmrep, &postattr);
585 struct nfsrv_descript *nd,
603 nmreq = &nd->nd_nmreq;
605 saved_uid = kauth_cred_getuid(nd->nd_cr);
607 nfsm_chain_get_fh_ptr(error, nmreq, nd->nd_vers, dnfh.nfh_fhp, dnfh.nfh_len);
609 nfsm_name_len_check(error, nd, len);
617 error = nfsrv_namei(nd, ctx, &ni, &dnfh, &dirp, &nx, &nxo);
623 nfsrv_update_user_stat(nx, nd, saved_uid, 1, 0, 0);
628 if (nd->nd_vers == NFS_VER3) {
639 error = nfsrv_vptofh(nx, nd->nd_vers, (isdotdot ? &dnfh : NULL), vp, ctx, &nfh);
641 nfsm_srv_vattr_init(vap, nd->nd_vers);
648 nd->nd_repstat = error;
649 error = nfsrv_rephead(nd, slp, &nmrep, NFSX_SRVFH(nd->nd_vers, &nfh) +
650 NFSX_POSTOPORFATTR(nd->nd_vers) + NFSX_POSTOPATTR(nd->nd_vers));
653 if (nd->nd_repstat) {
654 if (nd->nd_vers == NFS_VER3)
655 nfsm_chain_add_postop_attr(error, nd, &nmrep, dirattrerr, &dirattr);
658 nfsm_chain_add_fh(error, &nmrep, nd->nd_vers, nfh.nfh_fhp, nfh.nfh_len);
659 if (nd->nd_vers == NFS_VER3) {
660 nfsm_chain_add_postop_attr(error, nd, &nmrep, attrerr, vap);
661 nfsm_chain_add_postop_attr(error, nd, &nmrep, dirattrerr, &dirattr);
663 error = nfsm_chain_add_fattr(nd, &nmrep, vap);
679 struct nfsrv_descript *nd,
699 nmreq = &nd->nd_nmreq;
705 nfsm_chain_get_fh_ptr(error, nmreq, nd->nd_vers, nfh.nfh_fhp, nfh.nfh_len);
726 error = nfsrv_fhtovp(&nfh, nd, &vp, &nx, &nxo);
733 nfsrv_update_user_stat(nx, nd, kauth_cred_getuid(nd->nd_cr), 1, 0, 0);
735 error = nfsrv_credcheck(nd, ctx, nx, nxo);
739 if (nd->nd_vers == NFS_VER3)
750 if (nd->nd_vers == NFS_VER3) {
764 nd->nd_repstat = error;
765 error = nfsrv_rephead(nd, slp, &nmrep, NFSX_POSTOPATTR(nd->nd_vers) + NFSX_UNSIGNED);
768 nfsmout_on_status(nd, error);
769 if (nd->nd_vers == NFS_VER3)
770 nfsm_chain_add_postop_attr(error, nd, &nmrep, attrerr, &vattr);
771 if (error || nd->nd_repstat) {
806 struct nfsrv_descript *nd,
828 nmreq = &nd->nd_nmreq;
833 saved_uid = kauth_cred_getuid(nd->nd_cr);
835 nfsm_chain_get_fh_ptr(error, nmreq, nd->nd_vers, nfh.nfh_fhp, nfh.nfh_len);
837 if (nd->nd_vers == NFS_VER3)
842 maxlen = NFS_SRVMAXDATA(nd);
846 error = nfsrv_fhtovp(&nfh, nd, &vp, &nx, &nxo);
852 error = nfsrv_credcheck(nd, ctx, nx, nxo);
856 if (nd->nd_vers == NFS_VER3)
866 nfsm_srv_vattr_init(vap, nd->nd_vers);
904 if (!error || (nd->nd_vers == NFS_VER3)) {
905 nfsm_srv_vattr_init(vap, nd->nd_vers);
907 if (!error && (nd->nd_vers == NFS_VER2))
924 nd->nd_repstat = error;
925 error = nfsrv_rephead(nd, slp, &nmrep, NFSX_POSTOPORFATTR(nd->nd_vers) + 3 * NFSX_UNSIGNED);
928 nfsmout_on_status(nd, error);
929 if (nd->nd_vers == NFS_VER3)
930 nfsm_chain_add_postop_attr(error, nd, &nmrep, attrerr, vap);
931 if (error || nd->nd_repstat) {
935 if (nd->nd_vers == NFS_VER3) {
939 error = nfsm_chain_add_fattr(nd, &nmrep, vap);
952 nfsrv_update_user_stat(nx, nd, saved_uid, 1, len, 0);
1144 struct nfsrv_descript *nd,
1165 if (nd->nd_nmreq.nmc_mhead == NULL) {
1172 saved_uid = kauth_cred_getuid(nd->nd_cr);
1173 nmreq = &nd->nd_nmreq;
1178 nfsm_chain_get_fh_ptr(error, nmreq, nd->nd_vers, nfh.nfh_fhp, nfh.nfh_len);
1180 if (nd->nd_vers == NFS_VER3) {
1211 error = nfsrv_fhtovp(&nfh, nd, &vp, &nx, &nxo);
1217 error = nfsrv_credcheck(nd, ctx, nx, nxo);
1220 if (nd->nd_vers == NFS_VER3) {
1225 if (nd->nd_vers == NFS_VER3)
1266 nfsrv_update_user_stat(nx, nd, saved_uid, 1, 0, len);
1273 nfsm_srv_vattr_init(&postattr, nd->nd_vers);
1275 if (!error && (nd->nd_vers == NFS_VER2))
1282 nd->nd_repstat = error;
1283 error = nfsrv_rephead(nd, slp, &nmrep, NFSX_PREOPATTR(nd->nd_vers) +
1284 NFSX_POSTOPORFATTR(nd->nd_vers) + 2 * NFSX_UNSIGNED +
1285 NFSX_WRITEVERF(nd->nd_vers));
1288 nfsmout_on_status(nd, error);
1289 if (nd->nd_vers == NFS_VER3) {
1290 nfsm_chain_add_wcc_data(error, nd, &nmrep,
1292 nfsmout_if(error || nd->nd_repstat);
1303 error = nfsm_chain_add_fattr(nd, &nmrep, &postattr);
1347 struct nfsrv_descript *nd, *wp, *owp, *swp;
1370 nd = *ndp;
1372 nmreq = &nd->nd_nmreq;
1373 LIST_INIT(&nd->nd_coalesce);
1374 nd->nd_mrep = NULL;
1375 nd->nd_stable = NFS_WRITE_FILESYNC;
1378 nd->nd_time = cur_usec +
1379 ((nd->nd_vers == NFS_VER3) ? nfsrv_wg_delay_v3 : nfsrv_wg_delay);
1382 nfsm_chain_get_fh_ptr(error, nmreq, nd->nd_vers, nd->nd_fh.nfh_fhp, nd->nd_fh.nfh_len);
1385 if (nd->nd_vers == NFS_VER3) {
1386 nfsm_chain_get_64(error, nmreq, nd->nd_off);
1388 nfsm_chain_get_32(error, nmreq, nd->nd_stable);
1391 nfsm_chain_get_32(error, nmreq, nd->nd_off);
1394 nd->nd_stable = NFS_WRITE_UNSTABLE;
1396 nfsm_chain_get_32(error, nmreq, nd->nd_len);
1398 nd->nd_eoff = nd->nd_off + nd->nd_len;
1400 if (nd->nd_len > 0) {
1401 error = nfsm_chain_trim_data(nmreq, nd->nd_len, &mlen);
1407 if ((nd->nd_len > NFS_MAXDATA) || (nd->nd_len < 0) || (mlen < nd->nd_len)) {
1410 nd->nd_repstat = error;
1411 error = nfsrv_rephead(nd, slp, &nmrep, NFSX_WCCDATA(nd->nd_vers));
1413 nd->nd_mrep = nmrep.nmc_mhead;
1414 if (nd->nd_vers == NFS_VER3)
1415 nfsm_chain_add_wcc_data(error, nd, &nmrep,
1419 nd->nd_time = 1;
1428 while (wp && wp->nd_time < nd->nd_time) {
1433 LIST_INSERT_AFTER(owp, nd, nd_tq);
1435 LIST_INSERT_HEAD(&slp->ns_tq, nd, nd_tq);
1438 wpp = NWDELAYHASH(slp, nd->nd_fh.nfh_fid);
1441 while (wp && !nfsrv_fhmatch(&nd->nd_fh, &wp->nd_fh)) {
1445 while (wp && (wp->nd_off < nd->nd_off) &&
1446 nfsrv_fhmatch(&nd->nd_fh, &wp->nd_fh)) {
1451 LIST_INSERT_AFTER(owp, nd, nd_hash);
1456 for(; nd && NFSW_CONTIG(owp, nd); nd = wp) {
1457 wp = nd->nd_hash.le_next;
1458 if (NFSW_SAMECRED(owp, nd))
1459 nfsrv_wg_coalesce(owp, nd);
1462 LIST_INSERT_HEAD(wpp, nd, nd_hash);
1476 for (nd = slp->ns_tq.lh_first; nd; nd = owp) {
1477 owp = nd->nd_tq.le_next;
1478 if (nd->nd_time > cur_usec)
1480 if (nd->nd_mrep)
1482 LIST_REMOVE(nd, nd_tq);
1483 LIST_REMOVE(nd, nd_hash);
1484 nmreq = &nd->nd_nmreq;
1489 saved_uid = kauth_cred_getuid(nd->nd_cr);
1491 error = nfsrv_fhtovp(&nd->nd_fh, nd, &vp, &nx, &nxo);
1496 error = nfsrv_credcheck(nd, ctx, nx, nxo);
1501 if (nd->nd_vers == NFS_VER3) {
1506 if (nd->nd_vers == NFS_VER3)
1516 if (nd->nd_stable == NFS_WRITE_UNSTABLE)
1518 else if (nd->nd_stable == NFS_WRITE_DATASYNC)
1523 if (!error && ((nd->nd_eoff - nd->nd_off) > 0)) {
1530 uiop = uio_createwithbuffer(i, nd->nd_off, UIO_SYSSPACE,
1542 NFSStatAdd64(&nx->nx_stats.bytes_written, nd->nd_len);
1544 nfsrv_update_user_stat(nx, nd, saved_uid, 1, 0, nd->nd_len);
1557 nfsm_srv_vattr_init(&postattr, nd->nd_vers);
1566 swp = nd;
1569 nd->nd_repstat = error;
1570 error = nfsrv_rephead(nd, slp, &nmrep, NFSX_WCCDATA(nd->nd_vers));
1571 if (!error && (nd->nd_vers == NFS_VER3)) {
1572 nfsm_chain_add_wcc_data(error, nd, &nmrep,
1576 nd->nd_repstat = error;
1577 error = nfsrv_rephead(nd, slp, &nmrep, NFSX_PREOPATTR(nd->nd_vers) +
1578 NFSX_POSTOPORFATTR(nd->nd_vers) + 2 * NFSX_UNSIGNED +
1579 NFSX_WRITEVERF(nd->nd_vers));
1580 if (!error && (nd->nd_vers == NFS_VER3)) {
1581 nfsm_chain_add_wcc_data(error, nd, &nmrep,
1583 nfsm_chain_add_32(error, &nmrep, nd->nd_len);
1584 nfsm_chain_add_32(error, &nmrep, nd->nd_stable);
1589 error = nfsm_chain_add_fattr(nd, &nmrep, &postattr);
1594 nd->nd_mrep = nmrep.nmc_mhead;
1600 if (nd != swp) {
1601 nd->nd_time = 1;
1602 LIST_INSERT_HEAD(&slp->ns_tq, nd, nd_tq);
1604 nd = swp->nd_coalesce.lh_first;
1605 if (nd) {
1606 LIST_REMOVE(nd, nd_tq);
1608 } while (nd);
1617 for (nd = slp->ns_tq.lh_first; nd; nd = nd->nd_tq.le_next)
1618 if (nd->nd_mrep) {
1619 LIST_REMOVE(nd, nd_tq);
1620 *mrepp = nd->nd_mrep;
1621 *ndp = nd;
1654 * Coalesce the write request nd into owp. To do this we must:
1655 * - remove nd from the queues
1656 * - merge nd->nd_nmreq into owp->nd_nmreq
1658 * - put nd on owp's nd_coalesce list
1661 nfsrv_wg_coalesce(struct nfsrv_descript *owp, struct nfsrv_descript *nd)
1667 LIST_REMOVE(nd, nd_hash);
1668 LIST_REMOVE(nd, nd_tq);
1669 if (owp->nd_eoff < nd->nd_eoff) {
1670 overlap = owp->nd_eoff - nd->nd_off;
1674 mbuf_adj(nd->nd_nmreq.nmc_mhead, overlap);
1678 error = mbuf_setnext(mp, nd->nd_nmreq.nmc_mhead);
1681 owp->nd_eoff = nd->nd_eoff;
1683 mbuf_freem(nd->nd_nmreq.nmc_mhead);
1685 nd->nd_nmreq.nmc_mhead = NULL;
1686 nd->nd_nmreq.nmc_mcur = NULL;
1687 if (nd->nd_stable == NFS_WRITE_FILESYNC)
1689 else if ((nd->nd_stable == NFS_WRITE_DATASYNC) &&
1692 LIST_INSERT_HEAD(&owp->nd_coalesce, nd, nd_tq);
1695 * If nd had anything else coalesced into it, transfer them
1698 while ((p = nd->nd_coalesce.lh_first)) {
1781 struct nfsrv_descript *nd,
1803 nmreq = &nd->nd_nmreq;
1814 saved_uid = kauth_cred_getuid(nd->nd_cr);
1816 nfsm_chain_get_fh_ptr(error, nmreq, nd->nd_vers, nfh.nfh_fhp, nfh.nfh_len);
1818 nfsm_name_len_check(error, nd, len);
1825 error = nfsrv_namei(nd, ctx, &ni, &nfh, &dirp, &nx, &nxo);
1831 nfsrv_update_user_stat(nx, nd, saved_uid, 1, 0, 0);
1835 if (nd->nd_vers == NFS_VER3) {
1853 if (nd->nd_vers == NFS_VER3) {
1863 error = nfsm_chain_get_sattr(nd, nmreq, vap);
1876 error = nfsm_chain_get_sattr(nd, nmreq, vap);
1908 if ((vap->va_uid == saved_uid) && (kauth_cred_getuid(nd->nd_cr) != saved_uid)) {
1910 VATTR_SET(vap, va_uid, kauth_cred_getuid(nd->nd_cr));
1911 if (kauth_cred_ismember_gid(nd->nd_cr, vap->va_gid, &ismember) || !ismember)
1912 VATTR_SET(vap, va_gid, kauth_cred_getgid(nd->nd_cr));
1987 error = suser(nd->nd_cr, NULL);
2049 error = nfsrv_vptofh(nx, nd->nd_vers, NULL, vp, ctx, &nfh);
2051 nfsm_srv_vattr_init(&postattr, nd->nd_vers);
2053 if (nd->nd_vers == NFS_VER2)
2060 if (nd->nd_vers == NFS_VER3) {
2072 nd->nd_repstat = error;
2073 error = nfsrv_rephead(nd, slp, &nmrep, NFSX_SRVFH(nd->nd_vers, &nfh) +
2074 NFSX_FATTR(nd->nd_vers) + NFSX_WCCDATA(nd->nd_vers));
2077 nfsmout_on_status(nd, error);
2078 if (nd->nd_vers == NFS_VER3) {
2079 if (!nd->nd_repstat) {
2081 nfsm_chain_add_postop_attr(error, nd, &nmrep, postattrerr, &postattr);
2083 nfsm_chain_add_wcc_data(error, nd, &nmrep,
2088 error = nfsm_chain_add_fattr(nd, &nmrep, &postattr);
2117 struct nfsrv_descript *nd,
2139 nmreq = &nd->nd_nmreq;
2148 saved_uid = kauth_cred_getuid(nd->nd_cr);
2152 nfsm_name_len_check(error, nd, len);
2159 error = nfsrv_namei(nd, ctx, &ni, &nfh, &dirp, &nx, &nxo);
2165 nfsrv_update_user_stat(nx, nd, saved_uid, 1, 0, 0);
2189 error = nfsm_chain_get_sattr(nd, nmreq, vap);
2211 if ((vap->va_uid == saved_uid) && (kauth_cred_getuid(nd->nd_cr) != saved_uid)) {
2213 VATTR_SET(vap, va_uid, kauth_cred_getuid(nd->nd_cr));
2214 if (kauth_cred_ismember_gid(nd->nd_cr, vap->va_gid, &ismember) || !ismember)
2215 VATTR_SET(vap, va_gid, kauth_cred_getgid(nd->nd_cr));
2261 if (vtyp != VFIFO && (error = suser(nd->nd_cr, (u_short *)0)))
2315 nd->nd_repstat = error;
2316 error = nfsrv_rephead(nd, slp, &nmrep, NFSX_SRVFH(NFS_VER3, &nfh) +
2320 nfsmout_on_status(nd, error);
2321 if (!nd->nd_repstat) {
2323 nfsm_chain_add_postop_attr(error, nd, &nmrep, postattrerr, &postattr);
2325 nfsm_chain_add_wcc_data(error, nd, &nmrep,
2358 struct nfsrv_descript *nd,
2376 saved_uid = kauth_cred_getuid(nd->nd_cr);
2378 nmreq = &nd->nd_nmreq;
2381 nfsm_chain_get_fh_ptr(error, nmreq, nd->nd_vers, nfh.nfh_fhp, nfh.nfh_len);
2383 nfsm_name_len_check(error, nd, len);
2390 error = nfsrv_namei(nd, ctx, &ni, &nfh, &dirp, &nx, &nxo);
2396 nfsrv_update_user_stat(nx, nd, saved_uid, 1, 0, 0);
2400 if (nd->nd_vers == NFS_VER3) {
2465 nfsm_srv_vattr_init(&dpostattr, nd->nd_vers);
2471 nd->nd_repstat = error;
2472 error = nfsrv_rephead(nd, slp, &nmrep, NFSX_WCCDATA(nd->nd_vers));
2475 nfsmout_on_status(nd, error);
2476 if (nd->nd_vers == NFS_VER3)
2477 nfsm_chain_add_wcc_data(error, nd, &nmrep,
2493 struct nfsrv_descript *nd,
2527 saved_uid = kauth_cred_getuid(nd->nd_cr);
2530 nmreq = &nd->nd_nmreq;
2542 nfsm_chain_get_fh_ptr(error, nmreq, nd->nd_vers, fnfh.nfh_fhp, fnfh.nfh_len);
2544 nfsm_name_len_check(error, nd, fromlen);
2550 nfsm_chain_get_fh_ptr(error, nmreq, nd->nd_vers, tnfh.nfh_fhp, tnfh.nfh_len);
2552 nfsm_name_len_check(error, nd, tolen);
2562 saved_cred = nd->nd_cr;
2573 error = nfsrv_namei(nd, ctx, &fromni, &fnfh, &fdirp, &fnx, &fnxo);
2580 if (nd->nd_vers == NFS_VER3) {
2591 if (nd->nd_cr != saved_cred) {
2593 kauth_cred_unref(&nd->nd_cr);
2594 ctx->vc_ucred = nd->nd_cr = saved_cred;
2609 error = nfsrv_namei(nd, ctx, &toni, &tnfh, &tdirp, &tnx, &tnxo);
2615 if (nd->nd_vers == NFS_VER3)
2632 nfsrv_update_user_stat(tnx, nd, saved_uid, 1, 0, 0);
2638 if (nd->nd_vers == NFS_VER3) {
2651 if (nd->nd_vers == NFS_VER3)
2657 if (nd->nd_vers == NFS_VER3)
2664 if (nd->nd_vers == NFS_VER3)
2672 if (nd->nd_vers == NFS_VER3)
2733 if (nd->nd_vers == NFS_VER3)
2755 if (nd->nd_vers == NFS_VER3)
2762 if (nd->nd_vers == NFS_VER3)
2878 if (nd->nd_cr != saved_cred) {
2880 kauth_cred_unref(&nd->nd_cr);
2881 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);
3172 error = nfsrv_namei(nd, ctx, &ni, &dnfh, &dirp, &nx, &nxo);
3174 if (nd->nd_vers == NFS_VER3) {
3232 if (nd->nd_vers == NFS_VER3) {
3237 nfsm_srv_vattr_init(&dpostattr, nd->nd_vers);
3247 nd->nd_repstat = error;
3248 error = nfsrv_rephead(nd, slp, &nmrep, NFSX_POSTOPATTR(nd->nd_vers) + NFSX_WCCDATA(nd->nd_vers));
3251 nfsmout_on_status(nd, error);
3252 if (nd->nd_vers == NFS_VER3) {
3253 nfsm_chain_add_postop_attr(error, nd, &nmrep, attrerr, &attr);
3254 nfsm_chain_add_wcc_data(error, nd, &nmrep,
3273 struct nfsrv_descript *nd,
3295 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);
3318 error = nfsrv_namei(nd, ctx, &ni, &nfh, &dirp, &nx, &nxo);
3324 nfsrv_update_user_stat(nx, nd, saved_uid, 1, 0, 0);
3328 if (nd->nd_vers == NFS_VER3) {
3344 if (nd->nd_vers == NFS_VER3)
3345 error = nfsm_chain_get_sattr(nd, nmreq, vap);
3347 if (!error && (((nd->nd_vers == NFS_VER2) && (linkdatalen > NFS_MAXPATHLEN)) ||
3348 ((nd->nd_vers == NFS_VER3) && (linkdatalen > MAXPATHLEN))))
3361 if (!error && (nd->nd_vers == NFS_VER2))
3362 error = nfsm_chain_get_sattr(nd, nmreq, vap);
3374 if ((vap->va_uid == saved_uid) && (kauth_cred_getuid(nd->nd_cr) != saved_uid)) {
3376 VATTR_SET(vap, va_uid, kauth_cred_getuid(nd->nd_cr));
3377 if (kauth_cred_ismember_gid(nd->nd_cr, vap->va_gid, &ismember) || !ismember)
3378 VATTR_SET(vap, va_gid, kauth_cred_getgid(nd->nd_cr));
3403 if (!error && (nd->nd_vers == NFS_VER3)) {
3447 nfsm_srv_vattr_init(&dpostattr, nd->nd_vers);
3455 nd->nd_repstat = error;
3456 error = nfsrv_rephead(nd, slp, &nmrep, NFSX_SRVFH(nd->nd_vers, &nfh) +
3457 NFSX_POSTOPATTR(nd->nd_vers) + NFSX_WCCDATA(nd->nd_vers));
3460 nfsmout_on_status(nd, error);
3461 if (nd->nd_vers == NFS_VER3) {
3462 if (!nd->nd_repstat) {
3464 nfsm_chain_add_postop_attr(error, nd, &nmrep, postattrerr, &postattr);
3466 nfsm_chain_add_wcc_data(error, nd, &nmrep,
3498 struct nfsrv_descript *nd,
3518 nmreq = &nd->nd_nmreq;
3525 saved_uid = kauth_cred_getuid(nd->nd_cr);
3530 nfsm_chain_get_fh_ptr(error, nmreq, nd->nd_vers, nfh.nfh_fhp, nfh.nfh_len);
3532 nfsm_name_len_check(error, nd, len);
3539 error = nfsrv_namei(nd, ctx, &ni, &nfh, &dirp, &nx, &nxo);
3545 nfsrv_update_user_stat(nx, nd, saved_uid, 1, 0, 0);
3549 if (nd->nd_vers == NFS_VER3) {
3565 error = nfsm_chain_get_sattr(nd, nmreq, vap);
3585 if ((vap->va_uid == saved_uid) && (kauth_cred_getuid(nd->nd_cr) != saved_uid)) {
3587 VATTR_SET(vap, va_uid, kauth_cred_getuid(nd->nd_cr));
3588 if (kauth_cred_ismember_gid(nd->nd_cr, vap->va_gid, &ismember) || !ismember)
3589 VATTR_SET(vap, va_gid, kauth_cred_getgid(nd->nd_cr));
3641 error = nfsrv_vptofh(nx, nd->nd_vers, NULL, vp, ctx, &nfh);
3643 nfsm_srv_vattr_init(&postattr, nd->nd_vers);
3645 if (nd->nd_vers == NFS_VER2)
3661 nfsm_srv_vattr_init(&dpostattr, nd->nd_vers);
3669 nd->nd_repstat = error;
3670 error = nfsrv_rephead(nd, slp, &nmrep, NFSX_SRVFH(nd->nd_vers, &nfh) +
3671 NFSX_POSTOPATTR(nd->nd_vers) + NFSX_WCCDATA(nd->nd_vers));
3674 nfsmout_on_status(nd, error);
3675 if (nd->nd_vers == NFS_VER3) {
3676 if (!nd->nd_repstat) {
3678 nfsm_chain_add_postop_attr(error, nd, &nmrep, postattrerr, &postattr);
3680 nfsm_chain_add_wcc_data(error, nd, &nmrep,
3685 error = nfsm_chain_add_fattr(nd, &nmrep, &postattr);
3713 struct nfsrv_descript *nd,
3731 saved_uid = kauth_cred_getuid(nd->nd_cr);
3732 nmreq = &nd->nd_nmreq;
3737 nfsm_chain_get_fh_ptr(error, nmreq, nd->nd_vers, nfh.nfh_fhp, nfh.nfh_len);
3739 nfsm_name_len_check(error, nd, len);
3746 error = nfsrv_namei(nd, ctx, &ni, &nfh, &dirp, &nx, &nxo);
3752 nfsrv_update_user_stat(nx, nd, saved_uid, 1, 0, 0);
3756 if (nd->nd_vers == NFS_VER3) {
3828 nfsm_srv_vattr_init(&dpostattr, nd->nd_vers);
3836 nd->nd_repstat = error;
3837 error = nfsrv_rephead(nd, slp, &nmrep, NFSX_WCCDATA(nd->nd_vers));
3840 nfsmout_on_status(nd, error);
3841 if (nd->nd_vers == NFS_VER3)
3842 nfsm_chain_add_wcc_data(error, nd, &nmrep,
3884 struct nfsrv_descript *nd,
3907 nmreq = &nd->nd_nmreq;
3914 nfsm_chain_get_fh_ptr(error, nmreq, nd->nd_vers, nfh.nfh_fhp, nfh.nfh_len);
3915 if (nd->nd_vers == NFS_VER3) {
3926 xfer = NFS_SRVMAXDATA(nd);
3931 error = nfsrv_fhtovp(&nfh, nd, &vp, &nx, &nxo);
3938 nfsrv_update_user_stat(nx, nd, kauth_cred_getuid(nd->nd_cr), 1, 0, 0);
3940 error = nfsrv_credcheck(nd, ctx, nx, nxo);
3943 if ((nd->nd_vers == NFS_VER2) || (nxo->nxo_flags & NX_32BITCLIENTS))
3945 if (nd->nd_vers == NFS_VER3) {
3970 if (nd->nd_vers == NFS_VER3) {
3986 nd->nd_repstat = error;
3987 error = nfsrv_rephead(nd, slp, &nmrep, NFSX_POSTOPATTR(nd->nd_vers) +
3988 NFSX_COOKIEVERF(nd->nd_vers) + 2 * NFSX_UNSIGNED);
3991 nfsmout_on_status(nd, error);
3992 if (nd->nd_vers == NFS_VER3) {
3993 nfsm_chain_add_postop_attr(error, nd, &nmrep, attrerr, &attr);
4025 nd->nd_repstat = error;
4026 error = nfsrv_rephead(nd, slp, &nmrep, NFSX_POSTOPATTR(nd->nd_vers) +
4027 NFSX_COOKIEVERF(nd->nd_vers) + siz);
4030 nfsmout_on_status(nd, error);
4034 if (nd->nd_vers == NFS_VER3) {
4036 nfsm_chain_add_postop_attr(error, nd, &nmrep, attrerr, &attr);
4045 if ((nd->nd_vers == NFS_VER2) && (nlen > NFS_MAXNAMLEN))
4049 if (nd->nd_vers == NFS_VER3)
4057 if (nd->nd_vers == NFS_VER3) {
4063 if (nd->nd_vers == NFS_VER3) {
4085 nd->nd_repstat = error;
4086 error = nfsrv_rephead(nd, slp, &nmrep, NFSX_POSTOPATTR(nd->nd_vers));
4089 nfsmout_on_status(nd, error);
4090 if (nd->nd_vers == NFS_VER3)
4091 nfsm_chain_add_postop_attr(error, nd, &nmrep, attrerr, &attr);
4103 struct nfsrv_descript *nd,
4126 nmreq = &nd->nd_nmreq;
4134 nfsm_chain_get_fh_ptr(error, nmreq, nd->nd_vers, dnfh.nfh_fhp, dnfh.nfh_len);
4142 xfer = NFS_SRVMAXDATA(nd);
4151 error = nfsrv_fhtovp(&dnfh, nd, &vp, &nx, &nxo);
4158 nfsrv_update_user_stat(nx, nd, kauth_cred_getuid(nd->nd_cr), 1, 0, 0);
4160 error = nfsrv_credcheck(nd, ctx, nx, nxo);
4203 nd->nd_repstat = error;
4204 error = nfsrv_rephead(nd, slp, &nmrep, NFSX_V3POSTOPATTR +
4208 nfsmout_on_status(nd, error);
4209 nfsm_chain_add_postop_attr(error, nd, &nmrep, attrerr, &attr);
4248 nd->nd_repstat = error;
4249 error = nfsrv_rephead(nd, slp, &nmrep, maxcount);
4252 nfsmout_on_status(nd, error);
4256 nfsm_chain_add_postop_attr(error, nd, &nmrep, attrerr, &attr);
4306 nfsm_chain_add_postop_attr(error, nd, &nmrep, (gotattr ? 0 : ENOENT), vap);
4326 nd->nd_repstat = error;
4327 error = nfsrv_rephead(nd, slp, &nmrep, NFSX_V3POSTOPATTR);
4330 nfsmout_on_status(nd, error);
4331 nfsm_chain_add_postop_attr(error, nd, &nmrep, attrerr, &attr);
4348 struct nfsrv_descript *nd,
4364 nmreq = &nd->nd_nmreq;
4378 error = nfsrv_fhtovp(&nfh, nd, &vp, &nx, &nxo);
4385 nfsrv_update_user_stat(nx, nd, kauth_cred_getuid(nd->nd_cr), 1, 0, 0);
4387 error = nfsrv_credcheck(nd, ctx, nx, nxo);
4403 nd->nd_repstat = error;
4404 error = nfsrv_rephead(nd, slp, &nmrep, NFSX_V3WCCDATA + NFSX_V3WRITEVERF);
4407 nfsmout_on_status(nd, error);
4408 nfsm_chain_add_wcc_data(error, nd, &nmrep,
4410 if (!nd->nd_repstat) {
4428 struct nfsrv_descript *nd,
4445 nmreq = &nd->nd_nmreq;
4450 nfsm_chain_get_fh_ptr(error, nmreq, nd->nd_vers, nfh.nfh_fhp, nfh.nfh_len);
4452 error = nfsrv_fhtovp(&nfh, nd, &vp, &nx, &nxo);
4459 nfsrv_update_user_stat(nx, nd, kauth_cred_getuid(nd->nd_cr), 1, 0, 0);
4461 error = nfsrv_credcheck(nd, ctx, nx, nxo);
4472 if (nd->nd_vers == NFS_VER3) {
4473 nfsm_srv_vattr_init(&attr, nd->nd_vers);
4482 nd->nd_repstat = error;
4483 error = nfsrv_rephead(nd, slp, &nmrep, NFSX_POSTOPATTR(nd->nd_vers) + NFSX_STATFS(nd->nd_vers));
4486 nfsmout_on_status(nd, error);
4487 if (nd->nd_vers == NFS_VER3)
4488 nfsm_chain_add_postop_attr(error, nd, &nmrep, attrerr, &attr);
4489 nfsmout_if(nd->nd_repstat);
4491 if (nd->nd_vers == NFS_VER3) {
4520 struct nfsrv_descript *nd,
4535 nmreq = &nd->nd_nmreq;
4539 nfsm_chain_get_fh_ptr(error, nmreq, nd->nd_vers, nfh.nfh_fhp, nfh.nfh_len);
4541 error = nfsrv_fhtovp(&nfh, nd, &vp, &nx, &nxo);
4548 nfsrv_update_user_stat(nx, nd, kauth_cred_getuid(nd->nd_cr), 1, 0, 0);
4550 error = nfsrv_credcheck(nd, ctx, nx, nxo);
4561 nd->nd_repstat = error;
4562 error = nfsrv_rephead(nd, slp, &nmrep, NFSX_V3POSTOPATTR + NFSX_V3FSINFO);
4565 nfsmout_on_status(nd, error);
4566 nfsm_chain_add_postop_attr(error, nd, &nmrep, attrerr, &attr);
4567 nfsmout_if(nd->nd_repstat);
4608 struct nfsrv_descript *nd,
4624 nmreq = &nd->nd_nmreq;
4628 nfsm_chain_get_fh_ptr(error, nmreq, nd->nd_vers, nfh.nfh_fhp, nfh.nfh_len);
4630 error = nfsrv_fhtovp(&nfh, nd, &vp, &nx, &nxo);
4637 nfsrv_update_user_stat(nx, nd, kauth_cred_getuid(nd->nd_cr), 1, 0, 0);
4639 error = nfsrv_credcheck(nd, ctx, nx, nxo);
4662 nd->nd_repstat = error;
4663 error = nfsrv_rephead(nd, slp, &nmrep, NFSX_V3POSTOPATTR + NFSX_V3PATHCONF);
4666 nfsmout_on_status(nd, error);
4667 nfsm_chain_add_postop_attr(error, nd, &nmrep, attrerr, &attr);
4668 nfsmout_if(nd->nd_repstat);
4692 struct nfsrv_descript *nd,
4703 if (nd->nd_gss_context)
4704 return(nfs_gss_svc_ctx_init(nd, slp, mrepp));
4709 nd->nd_repstat = error;
4710 error = nfsrv_rephead(nd, slp, &nmrep, 0);
4728 struct nfsrv_descript *nd,
4738 if (nd->nd_repstat)
4739 error = nd->nd_repstat;
4744 nd->nd_repstat = error;
4745 error = nfsrv_rephead(nd, slp, &nmrep, 0);
4757 int (*nfsrv_procs[NFS_NPROCS])(struct nfsrv_descript *nd,