Lines Matching refs:iu
348 struct rnbd_iu *iu;
356 iu = rtrs_permit_to_pdu(permit);
357 iu->permit = permit;
366 atomic_set(&iu->refcount, 2);
367 init_waitqueue_head(&iu->comp.wait);
368 iu->comp.errno = INT_MAX;
370 return iu;
373 static void rnbd_put_iu(struct rnbd_clt_session *sess, struct rnbd_iu *iu)
375 if (atomic_dec_and_test(&iu->refcount))
376 rnbd_put_permit(sess, iu->permit);
383 struct rnbd_iu *iu;
385 iu = blk_mq_rq_to_pdu(rq);
386 rnbd_put_permit(sess, iu->permit);
387 blk_mq_end_request(rq, errno_to_blk_status(iu->errno));
392 struct rnbd_iu *iu = priv;
393 struct rnbd_clt_dev *dev = iu->dev;
394 struct request *rq = iu->rq;
397 iu->errno = errno;
406 static void wake_up_iu_comp(struct rnbd_iu *iu, int errno)
408 iu->comp.errno = errno;
409 wake_up(&iu->comp.wait);
414 struct rnbd_iu *iu = priv;
416 iu->errno = errno;
417 schedule_work(&iu->work);
426 struct rnbd_iu *iu, struct kvec *vec,
434 INIT_WORK(&iu->work, conf);
436 .priv = iu,
439 err = rtrs_clt_request(dir, &req_ops, rtrs, iu->permit,
442 wait_event(iu->comp.wait, iu->comp.errno != INT_MAX);
443 *errno = iu->comp.errno;
453 struct rnbd_iu *iu = container_of(work, struct rnbd_iu, work);
454 struct rnbd_clt_dev *dev = iu->dev;
456 wake_up_iu_comp(iu, iu->errno);
457 rnbd_put_iu(dev->sess, iu);
465 struct rnbd_iu *iu;
472 iu = rnbd_get_iu(sess, RTRS_ADMIN_CON, RTRS_PERMIT_WAIT);
473 if (!iu)
476 iu->buf = NULL;
477 iu->dev = dev;
479 sg_mark_end(&iu->sglist[0]);
485 err = send_usr_msg(sess->rtrs, WRITE, iu, &vec, 0, NULL, 0,
489 rnbd_put_iu(sess, iu);
494 rnbd_put_iu(sess, iu);
500 struct rnbd_iu *iu = container_of(work, struct rnbd_iu, work);
501 struct rnbd_msg_open_rsp *rsp = iu->buf;
502 struct rnbd_clt_dev *dev = iu->dev;
503 int errno = iu->errno;
521 wake_up_iu_comp(iu, errno);
522 rnbd_put_iu(dev->sess, iu);
528 struct rnbd_iu *iu = container_of(work, struct rnbd_iu, work);
529 struct rnbd_msg_sess_info_rsp *rsp = iu->buf;
530 struct rnbd_clt_session *sess = iu->sess;
532 if (!iu->errno)
536 wake_up_iu_comp(iu, iu->errno);
537 rnbd_put_iu(sess, iu);
546 struct rnbd_iu *iu;
557 iu = rnbd_get_iu(sess, RTRS_ADMIN_CON, RTRS_PERMIT_WAIT);
558 if (!iu) {
563 iu->buf = rsp;
564 iu->dev = dev;
566 sg_init_one(iu->sglist, rsp, sizeof(*rsp));
573 err = send_usr_msg(sess->rtrs, READ, iu,
574 &vec, sizeof(*rsp), iu->sglist, 1,
578 rnbd_put_iu(sess, iu);
584 rnbd_put_iu(sess, iu);
592 struct rnbd_iu *iu;
603 iu = rnbd_get_iu(sess, RTRS_ADMIN_CON, RTRS_PERMIT_WAIT);
604 if (!iu) {
609 iu->buf = rsp;
610 iu->sess = sess;
612 sg_init_one(iu->sglist, rsp, sizeof(*rsp));
627 err = send_usr_msg(sess->rtrs, READ, iu,
628 &vec, sizeof(*rsp), iu->sglist, 1,
633 rnbd_put_iu(sess, iu);
639 rnbd_put_iu(sess, iu);
999 struct rnbd_iu *iu)
1002 struct rtrs_permit *permit = iu->permit;
1010 iu->rq = rq;
1011 iu->dev = dev;
1022 sg_cnt = blk_rq_map_sg(dev->queue, rq, iu->sglist);
1026 sg_mark_end(&iu->sglist[0]);
1035 size = rnbd_clt_get_sg_size(iu->sglist, sg_cnt);
1037 .priv = iu,
1041 &vec, 1, size, iu->sglist, sg_cnt);
1126 struct rnbd_iu *iu = blk_mq_rq_to_pdu(rq);
1132 iu->permit = rnbd_get_permit(dev->sess, RTRS_IO_CON,
1134 if (unlikely(!iu->permit)) {
1140 err = rnbd_client_xfer_request(dev, rq, iu);
1145 rnbd_put_permit(dev->sess, iu->permit);
1149 rnbd_put_permit(dev->sess, iu->permit);
1156 struct rnbd_iu *iu = blk_mq_rq_to_pdu(rq);
1158 sg_init_table(iu->sglist, BMAX_SEGMENTS);