Home | History | Annotate | Download | only in client

Lines Matching defs:nmp

113 static void	nfs_decode_args(struct mount *mp, struct nfsmount *nmp,
189 newnfs_iosize(struct nfsmount *nmp)
194 if (nmp->nm_flag & NFSMNT_NFSV4) {
196 } else if (nmp->nm_flag & NFSMNT_NFSV3) {
197 if (nmp->nm_sotype == SOCK_DGRAM)
204 if (nmp->nm_rsize > maxio || nmp->nm_rsize == 0)
205 nmp->nm_rsize = maxio;
206 if (nmp->nm_rsize > NFS_MAXBSIZE)
207 nmp->nm_rsize = NFS_MAXBSIZE;
208 if (nmp->nm_readdirsize > maxio || nmp->nm_readdirsize == 0)
209 nmp->nm_readdirsize = maxio;
210 if (nmp->nm_readdirsize > nmp->nm_rsize)
211 nmp->nm_readdirsize = nmp->nm_rsize;
212 if (nmp->nm_wsize > maxio || nmp->nm_wsize == 0)
213 nmp->nm_wsize = maxio;
214 if (nmp->nm_wsize > NFS_MAXBSIZE)
215 nmp->nm_wsize = NFS_MAXBSIZE;
224 iosize = imax(nmp->nm_rsize, nmp->nm_wsize);
227 nmp->nm_mountp->mnt_stat.f_iosize = iosize;
285 struct nfsmount *nmp = VFSTONFS(mp);
297 error = ncl_nget(mp, nmp->nm_fh, nmp->nm_fhsize, &np, LK_EXCLUSIVE);
303 mtx_lock(&nmp->nm_mtx);
304 if (NFSHASNFSV3(nmp) && !NFSHASGOTFSINFO(nmp)) {
305 mtx_unlock(&nmp->nm_mtx);
311 mtx_unlock(&nmp->nm_mtx);
318 ret = nfsrpc_getattrnovp(nmp, nmp->nm_fh, nmp->nm_fhsize, 1,
338 mtx_lock(&nmp->nm_mtx);
339 if (gotfsinfo || (nmp->nm_flag & NFSMNT_NFSV4))
340 nfscl_loadfsinfo(nmp, &fs);
341 nfscl_loadsbinfo(nmp, &sb, sbp);
342 sbp->f_iosize = newnfs_iosize(nmp);
343 mtx_unlock(&nmp->nm_mtx);
361 ncl_fsinfo(struct nfsmount *nmp, struct vnode *vp, struct ucred *cred,
373 mtx_lock(&nmp->nm_mtx);
374 nfscl_loadfsinfo(nmp, &fs);
375 mtx_unlock(&nmp->nm_mtx);
561 nfs_decode_args(struct mount *mp, struct nfsmount *nmp, struct nfs_args *argp,
592 nmp->nm_flag &= ~NFSMNT_NOCONN;
593 nmp->nm_timeo = NFS_MAXTIMEO;
595 nmp->nm_retry = INT_MAX;
597 nmp->nm_retry = NFS_RETRANS_TCP;
603 nmp->nm_flag &= ~NFSMNT_RDIRPLUS;
607 adjsock = !(nmp->nm_flag & NFSMNT_RESVPORT)
610 adjsock |= ((nmp->nm_flag & NFSMNT_NOCONN) !=
614 nmp->nm_flag = argp->flags | nmp->nm_flag;
618 nmp->nm_timeo = (argp->timeo * NFS_HZ + 5) / 10;
619 if (nmp->nm_timeo < NFS_MINTIMEO)
620 nmp->nm_timeo = NFS_MINTIMEO;
621 else if (nmp->nm_timeo > NFS_MAXTIMEO)
622 nmp->nm_timeo = NFS_MAXTIMEO;
626 nmp->nm_retry = argp->retrans;
627 if (nmp->nm_retry > NFS_MAXREXMIT)
628 nmp->nm_retry = NFS_MAXREXMIT;
632 nmp->nm_wsize = argp->wsize;
638 if (nmp->nm_wsize > NFS_FABLKSIZE)
639 nmp->nm_wsize = 1 << (fls(nmp->nm_wsize) - 1);
641 nmp->nm_wsize = NFS_FABLKSIZE;
645 nmp->nm_rsize = argp->rsize;
651 if (nmp->nm_rsize > NFS_FABLKSIZE)
652 nmp->nm_rsize = 1 << (fls(nmp->nm_rsize) - 1);
654 nmp->nm_rsize = NFS_FABLKSIZE;
658 nmp->nm_readdirsize = argp->readdirsize;
662 nmp->nm_acregmin = argp->acregmin;
664 nmp->nm_acregmin = NFS_MINATTRTIMO;
666 nmp->nm_acregmax = argp->acregmax;
668 nmp->nm_acregmax = NFS_MAXATTRTIMO;
670 nmp->nm_acdirmin = argp->acdirmin;
672 nmp->nm_acdirmin = NFS_MINDIRATTRTIMO;
674 nmp->nm_acdirmax = argp->acdirmax;
676 nmp->nm_acdirmax = NFS_MAXDIRATTRTIMO;
677 if (nmp->nm_acdirmin > nmp->nm_acdirmax)
678 nmp->nm_acdirmin = nmp->nm_acdirmax;
679 if (nmp->nm_acregmin > nmp->nm_acregmax)
680 nmp->nm_acregmin = nmp->nm_acregmax;
684 nmp->nm_readahead = argp->readahead;
686 nmp->nm_readahead = NFS_MAXRAHEAD;
689 if (argp->wcommitsize < nmp->nm_wsize)
690 nmp->nm_wcommitsize = nmp->nm_wsize;
692 nmp->nm_wcommitsize = argp->wcommitsize;
695 adjsock |= ((nmp->nm_sotype != argp->sotype) ||
696 (nmp->nm_soproto != argp->proto));
698 if (nmp->nm_client != NULL && adjsock) {
701 if (nmp->nm_sotype == SOCK_STREAM) {
702 error = newnfs_sndlock(&nmp->nm_sockreq.nr_lock);
707 newnfs_disconnect(&nmp->nm_sockreq);
709 newnfs_sndunlock(&nmp->nm_sockreq.nr_lock);
710 nmp->nm_sotype = argp->sotype;
711 nmp->nm_soproto = argp->proto;
712 if (nmp->nm_sotype == SOCK_DGRAM)
713 while (newnfs_connect(nmp, &nmp->nm_sockreq,
720 nmp->nm_sotype = argp->sotype;
721 nmp->nm_soproto = argp->proto;
725 strlcpy(nmp->nm_hostname, hostname,
726 sizeof(nmp->nm_hostname));
727 p = strchr(nmp->nm_hostname, ':');
1161 struct nfsmount *nmp = VFSTONFS(mp);
1163 if (nmp == NULL) {
1176 if (args.sotype == SOCK_DGRAM && nmp->nm_sotype == SOCK_STREAM)
1192 (nmp->nm_flag &
1199 nfs_decode_args(mp, nmp, &args, NULL, td->td_ucred, td);
1368 struct nfsmount *nmp;
1380 nmp = VFSTONFS(mp);
1385 MALLOC(nmp, struct nfsmount *, sizeof (struct nfsmount) +
1388 TAILQ_INIT(&nmp->nm_bufq);
1391 nmp->nm_clval = clval++;
1392 nmp->nm_krbnamelen = krbnamelen;
1393 nmp->nm_dirpathlen = dirlen;
1394 nmp->nm_srvkrbnamelen = srvkrbnamelen;
1405 nmp->nm_uid = td->td_ucred->cr_uid;
1410 nmp->nm_uid = (uid_t)-1;
1414 if (nmp->nm_krbnamelen > 0) {
1415 bcopy(krbname, nmp->nm_krbname, nmp->nm_krbnamelen);
1416 nmp->nm_name[nmp->nm_krbnamelen] = '\0';
1418 if (nmp->nm_dirpathlen > 0) {
1419 bcopy(dirpath, NFSMNT_DIRPATH(nmp),
1420 nmp->nm_dirpathlen);
1421 nmp->nm_name[nmp->nm_krbnamelen + nmp->nm_dirpathlen
1424 if (nmp->nm_srvkrbnamelen > 0) {
1425 bcopy(srvkrbname, NFSMNT_SRVKRBNAME(nmp),
1426 nmp->nm_srvkrbnamelen);
1427 nmp->nm_name[nmp->nm_krbnamelen + nmp->nm_dirpathlen
1428 + nmp->nm_srvkrbnamelen + 2] = '\0';
1430 nmp->nm_sockreq.nr_cred = crhold(cred);
1431 mtx_init(&nmp->nm_sockreq.nr_mtx, "nfssock", NULL, MTX_DEF);
1432 mp->mnt_data = nmp;
1433 nmp->nm_getinfo = nfs_getnlminfo;
1434 nmp->nm_vinvalbuf = ncl_vinvalbuf;
1437 nmp->nm_mountp = mp;
1438 mtx_init(&nmp->nm_mtx, "NFSmount lock", NULL, MTX_DEF | MTX_DUPOK);
1445 nmp->nm_nametimeo = nametimeo;
1446 nmp->nm_negnametimeo = negnametimeo;
1447 nmp->nm_timeo = NFS_TIMEO;
1448 nmp->nm_retry = NFS_RETRANS;
1449 nmp->nm_readahead = NFS_DEFRAHEAD;
1452 nmp->nm_wcommitsize = NFS_MAXBSIZE / 256;
1453 while ((long)nmp->nm_wcommitsize * nmp->nm_wcommitsize < hibufspace)
1454 nmp->nm_wcommitsize *= 2;
1455 nmp->nm_wcommitsize *= 256;
1458 nmp->nm_minorvers = minvers;
1460 nmp->nm_minorvers = 0;
1462 nfs_decode_args(mp, nmp, argp, hst, cred, td);
1473 nmp->nm_maxfilesize = 0xffffffffLL;
1475 nmp->nm_maxfilesize = OFF_MAX;
1478 nmp->nm_wsize = NFS_WSIZE;
1479 nmp->nm_rsize = NFS_RSIZE;
1480 nmp->nm_readdirsize = NFS_READDIRSIZE;
1482 nmp->nm_numgrps = NFS_MAXGRPS;
1483 nmp->nm_tprintf_delay = nfs_tprintf_delay;
1484 if (nmp->nm_tprintf_delay < 0)
1485 nmp->nm_tprintf_delay = 0;
1486 nmp->nm_tprintf_initial_delay = nfs_tprintf_initial_delay;
1487 if (nmp->nm_tprintf_initial_delay < 0)
1488 nmp->nm_tprintf_initial_delay = 0;
1489 nmp->nm_fhsize = argp->fhsize;
1490 if (nmp->nm_fhsize > 0)
1491 bcopy((caddr_t)argp->fh, (caddr_t)nmp->nm_fh, argp->fhsize);
1493 nmp->nm_nam = nam;
1495 nmp->nm_sotype = argp->sotype;
1496 nmp->nm_soproto = argp->proto;
1497 nmp->nm_sockreq.nr_prog = NFS_PROG;
1499 nmp->nm_sockreq.nr_vers = NFS_VER4;
1501 nmp->nm_sockreq.nr_vers = NFS_VER3;
1503 nmp->nm_sockreq.nr_vers = NFS_VER2;
1506 if ((error = newnfs_connect(nmp, &nmp->nm_sockreq, cred, td, 0)))
1509 if (nmp->nm_minorvers > 0) {
1517 if (nmp->nm_fhsize == 0 && (nmp->nm_flag & NFSMNT_NFSV4) &&
1518 nmp->nm_dirpathlen > 0) {
1526 error = nfsrpc_getdirpath(nmp, NFSMNT_DIRPATH(nmp),
1546 if (nmp->nm_fhsize > 0) {
1553 error = ncl_nget(mp, nmp->nm_fh, nmp->nm_fhsize, &np,
1564 ret = nfsrpc_getattrnovp(nmp, nmp->nm_fh, nmp->nm_fhsize, 1,
1583 if (nmp->nm_minorvers > 0) {
1600 ncl_fsinfo(nmp, *vpp, cred, td);
1622 newnfs_disconnect(&nmp->nm_sockreq);
1623 crfree(nmp->nm_sockreq.nr_cred);
1624 if (nmp->nm_sockreq.nr_auth != NULL)
1625 AUTH_DESTROY(nmp->nm_sockreq.nr_auth);
1626 mtx_destroy(&nmp->nm_sockreq.nr_mtx);
1627 mtx_destroy(&nmp->nm_mtx);
1628 if (nmp->nm_clp != NULL) {
1630 LIST_REMOVE(nmp->nm_clp, nfsc_list);
1632 free(nmp->nm_clp, M_NFSCLCLIENT);
1634 TAILQ_FOREACH_SAFE(dsp, &nmp->nm_sess, nfsclds_list, tdsp)
1636 FREE(nmp, M_NEWNFSMNT);
1648 struct nfsmount *nmp;
1656 nmp = VFSTONFS(mp);
1665 error = newnfs_nmcancelreqs(nmp);
1669 nfscl_umount(nmp, td);
1684 nfscl_umount(nmp, td);
1688 if (ncl_iodmount[i] == nmp) {
1693 newnfs_disconnect(&nmp->nm_sockreq);
1694 crfree(nmp->nm_sockreq.nr_cred);
1695 FREE(nmp->nm_nam, M_SONAME);
1696 if (nmp->nm_sockreq.nr_auth != NULL)
1697 AUTH_DESTROY(nmp->nm_sockreq.nr_auth);
1698 mtx_destroy(&nmp->nm_sockreq.nr_mtx);
1699 mtx_destroy(&nmp->nm_mtx);
1700 TAILQ_FOREACH_SAFE(dsp, &nmp->nm_sess, nfsclds_list, tdsp)
1702 FREE(nmp, M_NEWNFSMNT);
1714 struct nfsmount *nmp;
1718 nmp = VFSTONFS(mp);
1719 error = ncl_nget(mp, nmp->nm_fh, nmp->nm_fhsize, &np, flags);
1726 mtx_lock(&nmp->nm_mtx);
1727 if (NFSHASNFSV3(nmp) && !NFSHASGOTFSINFO(nmp)) {
1728 mtx_unlock(&nmp->nm_mtx);
1729 ncl_fsinfo(nmp, vp, curthread->td_ucred, curthread);
1731 mtx_unlock(&nmp->nm_mtx);
1791 struct nfsmount *nmp = VFSTONFS(mp);
1799 val = (nmp->nm_flag & NFSMNT_NOLOCKS) ? 1 : 0;
1810 nmp->nm_flag |= NFSMNT_NOLOCKS;
1812 nmp->nm_flag &= ~NFSMNT_NOLOCKS;
1817 mtx_lock(&nmp->nm_mtx);
1818 if (nmp->nm_state & NFSSTA_TIMEO)
1820 mtx_unlock(&nmp->nm_mtx);
1822 if (!(nmp->nm_flag & NFSMNT_NOLOCKS) &&
1823 (nmp->nm_state & NFSSTA_LOCKTIMEO))
1830 error = SYSCTL_OUT(req, &nmp->nm_tprintf_initial_delay,
1831 sizeof(nmp->nm_tprintf_initial_delay));
1839 error = SYSCTL_IN(req, &nmp->nm_tprintf_initial_delay,
1840 sizeof(nmp->nm_tprintf_initial_delay));
1843 if (nmp->nm_tprintf_initial_delay < 0)
1844 nmp->nm_tprintf_initial_delay = 0;
1861 struct nfsmount *nmp = VFSTONFS(mp);
1863 newnfs_nmcancelreqs(nmp);
1874 struct nfsmount *nmp;
1877 nmp = VFSTONFS(vp->v_mount);
1883 bcopy(nmp->nm_nam, sp, uimin(nmp->nm_nam->sa_len, sizeof(*sp)));
1889 timeop->tv_sec = nmp->nm_timeo / NFS_HZ;
1890 timeop->tv_usec = (nmp->nm_timeo % NFS_HZ) * (1000000 / NFS_HZ);
1898 static __inline void nfscl_printopt(struct nfsmount *nmp, int testval,
1915 static __inline void nfscl_printoptval(struct nfsmount *nmp, int optval,
1933 void nfscl_retopts(struct nfsmount *nmp, char *buffer, size_t buflen)
1940 nfscl_printopt(nmp, (nmp->nm_flag & NFSMNT_NFSV4) != 0, "nfsv4", &buf,
1942 if ((nmp->nm_flag & NFSMNT_NFSV4) != 0) {
1943 nfscl_printoptval(nmp, nmp->nm_minorvers, ",minorversion", &buf,
1945 nfscl_printopt(nmp, (nmp->nm_flag & NFSMNT_PNFS) != 0, ",pnfs",
1948 nfscl_printopt(nmp, (nmp->nm_flag & NFSMNT_NFSV3) != 0, "nfsv3", &buf,
1950 nfscl_printopt(nmp, (nmp->nm_flag & (NFSMNT_NFSV3 | NFSMNT_NFSV4)) == 0,
1952 nfscl_printopt(nmp, nmp->nm_sotype == SOCK_STREAM, ",tcp", &buf, &blen);
1953 nfscl_printopt(nmp, nmp->nm_sotype != SOCK_STREAM, ",udp", &buf, &blen);
1954 nfscl_printopt(nmp, (nmp->nm_flag & NFSMNT_RESVPORT) != 0, ",resvport",
1956 nfscl_printopt(nmp, (nmp->nm_flag & NFSMNT_NOCONN) != 0, ",noconn",
1958 nfscl_printopt(nmp, (nmp->nm_flag & NFSMNT_SOFT) == 0, ",hard", &buf,
1960 nfscl_printopt(nmp, (nmp->nm_flag & NFSMNT_SOFT) != 0, ",soft", &buf,
1962 nfscl_printopt(nmp, (nmp->nm_flag & NFSMNT_INT) != 0, ",intr", &buf,
1964 nfscl_printopt(nmp, (nmp->nm_flag & NFSMNT_NOCTO) == 0, ",cto", &buf,
1966 nfscl_printopt(nmp, (nmp->nm_flag & NFSMNT_NOCTO) != 0, ",nocto", &buf,
1968 nfscl_printopt(nmp, (nmp->nm_flag & NFSMNT_NONCONTIGWR) != 0,
1970 nfscl_printopt(nmp, (nmp->nm_flag & (NFSMNT_NOLOCKD | NFSMNT_NFSV4)) ==
1972 nfscl_printopt(nmp, (nmp->nm_flag & (NFSMNT_NOLOCKD | NFSMNT_NFSV4)) ==
1974 nfscl_printopt(nmp, (nmp->nm_flag & NFSMNT_RDIRPLUS) != 0, ",rdirplus",
1976 nfscl_printopt(nmp, (nmp->nm_flag & NFSMNT_KERB) == 0, ",sec=sys",
1978 nfscl_printopt(nmp, (nmp->nm_flag & (NFSMNT_KERB | NFSMNT_INTEGRITY |
1980 nfscl_printopt(nmp, (nmp->nm_flag & (NFSMNT_KERB | NFSMNT_INTEGRITY |
1983 nfscl_printopt(nmp, (nmp->nm_flag & (NFSMNT_KERB | NFSMNT_INTEGRITY |
1986 nfscl_printoptval(nmp, nmp->nm_acdirmin, ",acdirmin", &buf, &blen);
1987 nfscl_printoptval(nmp, nmp->nm_acdirmax, ",acdirmax", &buf, &blen);
1988 nfscl_printoptval(nmp, nmp->nm_acregmin, ",acregmin", &buf, &blen);
1989 nfscl_printoptval(nmp, nmp->nm_acregmax, ",acregmax", &buf, &blen);
1990 nfscl_printoptval(nmp, nmp->nm_nametimeo, ",nametimeo", &buf, &blen);
1991 nfscl_printoptval(nmp, nmp->nm_negnametimeo, ",negnametimeo", &buf,
1993 nfscl_printoptval(nmp, nmp->nm_rsize, ",rsize", &buf, &blen);
1994 nfscl_printoptval(nmp, nmp->nm_wsize, ",wsize", &buf, &blen);
1995 nfscl_printoptval(nmp, nmp->nm_readdirsize, ",readdirsize", &buf,
1997 nfscl_printoptval(nmp, nmp->nm_readahead, ",readahead", &buf, &blen);
1998 nfscl_printoptval(nmp, nmp->nm_wcommitsize, ",wcommitsize", &buf,
2000 nfscl_printoptval(nmp, nmp->nm_timeo, ",timeout", &buf, &blen);
2001 nfscl_printoptval(nmp, nmp->nm_retry, ",retrans", &buf, &blen);