Lines Matching refs:ndp
346 nfsvno_namei(struct nfsrv_descript *nd, struct nameidata *ndp,
350 struct componentname *cnp = &ndp->ni_cnd;
360 ndp->ni_lcf = 0;
369 nfsvno_relpathbuf(ndp);
379 ndp->ni_segflg = UIO_SYSSPACE;
383 ndp->ni_loopcnt = 0;
390 for (i = 1; i < ndp->ni_pathlen; i++)
393 if (i == ndp->ni_pathlen) {
417 ndp->ni_startdir = dp;
418 ndp->ni_rootdir = rootvnode;
419 ndp->ni_topdir = NULL;
427 * ndp->ni_vp and ni_dvp are left uninitialized or NULL and
432 error = lookup(ndp);
442 nfsvno_relpathbuf(ndp);
443 if (ndp->ni_vp && !lockleaf)
444 NFSVOPUNLOCK(ndp->ni_vp, 0);
451 if ((cnp->cn_flags & LOCKPARENT) && ndp->ni_pathlen == 1)
452 NFSVOPUNLOCK(ndp->ni_dvp, 0);
458 if (ndp->ni_loopcnt++ >= MAXSYMLINKS) {
462 if (ndp->ni_pathlen > 1)
475 error = VOP_READLINK(ndp->ni_vp, &auio, cnp->cn_cred);
478 if (ndp->ni_pathlen > 1)
481 vrele(ndp->ni_dvp);
482 vput(ndp->ni_vp);
490 if (linklen + ndp->ni_pathlen >= MAXPATHLEN) {
498 if (ndp->ni_pathlen > 1) {
499 NFSBCOPY(ndp->ni_next, cp + linklen, ndp->ni_pathlen);
504 ndp->ni_pathlen += linklen;
513 vput(ndp->ni_vp);
514 ndp->ni_vp = NULL;
517 vrele(ndp->ni_dvp);
518 ndp->ni_dvp = ndp->ni_rootdir;
519 VREF(ndp->ni_dvp);
521 ndp->ni_startdir = ndp->ni_dvp;
522 ndp->ni_dvp = NULL;
529 nfsvno_relpathbuf(ndp);
530 ndp->ni_vp = NULL;
531 ndp->ni_dvp = NULL;
532 ndp->ni_startdir = NULL;
533 } else if ((ndp->ni_cnd.cn_flags & (WANTPARENT|LOCKPARENT)) == 0) {
534 ndp->ni_dvp = NULL;
547 nfsvno_setpathbuf(struct nameidata *ndp, char **bufpp, u_long **hashpp)
549 struct componentname *cnp = &ndp->ni_cnd;
562 nfsvno_relpathbuf(struct nameidata *ndp)
565 if ((ndp->ni_cnd.cn_flags & HASBUF) == 0)
567 uma_zfree(namei_zone, ndp->ni_cnd.cn_pnbuf);
568 ndp->ni_cnd.cn_flags &= ~HASBUF;
786 nfsvno_createsub(struct nfsrv_descript *nd, struct nameidata *ndp,
794 if (!error && ndp->ni_vp == NULL) {
796 vrele(ndp->ni_startdir);
797 error = VOP_CREATE(ndp->ni_dvp,
798 &ndp->ni_vp, &ndp->ni_cnd, &nvap->na_vattr);
799 vput(ndp->ni_dvp);
800 nfsvno_relpathbuf(ndp);
807 error = VOP_SETATTR(ndp->ni_vp,
810 vput(ndp->ni_vp);
811 ndp->ni_vp = NULL;
827 vrele(ndp->ni_startdir);
828 nfsvno_relpathbuf(ndp);
829 vput(ndp->ni_dvp);
833 error = VOP_MKNOD(ndp->ni_dvp, &ndp->ni_vp,
834 &ndp->ni_cnd, &nvap->na_vattr);
835 vput(ndp->ni_dvp);
836 nfsvno_relpathbuf(ndp);
837 vrele(ndp->ni_startdir);
841 vrele(ndp->ni_startdir);
842 nfsvno_relpathbuf(ndp);
843 vput(ndp->ni_dvp);
847 *vpp = ndp->ni_vp;
855 vrele(ndp->ni_startdir);
856 nfsvno_relpathbuf(ndp);
857 *vpp = ndp->ni_vp;
858 if (ndp->ni_dvp == *vpp)
859 vrele(ndp->ni_dvp);
861 vput(ndp->ni_dvp);
887 nfsvno_mknod(struct nameidata *ndp, struct nfsvattr *nvap, struct ucred *cred,
897 if (ndp->ni_vp) {
898 vrele(ndp->ni_startdir);
899 nfsvno_relpathbuf(ndp);
900 vput(ndp->ni_dvp);
901 vrele(ndp->ni_vp);
906 vrele(ndp->ni_startdir);
907 nfsvno_relpathbuf(ndp);
908 vput(ndp->ni_dvp);
913 vrele(ndp->ni_startdir);
914 error = VOP_CREATE(ndp->ni_dvp, &ndp->ni_vp,
915 &ndp->ni_cnd, &nvap->na_vattr);
916 vput(ndp->ni_dvp);
917 nfsvno_relpathbuf(ndp);
921 vrele(ndp->ni_startdir);
922 nfsvno_relpathbuf(ndp);
923 vput(ndp->ni_dvp);
926 error = VOP_MKNOD(ndp->ni_dvp, &ndp->ni_vp,
927 &ndp->ni_cnd, &nvap->na_vattr);
928 vput(ndp->ni_dvp);
929 nfsvno_relpathbuf(ndp);
930 vrele(ndp->ni_startdir);
946 nfsvno_mkdir(struct nameidata *ndp, struct nfsvattr *nvap, uid_t saved_uid,
951 if (ndp->ni_vp != NULL) {
952 if (ndp->ni_dvp == ndp->ni_vp)
953 vrele(ndp->ni_dvp);
955 vput(ndp->ni_dvp);
956 vrele(ndp->ni_vp);
957 nfsvno_relpathbuf(ndp);
961 error = VOP_MKDIR(ndp->ni_dvp, &ndp->ni_vp, &ndp->ni_cnd,
963 vput(ndp->ni_dvp);
964 nfsvno_relpathbuf(ndp);
975 nfsvno_symlink(struct nameidata *ndp, struct nfsvattr *nvap, char *pathcp,
981 if (ndp->ni_vp) {
982 vrele(ndp->ni_startdir);
983 nfsvno_relpathbuf(ndp);
984 if (ndp->ni_dvp == ndp->ni_vp)
985 vrele(ndp->ni_dvp);
987 vput(ndp->ni_dvp);
988 vrele(ndp->ni_vp);
993 error = VOP_SYMLINK(ndp->ni_dvp, &ndp->ni_vp, &ndp->ni_cnd,
995 vput(ndp->ni_dvp);
996 vrele(ndp->ni_startdir);
997 nfsvno_relpathbuf(ndp);
1005 vput(ndp->ni_vp);
1062 nfsvno_removesub(struct nameidata *ndp, int is_v4, struct ucred *cred,
1068 vp = ndp->ni_vp;
1074 error = VOP_REMOVE(ndp->ni_dvp, vp, &ndp->ni_cnd);
1075 if (ndp->ni_dvp == vp)
1076 vrele(ndp->ni_dvp);
1078 vput(ndp->ni_dvp);
1080 if ((ndp->ni_cnd.cn_flags & SAVENAME) != 0)
1081 nfsvno_relpathbuf(ndp);
1090 nfsvno_rmdirsub(struct nameidata *ndp, int is_v4, struct ucred *cred,
1096 vp = ndp->ni_vp;
1104 if (ndp->ni_dvp == vp) {
1115 error = VOP_RMDIR(ndp->ni_dvp, vp, &ndp->ni_cnd);
1116 if (ndp->ni_dvp == vp)
1117 vrele(ndp->ni_dvp);
1119 vput(ndp->ni_dvp);
1121 if ((ndp->ni_cnd.cn_flags & SAVENAME) != 0)
1122 nfsvno_relpathbuf(ndp);
1241 nfsvno_link(struct nameidata *ndp, struct vnode *vp, struct ucred *cred,
1247 xp = ndp->ni_vp;
1251 xp = ndp->ni_dvp;
1258 error = VOP_LINK(ndp->ni_dvp, vp, &ndp->ni_cnd);
1261 if (ndp->ni_dvp == vp)
1262 vrele(ndp->ni_dvp);
1264 vput(ndp->ni_dvp);
1267 if (ndp->ni_dvp == ndp->ni_vp)
1268 vrele(ndp->ni_dvp);
1270 vput(ndp->ni_dvp);
1271 if (ndp->ni_vp)
1272 vrele(ndp->ni_vp);
1274 nfsvno_relpathbuf(ndp);
1414 nfsvno_open(struct nfsrv_descript *nd, struct nameidata *ndp,
1424 if (ndp->ni_vp == NULL)
1428 if (ndp->ni_vp == NULL) {
1429 vrele(ndp->ni_startdir);
1430 nd->nd_repstat = VOP_CREATE(ndp->ni_dvp,
1431 &ndp->ni_vp, &ndp->ni_cnd, &nvap->na_vattr);
1432 vput(ndp->ni_dvp);
1433 nfsvno_relpathbuf(ndp);
1440 nd->nd_repstat = VOP_SETATTR(ndp->ni_vp,
1443 vput(ndp->ni_vp);
1444 ndp->ni_vp = NULL;
1448 nfsrv_fixattr(nd, ndp->ni_vp, nvap,
1452 vp = ndp->ni_vp;
1454 if (ndp->ni_startdir)
1455 vrele(ndp->ni_startdir);
1456 nfsvno_relpathbuf(ndp);
1457 vp = ndp->ni_vp;
1459 if (ndp->ni_dvp == vp)
1460 vrele(ndp->ni_dvp);
1462 vput(ndp->ni_dvp);
1465 if (ndp->ni_cnd.cn_flags & RDONLY)
1488 if (ndp->ni_cnd.cn_flags & HASBUF)
1489 nfsvno_relpathbuf(ndp);
1490 if (ndp->ni_startdir && create == NFSV4OPEN_CREATE) {
1491 vrele(ndp->ni_startdir);
1492 if (ndp->ni_dvp == ndp->ni_vp)
1493 vrele(ndp->ni_dvp);
1495 vput(ndp->ni_dvp);
1496 if (ndp->ni_vp)
1497 vput(ndp->ni_vp);