Lines Matching refs:rqp

72 smb_iod_rqprocessed(struct smb_rq *rqp, int error)
74 SMBRQ_SLOCK(rqp);
75 rqp->sr_lerror = error;
76 rqp->sr_rpgen++;
77 rqp->sr_state = SMBRQ_NOTIFIED;
78 wakeup(&rqp->sr_state);
79 SMBRQ_SUNLOCK(rqp);
85 struct smb_rq *rqp;
91 TAILQ_FOREACH(rqp, &iod->iod_rqlist, sr_link) {
92 rqp->sr_flags |= SMBR_RESTART;
93 smb_iod_rqprocessed(rqp, ENOTCONN);
215 smb_iod_sendrq(struct smbiod *iod, struct smb_rq *rqp)
219 struct smb_share *ssp = rqp->sr_share;
226 smb_iod_rqprocessed(rqp, ENOTCONN);
236 if (rqp->sr_sendcnt == 0) {
241 le16enc(rqp->sr_rqtid, ssp ? ssp->ss_tid : SMB_TID_UNKNOWN);
242 le16enc(rqp->sr_rquid, vcp ? vcp->vc_smbuid : 0);
243 mb_fixhdr(&rqp->sr_rq);
245 smb_rq_sign(rqp);
247 if (rqp->sr_sendcnt++ > 5) {
248 rqp->sr_flags |= SMBR_RESTART;
249 smb_iod_rqprocessed(rqp, rqp->sr_lerror);
256 SMBSDEBUG("M:%04x, P:%04x, U:%04x, T:%04x\n", rqp->sr_mid, 0, 0, 0);
257 m_dumpm(rqp->sr_rq.mb_top);
258 m = m_copym(rqp->sr_rq.mb_top, 0, M_COPYALL, M_WAITOK);
259 error = rqp->sr_lerror = SMB_TRAN_SEND(vcp, m, td);
261 getnanotime(&rqp->sr_timesent);
262 iod->iod_lastrqsent = rqp->sr_timesent;
263 rqp->sr_flags |= SMBR_SENT;
264 rqp->sr_state = SMBRQ_SENT;
276 if (smb_rq_intr(rqp))
277 smb_iod_rqprocessed(rqp, EINTR);
289 struct smb_rq *rqp;
335 TAILQ_FOREACH(rqp, &iod->iod_rqlist, sr_link) {
336 if (rqp->sr_mid != mid)
338 SMBRQ_SLOCK(rqp);
339 if (rqp->sr_rp.md_top == NULL) {
340 md_initm(&rqp->sr_rp, m);
342 if (rqp->sr_flags & SMBR_MULTIPACKET) {
343 md_append_record(&rqp->sr_rp, m);
345 SMBRQ_SUNLOCK(rqp);
350 SMBRQ_SUNLOCK(rqp);
351 smb_iod_rqprocessed(rqp, 0);
355 if (rqp == NULL) {
365 TAILQ_FOREACH(rqp, &iod->iod_rqlist, sr_link) {
366 if (smb_td_intr(rqp->sr_cred->scr_td)) {
367 smb_iod_rqprocessed(rqp, EINTR);
403 smb_iod_addrq(struct smb_rq *rqp)
405 struct smb_vc *vcp = rqp->sr_vc;
410 if (rqp->sr_cred->scr_td != NULL &&
411 rqp->sr_cred->scr_td->td_proc == iod->iod_p) {
412 rqp->sr_flags |= SMBR_INTERNAL;
414 TAILQ_INSERT_HEAD(&iod->iod_rqlist, rqp, sr_link);
417 if (smb_iod_sendrq(iod, rqp) != 0) {
424 if (rqp->sr_state != SMBRQ_NOTSENT)
428 if (rqp->sr_lerror)
429 smb_iod_removerq(rqp);
430 return rqp->sr_lerror;
458 TAILQ_INSERT_TAIL(&iod->iod_rqlist, rqp, sr_link);
465 smb_iod_removerq(struct smb_rq *rqp)
467 struct smb_vc *vcp = rqp->sr_vc;
471 if (rqp->sr_flags & SMBR_INTERNAL) {
473 TAILQ_REMOVE(&iod->iod_rqlist, rqp, sr_link);
478 while (rqp->sr_flags & SMBR_XLOCK) {
479 rqp->sr_flags |= SMBR_XLOCKWANT;
480 msleep(rqp, SMB_IOD_RQLOCKPTR(iod), PWAIT, "90xrm", 0);
482 TAILQ_REMOVE(&iod->iod_rqlist, rqp, sr_link);
493 smb_iod_waitrq(struct smb_rq *rqp)
495 struct smbiod *iod = rqp->sr_vc->vc_iod;
499 if (rqp->sr_flags & SMBR_INTERNAL) {
503 if (rqp->sr_rpgen != rqp->sr_rplast)
507 smb_iod_removerq(rqp);
508 return rqp->sr_lerror;
511 SMBRQ_SLOCK(rqp);
512 if (rqp->sr_rpgen == rqp->sr_rplast)
513 msleep(&rqp->sr_state, SMBRQ_SLOCKPTR(rqp), PWAIT, "90wrq", 0);
514 rqp->sr_rplast++;
515 SMBRQ_SUNLOCK(rqp);
516 error = rqp->sr_lerror;
517 if (rqp->sr_flags & SMBR_MULTIPACKET) {
523 TAILQ_REMOVE(&iod->iod_rqlist, rqp, sr_link);
524 TAILQ_INSERT_TAIL(&iod->iod_rqlist, rqp, sr_link);
527 smb_iod_removerq(rqp);
536 struct smb_rq *rqp;
545 TAILQ_FOREACH(rqp, &iod->iod_rqlist, sr_link) {
546 switch (rqp->sr_state) {
548 rqp->sr_flags |= SMBR_XLOCK;
550 herror = smb_iod_sendrq(iod, rqp);
552 rqp->sr_flags &= ~SMBR_XLOCK;
553 if (rqp->sr_flags & SMBR_XLOCKWANT) {
554 rqp->sr_flags &= ~SMBR_XLOCKWANT;
555 wakeup(rqp);
563 if (timespeccmp(&ts, &rqp->sr_timesent, >)) {
564 smb_iod_rqprocessed(rqp, ETIMEDOUT);