Home | History | Annotate | Download | only in nfs

Lines Matching defs:nmp

182 nfs_connect(struct nfsmount *nmp, struct nfsreq *rep, struct lwp *l)
191 nmp->nm_so = NULL;
192 saddr = mtod(nmp->nm_nam, struct sockaddr *);
193 error = socreate(saddr->sa_family, &nmp->nm_so,
194 nmp->nm_sotype, nmp->nm_soproto, l, NULL);
197 so = nmp->nm_so;
203 nmp->nm_soflags = so->so_proto->pr_flags;
208 if (saddr->sa_family == AF_INET && (nmp->nm_flag & NFSMNT_RESVPORT)) {
222 if (saddr->sa_family == AF_INET6 && (nmp->nm_flag & NFSMNT_RESVPORT)) {
241 if (nmp->nm_flag & NFSMNT_NOCONN) {
242 if (nmp->nm_soflags & PR_CONNREQUIRED) {
248 error = soconnect(so, mtod(nmp->nm_nam, struct sockaddr *), l);
263 (error = nfs_sigintr(nmp, rep, rep->r_lwp)) != 0){
276 if (nmp->nm_flag & (NFSMNT_SOFT | NFSMNT_INT)) {
287 if (nmp->nm_sotype == SOCK_DGRAM) {
288 sndreserve = (nmp->nm_wsize + NFS_MAXPKTHDR) * 3;
289 rcvreserve = (uimax(nmp->nm_rsize, nmp->nm_readdirsize) +
291 } else if (nmp->nm_sotype == SOCK_SEQPACKET) {
292 sndreserve = (nmp->nm_wsize + NFS_MAXPKTHDR) * 3;
293 rcvreserve = (uimax(nmp->nm_rsize, nmp->nm_readdirsize) +
297 if (nmp->nm_sotype != SOCK_STREAM)
309 sndreserve = (nmp->nm_wsize + NFS_MAXPKTHDR +
311 rcvreserve = (nmp->nm_rsize + NFS_MAXPKTHDR +
325 nmp->nm_srtt[0] = nmp->nm_srtt[1] = nmp->nm_srtt[2] = nmp->nm_srtt[3] =
327 nmp->nm_sdrtt[0] = nmp->nm_sdrtt[1] = nmp->nm_sdrtt[2] =
328 nmp->nm_sdrtt[3] = 0;
329 nmp->nm_cwnd = NFS_MAXCWND / 2; /* Initial send window */
330 nmp->nm_sent = 0;
331 nmp->nm_timeouts = 0;
335 nfs_disconnect(nmp);
352 struct nfsmount *nmp = rep->r_nmp;
356 nfs_disconnect(nmp);
361 if (nmp->nm_iflag & NFSMNT_DISMNTFORCE)
365 while ((error = nfs_connect(nmp, rep, &lwp0)) != 0) {
377 if ((nmp->nm_flag & NFSMNT_SOFT) &&
378 (time_uptime - before_ts > nmp->nm_timeo / NFS_HZ))
391 if (rp->r_nmp == nmp) {
406 nfs_disconnect(struct nfsmount *nmp)
411 if (nmp->nm_so) {
412 so = nmp->nm_so;
413 nmp->nm_so = NULL;
417 drain = (nmp->nm_iflag & NFSMNT_DISMNT) != 0;
423 * wait for them to go away unhappy, to prevent *nmp
426 mutex_enter(&nmp->nm_lock);
427 while (nmp->nm_waiters > 0) {
428 cv_broadcast(&nmp->nm_rcvcv);
429 cv_broadcast(&nmp->nm_sndcv);
430 cv_wait(&nmp->nm_disconcv, &nmp->nm_lock);
432 mutex_exit(&nmp->nm_lock);
437 if (drain && (nmp->nm_waiters > 0))
443 nfs_safedisconnect(struct nfsmount *nmp)
448 dummyreq.r_nmp = nmp;
449 nfs_rcvlock(nmp, &dummyreq); /* XXX ignored error return */
450 nfs_disconnect(nmp);
451 nfs_rcvunlock(nmp);
758 struct nfsmount *nmp;
768 nmp = rep->r_nmp;
771 if (nfs_sigintr(nmp, rep, rep->r_lwp)) {
777 if (nmp->nm_flag & NFSMNT_DUMBTIMR)
778 timeo = nmp->nm_timeo;
780 timeo = NFS_RTO(nmp, nfs_proct[rep->r_procnum]);
781 if (nmp->nm_timeouts > 0)
782 timeo *= nfs_backoff[nmp->nm_timeouts - 1];
787 if (nmp->nm_timeouts <
789 nmp->nm_timeouts++;
795 rep->r_rexmit > nmp->nm_deadthresh) {
797 nmp->nm_mountp->mnt_stat.f_mntfromname,
806 if (nmp->nm_sotype != SOCK_DGRAM) {
811 if ((so = nmp->nm_so) == NULL)
822 ((nmp->nm_flag & NFSMNT_DUMBTIMR) ||
824 nmp->nm_sent < nmp->nm_cwnd) &&
831 m, mtod(nmp->nm_nam, struct sockaddr *),
834 if (NFSIGNORE_SOERROR(nmp->nm_soflags, error)) {
853 nmp->nm_cwnd >>= 1;
854 if (nmp->nm_cwnd < NFS_CWNDSCALE)
855 nmp->nm_cwnd = NFS_CWNDSCALE;
859 nmp->nm_sent += NFS_CWNDSCALE;
886 nfs_sigintr(struct nfsmount *nmp, struct nfsreq *rep, struct lwp *l)
892 if (!(nmp->nm_flag & NFSMNT_INT))
908 nfs_rcvlock(struct nfsmount *nmp, struct nfsreq *rep)
910 int *flagp = &nmp->nm_iflag;
915 KASSERT(nmp == rep->r_nmp);
922 if (nmp->nm_flag & NFSMNT_INT) {
927 if (nmp->nm_flag & NFSMNT_SOFT)
928 slptimeo = nmp->nm_retry * nmp->nm_timeo;
930 if (nmp->nm_iflag & NFSMNT_DISMNTFORCE)
933 catch_p = (nmp->nm_flag & NFSMNT_INT) != 0;
934 mutex_enter(&nmp->nm_lock);
937 cv_signal(&nmp->nm_disconcv);
947 cv_signal(&nmp->nm_rcvcv);
952 cv_signal(&nmp->nm_rcvcv);
961 error = cv_timedwait_sig(&nmp->nm_rcvcv, &nmp->nm_lock,
964 error = cv_timedwait(&nmp->nm_rcvcv, &nmp->nm_lock,
969 (nmp->nm_flag & NFSMNT_SOFT)) {
980 mutex_exit(&nmp->nm_lock);
988 nfs_rcvunlock(struct nfsmount *nmp)
991 mutex_enter(&nmp->nm_lock);
992 if ((nmp->nm_iflag & NFSMNT_RCVLOCK) == 0)
994 nmp->nm_iflag &= ~NFSMNT_RCVLOCK;
995 cv_signal(&nmp->nm_rcvcv);
996 mutex_exit(&nmp->nm_lock);