Lines Matching refs:rqp

70 smb_iod_rqprocessed(struct smb_rq *rqp, int error)
72 SMBRQ_SLOCK(rqp);
73 rqp->sr_lerror = error;
74 rqp->sr_rpgen++;
75 rqp->sr_state = SMBRQ_NOTIFIED;
76 wakeup(&rqp->sr_state);
77 SMBRQ_SUNLOCK(rqp);
83 struct smb_rq *rqp;
89 TAILQ_FOREACH(rqp, &iod->iod_rqlist, sr_link) {
90 rqp->sr_flags |= SMBR_RESTART;
91 smb_iod_rqprocessed(rqp, ENOTCONN);
213 smb_iod_sendrq(struct smbiod *iod, struct smb_rq *rqp)
217 struct smb_share *ssp = rqp->sr_share;
224 smb_iod_rqprocessed(rqp, ENOTCONN);
234 if (rqp->sr_sendcnt == 0) {
239 le16enc(rqp->sr_rqtid, ssp ? ssp->ss_tid : SMB_TID_UNKNOWN);
240 le16enc(rqp->sr_rquid, vcp ? vcp->vc_smbuid : 0);
241 mb_fixhdr(&rqp->sr_rq);
243 smb_rq_sign(rqp);
245 if (rqp->sr_sendcnt++ > 5) {
246 rqp->sr_flags |= SMBR_RESTART;
247 smb_iod_rqprocessed(rqp, rqp->sr_lerror);
254 SMBSDEBUG("M:%04x, P:%04x, U:%04x, T:%04x\n", rqp->sr_mid, 0, 0, 0);
255 m_dumpm(rqp->sr_rq.mb_top);
256 m = m_copym(rqp->sr_rq.mb_top, 0, M_COPYALL, M_WAITOK);
257 error = rqp->sr_lerror = SMB_TRAN_SEND(vcp, m, td);
259 getnanotime(&rqp->sr_timesent);
260 iod->iod_lastrqsent = rqp->sr_timesent;
261 rqp->sr_flags |= SMBR_SENT;
262 rqp->sr_state = SMBRQ_SENT;
274 if (smb_rq_intr(rqp))
275 smb_iod_rqprocessed(rqp, EINTR);
287 struct smb_rq *rqp;
333 TAILQ_FOREACH(rqp, &iod->iod_rqlist, sr_link) {
334 if (rqp->sr_mid != mid)
336 SMBRQ_SLOCK(rqp);
337 if (rqp->sr_rp.md_top == NULL) {
338 md_initm(&rqp->sr_rp, m);
340 if (rqp->sr_flags & SMBR_MULTIPACKET) {
341 md_append_record(&rqp->sr_rp, m);
343 SMBRQ_SUNLOCK(rqp);
348 SMBRQ_SUNLOCK(rqp);
349 smb_iod_rqprocessed(rqp, 0);
353 if (rqp == NULL) {
363 TAILQ_FOREACH(rqp, &iod->iod_rqlist, sr_link) {
364 if (smb_td_intr(rqp->sr_cred->scr_td)) {
365 smb_iod_rqprocessed(rqp, EINTR);
401 smb_iod_addrq(struct smb_rq *rqp)
403 struct smb_vc *vcp = rqp->sr_vc;
408 if (rqp->sr_cred->scr_td != NULL &&
409 rqp->sr_cred->scr_td->td_proc == iod->iod_p) {
410 rqp->sr_flags |= SMBR_INTERNAL;
412 TAILQ_INSERT_HEAD(&iod->iod_rqlist, rqp, sr_link);
415 if (smb_iod_sendrq(iod, rqp) != 0) {
422 if (rqp->sr_state != SMBRQ_NOTSENT)
426 if (rqp->sr_lerror)
427 smb_iod_removerq(rqp);
428 return rqp->sr_lerror;
456 TAILQ_INSERT_TAIL(&iod->iod_rqlist, rqp, sr_link);
463 smb_iod_removerq(struct smb_rq *rqp)
465 struct smb_vc *vcp = rqp->sr_vc;
469 if (rqp->sr_flags & SMBR_INTERNAL) {
471 TAILQ_REMOVE(&iod->iod_rqlist, rqp, sr_link);
476 while (rqp->sr_flags & SMBR_XLOCK) {
477 rqp->sr_flags |= SMBR_XLOCKWANT;
478 msleep(rqp, SMB_IOD_RQLOCKPTR(iod), PWAIT, "90xrm", 0);
480 TAILQ_REMOVE(&iod->iod_rqlist, rqp, sr_link);
491 smb_iod_waitrq(struct smb_rq *rqp)
493 struct smbiod *iod = rqp->sr_vc->vc_iod;
497 if (rqp->sr_flags & SMBR_INTERNAL) {
501 if (rqp->sr_rpgen != rqp->sr_rplast)
505 smb_iod_removerq(rqp);
506 return rqp->sr_lerror;
509 SMBRQ_SLOCK(rqp);
510 if (rqp->sr_rpgen == rqp->sr_rplast)
511 msleep(&rqp->sr_state, SMBRQ_SLOCKPTR(rqp), PWAIT, "90wrq", 0);
512 rqp->sr_rplast++;
513 SMBRQ_SUNLOCK(rqp);
514 error = rqp->sr_lerror;
515 if (rqp->sr_flags & SMBR_MULTIPACKET) {
521 TAILQ_REMOVE(&iod->iod_rqlist, rqp, sr_link);
522 TAILQ_INSERT_TAIL(&iod->iod_rqlist, rqp, sr_link);
525 smb_iod_removerq(rqp);
534 struct smb_rq *rqp;
543 TAILQ_FOREACH(rqp, &iod->iod_rqlist, sr_link) {
544 switch (rqp->sr_state) {
546 rqp->sr_flags |= SMBR_XLOCK;
548 herror = smb_iod_sendrq(iod, rqp);
550 rqp->sr_flags &= ~SMBR_XLOCK;
551 if (rqp->sr_flags & SMBR_XLOCKWANT) {
552 rqp->sr_flags &= ~SMBR_XLOCKWANT;
553 wakeup(rqp);
561 if (timespeccmp(&ts, &rqp->sr_timesent, >)) {
562 smb_iod_rqprocessed(rqp, ETIMEDOUT);