Lines Matching defs:rep
167 nfs_update_rtt(struct nfsreq *rep)
169 int t1 = rep->r_rtt + 1;
170 int index = nfs_ptimers[rep->r_procnum] - 1;
171 int *srtt = &rep->r_nmp->nm_srtt[index];
172 int *sdrtt = &rep->r_nmp->nm_sdrtt[index];
234 nfs_connect(struct nfsmount *nmp, struct nfsreq *rep)
322 so->so_error == 0 && rep &&
323 (error = nfs_sigintr(nmp, rep, rep->r_procp)) != 0){
413 nfs_reconnect(struct nfsreq *rep)
416 struct nfsmount *nmp = rep->r_nmp;
420 while ((error = nfs_connect(nmp, rep)) != 0) {
456 * "rep == NULL" indicates that it has been called from a server.
468 struct nfsreq *rep)
473 if (rep) {
474 if (rep->r_flags & R_SOFTTERM) {
478 if ((so = rep->r_nmp->nm_so) == NULL) {
479 rep->r_flags |= R_MUSTRESEND;
483 rep->r_flags &= ~R_MUSTRESEND;
484 soflags = rep->r_nmp->nm_soflags;
495 if (rep) {
499 if (rep->r_flags & R_SOFTTERM)
502 rep->r_flags |= R_MUSTRESEND;
526 nfs_receive(struct nfsreq *rep, struct mbuf **aname, struct mbuf **mp)
543 sotype = rep->r_nmp->nm_sotype;
554 error = nfs_sndlock(&rep->r_nmp->nm_flag, rep);
567 if (rep->r_mrep || (rep->r_flags & R_SOFTTERM)) {
568 nfs_sndunlock(&rep->r_nmp->nm_flag);
571 so = rep->r_nmp->nm_so;
573 error = nfs_reconnect(rep);
575 nfs_sndunlock(&rep->r_nmp->nm_flag);
580 while (rep->r_flags & R_MUSTRESEND) {
581 m = m_copym(rep->r_mreq, 0, M_COPYALL, M_WAIT);
583 rep->r_rtt = 0;
584 rep->r_flags &= ~R_TIMING;
585 error = nfs_send(so, rep->r_nmp->nm_nam, m, rep);
588 (error = nfs_reconnect(rep)) != 0) {
589 nfs_sndunlock(&rep->r_nmp->nm_flag);
595 nfs_sndunlock(&rep->r_nmp->nm_flag);
610 if (error == EWOULDBLOCK && rep) {
611 if (rep->r_flags & R_SOFTTERM)
619 if (rep->r_rexmit >=
620 rep->r_nmp->nm_retry) {
631 rep->r_nmp->nm_mountp->mnt_stat.f_mntfromname);
646 rep->r_nmp->nm_mountp->mnt_stat.f_mntfromname);
660 len, rep->r_nmp->nm_mountp->
680 if (error == EWOULDBLOCK && rep) {
681 if (rep->r_flags & R_SOFTTERM)
699 rep->r_nmp->nm_mountp->mnt_stat.f_mntfromname);
700 error = nfs_sndlock(&rep->r_nmp->nm_flag, rep);
702 error = nfs_reconnect(rep);
705 nfs_sndunlock(&rep->r_nmp->nm_flag);
709 if ((so = rep->r_nmp->nm_so) == NULL)
722 (rep->r_flags & R_SOFTTERM))
747 struct nfsreq *rep;
808 TAILQ_FOREACH(rep, &nmp->nm_reqsq, r_chain) {
809 if (rep->r_mrep == NULL && rxid == rep->r_xid) {
811 rep->r_mrep = info.nmi_mrep;
812 rep->r_md = info.nmi_md;
813 rep->r_dpos = info.nmi_dpos;
827 rep->r_flags &= ~R_SENT;
830 if (rep->r_flags & R_TIMING)
831 nfs_update_rtt(rep);
841 if (rep == 0) {
844 } else if (rep == myrep) {
845 if (rep->r_mrep == NULL)
870 struct nfsreq *rep;
873 rep = pool_get(&nfsreqpl, PR_WAITOK);
874 rep->r_nmp = VFSTONFS(vp->v_mount);
875 rep->r_vp = vp;
876 rep->r_procp = infop->nmi_procp;
877 rep->r_procnum = procnum;
880 rep->r_mreq = m_gethdr(M_WAIT, MT_DATA);
881 rep->r_mreq->m_next = infop->nmi_mreq;
882 rep->r_mreq->m_len = 0;
883 m_calchdrlen(rep->r_mreq);
887 nmp = rep->r_nmp;
890 nfsm_rpchead(rep, infop->nmi_cred, RPCAUTH_UNIX);
891 m = rep->r_mreq;
903 rep->r_rtt = rep->r_rexmit = 0;
904 if (nfs_ptimers[rep->r_procnum] != NFS_DEFAULT_TIMER)
905 rep->r_flags = R_TIMING;
907 rep->r_flags = 0;
908 rep->r_mrep = NULL;
920 TAILQ_INSERT_TAIL(&nmp->nm_reqsq, rep, r_chain);
931 error = nfs_sndlock(&nmp->nm_flag, rep);
934 m_copym(m, 0, M_COPYALL, M_WAIT), rep);
938 if (!error && (rep->r_flags & R_MUSTRESEND) == 0) {
940 rep->r_flags |= R_SENT;
943 rep->r_rtt = -1;
950 error = nfs_reply(rep);
955 TAILQ_REMOVE(&nmp->nm_reqsq, rep, r_chain);
962 if (rep->r_flags & R_SENT) {
963 rep->r_flags &= ~R_SENT; /* paranoia */
971 if (!error && (rep->r_flags & R_TPRINTFMSG))
972 nfs_msg(rep, "is alive again");
973 info.nmi_mrep = rep->r_mrep;
974 info.nmi_md = rep->r_md;
975 info.nmi_dpos = rep->r_dpos;
1039 cache_purge(rep->r_vp);
1051 m_freem(rep->r_mreq);
1052 pool_put(&nfsreqpl, rep);
1147 struct nfsreq *rep;
1153 TAILQ_FOREACH(rep, &nmp->nm_reqsq, r_chain) {
1154 if (rep->r_mrep || (rep->r_flags & R_SOFTTERM))
1156 if (nfs_sigintr(nmp, rep, rep->r_procp)) {
1157 rep->r_flags |= R_SOFTTERM;
1160 if (rep->r_rtt >= 0) {
1161 rep->r_rtt++;
1165 timeo = nfs_estimate_rto(nmp, rep->r_procnum);
1168 if (rep->r_rtt <= timeo)
1175 if ((rep->r_flags & R_TPRINTFMSG) == 0 && rep->r_rexmit > 4) {
1176 nfs_msg(rep, "not responding");
1177 rep->r_flags |= R_TPRINTFMSG;
1179 if (rep->r_rexmit >= nmp->nm_retry) { /* too many */
1181 rep->r_flags |= R_SOFTTERM;
1185 if (++rep->r_rexmit > NFS_MAXREXMIT)
1186 rep->r_rexmit = NFS_MAXREXMIT;
1198 rep->r_rtt = -1;
1199 if (sbspace(so, &so->so_snd) >= rep->r_mreq->m_pkthdr.len &&
1201 (rep->r_flags & R_SENT) ||
1203 (m = m_copym(rep->r_mreq, 0, M_COPYALL, M_DONTWAIT))){
1217 if (rep->r_flags & R_SENT) {
1218 rep->r_flags &= ~R_TIMING;
1219 if (++rep->r_rexmit > NFS_MAXREXMIT)
1220 rep->r_rexmit = NFS_MAXREXMIT;
1226 rep->r_flags |= R_SENT;
1229 rep->r_rtt = 0;
1242 nfs_sigintr(struct nfsmount *nmp, struct nfsreq *rep, struct proc *p)
1245 if (rep && (rep->r_flags & R_SOFTTERM))
1262 nfs_sndlock(int *flagp, struct nfsreq *rep)
1268 if (rep) {
1269 p = rep->r_procp;
1270 if (rep->r_nmp->nm_flag & NFSMNT_INT)
1275 if (rep && nfs_sigintr(rep->r_nmp, rep, p))
1305 nfs_rcvlock(struct nfsreq *rep)
1308 int *flagp = &rep->r_nmp->nm_flag;
1317 if (nfs_sigintr(rep->r_nmp, rep, rep->r_procp))
1321 if (rep->r_mrep != NULL) {
1569 nfs_msg(struct nfsreq *rep, char *msg)
1573 if (rep->r_procp)
1574 tpr = tprintf_open(rep->r_procp);
1579 rep->r_nmp->nm_mountp->mnt_stat.f_mntfromname, msg);