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