Lines Matching refs:ndp

649 nfsvno_namei(struct nfsrv_descript *nd, struct nameidata *ndp,  in nfsvno_namei()  argument
653 struct componentname *cnp = &ndp->ni_cnd; in nfsvno_namei()
663 ndp->ni_lcf = 0; in nfsvno_namei()
672 nfsvno_relpathbuf(ndp); in nfsvno_namei()
682 ndp->ni_segflg = UIO_SYSSPACE; in nfsvno_namei()
685 ndp->ni_loopcnt = 0; in nfsvno_namei()
692 for (i = 1; i < ndp->ni_pathlen; i++) in nfsvno_namei()
695 if (i == ndp->ni_pathlen) { in nfsvno_namei()
717 ndp->ni_startdir = dp; in nfsvno_namei()
718 ndp->ni_rootdir = rootvnode; in nfsvno_namei()
719 ndp->ni_topdir = NULL; in nfsvno_namei()
732 error = vfs_lookup(ndp); in nfsvno_namei()
741 if (ndp->ni_vp && !lockleaf) in nfsvno_namei()
742 NFSVOPUNLOCK(ndp->ni_vp); in nfsvno_namei()
749 if ((cnp->cn_flags & LOCKPARENT) && ndp->ni_pathlen == 1) in nfsvno_namei()
750 NFSVOPUNLOCK(ndp->ni_dvp); in nfsvno_namei()
756 if (ndp->ni_loopcnt++ >= MAXSYMLINKS) { in nfsvno_namei()
760 if (ndp->ni_pathlen > 1) in nfsvno_namei()
773 error = VOP_READLINK(ndp->ni_vp, &auio, cnp->cn_cred); in nfsvno_namei()
776 if (ndp->ni_pathlen > 1) in nfsvno_namei()
779 vrele(ndp->ni_dvp); in nfsvno_namei()
780 vput(ndp->ni_vp); in nfsvno_namei()
788 if (linklen + ndp->ni_pathlen >= MAXPATHLEN) { in nfsvno_namei()
796 if (ndp->ni_pathlen > 1) { in nfsvno_namei()
797 NFSBCOPY(ndp->ni_next, cp + linklen, ndp->ni_pathlen); in nfsvno_namei()
802 ndp->ni_pathlen += linklen; in nfsvno_namei()
811 vput(ndp->ni_vp); in nfsvno_namei()
812 ndp->ni_vp = NULL; in nfsvno_namei()
815 vrele(ndp->ni_dvp); in nfsvno_namei()
816 ndp->ni_dvp = ndp->ni_rootdir; in nfsvno_namei()
817 VREF(ndp->ni_dvp); in nfsvno_namei()
819 ndp->ni_startdir = ndp->ni_dvp; in nfsvno_namei()
820 ndp->ni_dvp = NULL; in nfsvno_namei()
827 nfsvno_relpathbuf(ndp); in nfsvno_namei()
828 ndp->ni_vp = NULL; in nfsvno_namei()
829 ndp->ni_dvp = NULL; in nfsvno_namei()
830 ndp->ni_startdir = NULL; in nfsvno_namei()
831 } else if ((ndp->ni_cnd.cn_flags & (WANTPARENT|LOCKPARENT)) == 0) { in nfsvno_namei()
832 ndp->ni_dvp = NULL; in nfsvno_namei()
845 nfsvno_setpathbuf(struct nameidata *ndp, char **bufpp, u_long **hashpp) in nfsvno_setpathbuf() argument
847 struct componentname *cnp = &ndp->ni_cnd; in nfsvno_setpathbuf()
860 nfsvno_relpathbuf(struct nameidata *ndp) in nfsvno_relpathbuf() argument
863 uma_zfree(namei_zone, ndp->ni_cnd.cn_pnbuf); in nfsvno_relpathbuf()
864 ndp->ni_cnd.cn_pnbuf = NULL; in nfsvno_relpathbuf()
1215 nfsvno_createsub(struct nfsrv_descript *nd, struct nameidata *ndp, in nfsvno_createsub() argument
1224 if (!error && ndp->ni_vp == NULL) { in nfsvno_createsub()
1226 error = VOP_CREATE(ndp->ni_dvp, in nfsvno_createsub()
1227 &ndp->ni_vp, &ndp->ni_cnd, &nvap->na_vattr); in nfsvno_createsub()
1235 nfsrv_pnfscreate(ndp->ni_vp, &nvap->na_vattr, in nfsvno_createsub()
1238 VOP_VPUT_PAIR(ndp->ni_dvp, error == 0 ? &ndp->ni_vp : in nfsvno_createsub()
1240 nfsvno_relpathbuf(ndp); in nfsvno_createsub()
1247 error = VOP_SETATTR(ndp->ni_vp, in nfsvno_createsub()
1250 vput(ndp->ni_vp); in nfsvno_createsub()
1251 ndp->ni_vp = NULL; in nfsvno_createsub()
1266 nfsvno_relpathbuf(ndp); in nfsvno_createsub()
1267 vput(ndp->ni_dvp); in nfsvno_createsub()
1271 error = VOP_MKNOD(ndp->ni_dvp, &ndp->ni_vp, in nfsvno_createsub()
1272 &ndp->ni_cnd, &nvap->na_vattr); in nfsvno_createsub()
1273 VOP_VPUT_PAIR(ndp->ni_dvp, error == 0 ? &ndp->ni_vp : in nfsvno_createsub()
1275 nfsvno_relpathbuf(ndp); in nfsvno_createsub()
1279 nfsvno_relpathbuf(ndp); in nfsvno_createsub()
1280 vput(ndp->ni_dvp); in nfsvno_createsub()
1284 *vpp = ndp->ni_vp; in nfsvno_createsub()
1292 nfsvno_relpathbuf(ndp); in nfsvno_createsub()
1293 *vpp = ndp->ni_vp; in nfsvno_createsub()
1294 if (ndp->ni_dvp == *vpp) in nfsvno_createsub()
1295 vrele(ndp->ni_dvp); in nfsvno_createsub()
1297 vput(ndp->ni_dvp); in nfsvno_createsub()
1323 nfsvno_mknod(struct nameidata *ndp, struct nfsvattr *nvap, struct ucred *cred, in nfsvno_mknod() argument
1333 if (ndp->ni_vp) { in nfsvno_mknod()
1334 nfsvno_relpathbuf(ndp); in nfsvno_mknod()
1335 vput(ndp->ni_dvp); in nfsvno_mknod()
1336 vrele(ndp->ni_vp); in nfsvno_mknod()
1341 nfsvno_relpathbuf(ndp); in nfsvno_mknod()
1342 vput(ndp->ni_dvp); in nfsvno_mknod()
1347 error = VOP_CREATE(ndp->ni_dvp, &ndp->ni_vp, in nfsvno_mknod()
1348 &ndp->ni_cnd, &nvap->na_vattr); in nfsvno_mknod()
1349 VOP_VPUT_PAIR(ndp->ni_dvp, error == 0 ? &ndp->ni_vp : NULL, in nfsvno_mknod()
1351 nfsvno_relpathbuf(ndp); in nfsvno_mknod()
1355 nfsvno_relpathbuf(ndp); in nfsvno_mknod()
1356 vput(ndp->ni_dvp); in nfsvno_mknod()
1359 error = VOP_MKNOD(ndp->ni_dvp, &ndp->ni_vp, in nfsvno_mknod()
1360 &ndp->ni_cnd, &nvap->na_vattr); in nfsvno_mknod()
1361 VOP_VPUT_PAIR(ndp->ni_dvp, error == 0 ? &ndp->ni_vp : NULL, in nfsvno_mknod()
1363 nfsvno_relpathbuf(ndp); in nfsvno_mknod()
1379 nfsvno_mkdir(struct nameidata *ndp, struct nfsvattr *nvap, uid_t saved_uid, in nfsvno_mkdir() argument
1384 if (ndp->ni_vp != NULL) { in nfsvno_mkdir()
1385 if (ndp->ni_dvp == ndp->ni_vp) in nfsvno_mkdir()
1386 vrele(ndp->ni_dvp); in nfsvno_mkdir()
1388 vput(ndp->ni_dvp); in nfsvno_mkdir()
1389 vrele(ndp->ni_vp); in nfsvno_mkdir()
1390 nfsvno_relpathbuf(ndp); in nfsvno_mkdir()
1394 error = VOP_MKDIR(ndp->ni_dvp, &ndp->ni_vp, &ndp->ni_cnd, in nfsvno_mkdir()
1396 VOP_VPUT_PAIR(ndp->ni_dvp, error == 0 ? &ndp->ni_vp : NULL, false); in nfsvno_mkdir()
1397 nfsvno_relpathbuf(ndp); in nfsvno_mkdir()
1408 nfsvno_symlink(struct nameidata *ndp, struct nfsvattr *nvap, char *pathcp, in nfsvno_symlink() argument
1414 if (ndp->ni_vp) { in nfsvno_symlink()
1415 nfsvno_relpathbuf(ndp); in nfsvno_symlink()
1416 if (ndp->ni_dvp == ndp->ni_vp) in nfsvno_symlink()
1417 vrele(ndp->ni_dvp); in nfsvno_symlink()
1419 vput(ndp->ni_dvp); in nfsvno_symlink()
1420 vrele(ndp->ni_vp); in nfsvno_symlink()
1425 error = VOP_SYMLINK(ndp->ni_dvp, &ndp->ni_vp, &ndp->ni_cnd, in nfsvno_symlink()
1433 VOP_VPUT_PAIR(ndp->ni_dvp, &ndp->ni_vp, !not_v2 && error == 0); in nfsvno_symlink()
1434 nfsvno_relpathbuf(ndp); in nfsvno_symlink()
1491 nfsvno_removesub(struct nameidata *ndp, bool is_v4, struct nfsrv_descript *nd, in nfsvno_removesub() argument
1500 vp = ndp->ni_vp; in nfsvno_removesub()
1515 error = VOP_REMOVE(ndp->ni_dvp, vp, &ndp->ni_cnd); in nfsvno_removesub()
1520 if (ndp->ni_dvp == vp) in nfsvno_removesub()
1521 vrele(ndp->ni_dvp); in nfsvno_removesub()
1523 vput(ndp->ni_dvp); in nfsvno_removesub()
1546 nfsvno_relpathbuf(ndp); in nfsvno_removesub()
1555 nfsvno_rmdirsub(struct nameidata *ndp, int is_v4, struct ucred *cred, in nfsvno_rmdirsub() argument
1561 vp = ndp->ni_vp; in nfsvno_rmdirsub()
1569 if (ndp->ni_dvp == vp) { in nfsvno_rmdirsub()
1580 error = VOP_RMDIR(ndp->ni_dvp, vp, &ndp->ni_cnd); in nfsvno_rmdirsub()
1581 if (ndp->ni_dvp == vp) in nfsvno_rmdirsub()
1582 vrele(ndp->ni_dvp); in nfsvno_rmdirsub()
1584 vput(ndp->ni_dvp); in nfsvno_rmdirsub()
1586 nfsvno_relpathbuf(ndp); in nfsvno_rmdirsub()
1780 nfsvno_link(struct nameidata *ndp, struct vnode *vp, nfsquad_t clientid, in nfsvno_link() argument
1786 xp = ndp->ni_vp; in nfsvno_link()
1790 xp = ndp->ni_dvp; in nfsvno_link()
1799 error = VOP_LINK(ndp->ni_dvp, vp, &ndp->ni_cnd); in nfsvno_link()
1802 if (ndp->ni_dvp == vp) { in nfsvno_link()
1803 vrele(ndp->ni_dvp); in nfsvno_link()
1807 VOP_VPUT_PAIR(ndp->ni_dvp, &vp, true); in nfsvno_link()
1810 if (ndp->ni_dvp == ndp->ni_vp) in nfsvno_link()
1811 vrele(ndp->ni_dvp); in nfsvno_link()
1813 vput(ndp->ni_dvp); in nfsvno_link()
1814 if (ndp->ni_vp) in nfsvno_link()
1815 vrele(ndp->ni_vp); in nfsvno_link()
1817 nfsvno_relpathbuf(ndp); in nfsvno_link()
1969 nfsvno_open(struct nfsrv_descript *nd, struct nameidata *ndp, in nfsvno_open() argument
1981 if (ndp->ni_vp == NULL) { in nfsvno_open()
1993 if (ndp->ni_vp == NULL) { in nfsvno_open()
1994 nd->nd_repstat = VOP_CREATE(ndp->ni_dvp, in nfsvno_open()
1995 &ndp->ni_vp, &ndp->ni_cnd, &nvap->na_vattr); in nfsvno_open()
2003 nfsrv_pnfscreate(ndp->ni_vp, &nvap->na_vattr, in nfsvno_open()
2006 VOP_VPUT_PAIR(ndp->ni_dvp, nd->nd_repstat == 0 ? in nfsvno_open()
2007 &ndp->ni_vp : NULL, false); in nfsvno_open()
2008 nfsvno_relpathbuf(ndp); in nfsvno_open()
2015 nd->nd_repstat = VOP_SETATTR(ndp->ni_vp, in nfsvno_open()
2018 vput(ndp->ni_vp); in nfsvno_open()
2019 ndp->ni_vp = NULL; in nfsvno_open()
2025 nfsrv_fixattr(nd, ndp->ni_vp, nvap, in nfsvno_open()
2029 vp = ndp->ni_vp; in nfsvno_open()
2031 nfsvno_relpathbuf(ndp); in nfsvno_open()
2032 vp = ndp->ni_vp; in nfsvno_open()
2034 if (ndp->ni_dvp == vp) in nfsvno_open()
2035 vrele(ndp->ni_dvp); in nfsvno_open()
2037 vput(ndp->ni_dvp); in nfsvno_open()
2040 if (ndp->ni_cnd.cn_flags & RDONLY) in nfsvno_open()
2071 nfsvno_relpathbuf(ndp); in nfsvno_open()
2072 if (ndp->ni_dvp == ndp->ni_vp) in nfsvno_open()
2073 vrele(ndp->ni_dvp); in nfsvno_open()
2075 vput(ndp->ni_dvp); in nfsvno_open()
2076 if (ndp->ni_vp) in nfsvno_open()
2077 vput(ndp->ni_vp); in nfsvno_open()