Lines Matching refs:iu
322 struct rnbd_iu *iu;
325 iu = kzalloc(sizeof(*iu), GFP_KERNEL);
326 if (!iu)
331 kfree(iu);
335 iu->permit = permit;
344 atomic_set(&iu->refcount, 2);
345 init_waitqueue_head(&iu->comp.wait);
346 iu->comp.errno = INT_MAX;
348 if (sg_alloc_table(&iu->sgt, 1, GFP_KERNEL)) {
350 kfree(iu);
354 return iu;
357 static void rnbd_put_iu(struct rnbd_clt_session *sess, struct rnbd_iu *iu)
359 if (atomic_dec_and_test(&iu->refcount)) {
360 sg_free_table(&iu->sgt);
361 rnbd_put_permit(sess, iu->permit);
362 kfree(iu);
370 struct rnbd_iu *iu;
372 iu = blk_mq_rq_to_pdu(rq);
373 sg_free_table_chained(&iu->sgt, RNBD_INLINE_SG_CNT);
374 rnbd_put_permit(sess, iu->permit);
375 blk_mq_end_request(rq, errno_to_blk_status(iu->errno));
380 struct rnbd_iu *iu = priv;
381 struct rnbd_clt_dev *dev = iu->dev;
382 struct request *rq = iu->rq;
385 iu->errno = errno;
394 static void wake_up_iu_comp(struct rnbd_iu *iu, int errno)
396 iu->comp.errno = errno;
397 wake_up(&iu->comp.wait);
402 struct rnbd_iu *iu = priv;
404 iu->errno = errno;
405 schedule_work(&iu->work);
409 struct rnbd_iu *iu, struct kvec *vec,
417 INIT_WORK(&iu->work, conf);
419 .priv = iu,
422 err = rtrs_clt_request(dir, &req_ops, rtrs, iu->permit,
425 wait_event(iu->comp.wait, iu->comp.errno != INT_MAX);
426 *errno = iu->comp.errno;
436 struct rnbd_iu *iu = container_of(work, struct rnbd_iu, work);
437 struct rnbd_clt_dev *dev = iu->dev;
439 wake_up_iu_comp(iu, iu->errno);
440 rnbd_put_iu(dev->sess, iu);
449 struct rnbd_iu *iu;
456 iu = rnbd_get_iu(sess, RTRS_ADMIN_CON, RTRS_PERMIT_WAIT);
457 if (!iu)
460 iu->buf = NULL;
461 iu->dev = dev;
467 err = send_usr_msg(sess->rtrs, WRITE, iu, &vec, 0, NULL, 0,
471 rnbd_put_iu(sess, iu);
476 rnbd_put_iu(sess, iu);
482 struct rnbd_iu *iu = container_of(work, struct rnbd_iu, work);
483 struct rnbd_msg_open_rsp *rsp = iu->buf;
484 struct rnbd_clt_dev *dev = iu->dev;
485 int errno = iu->errno;
510 wake_up_iu_comp(iu, errno);
511 rnbd_put_iu(dev->sess, iu);
517 struct rnbd_iu *iu = container_of(work, struct rnbd_iu, work);
518 struct rnbd_msg_sess_info_rsp *rsp = iu->buf;
519 struct rnbd_clt_session *sess = iu->sess;
521 if (!iu->errno)
525 wake_up_iu_comp(iu, iu->errno);
526 rnbd_put_iu(sess, iu);
535 struct rnbd_iu *iu;
546 iu = rnbd_get_iu(sess, RTRS_ADMIN_CON, RTRS_PERMIT_WAIT);
547 if (!iu) {
552 iu->buf = rsp;
553 iu->dev = dev;
555 sg_init_one(iu->sgt.sgl, rsp, sizeof(*rsp));
562 err = send_usr_msg(sess->rtrs, READ, iu,
563 &vec, sizeof(*rsp), iu->sgt.sgl, 1,
567 rnbd_put_iu(sess, iu);
573 rnbd_put_iu(sess, iu);
581 struct rnbd_iu *iu;
592 iu = rnbd_get_iu(sess, RTRS_ADMIN_CON, RTRS_PERMIT_WAIT);
593 if (!iu) {
598 iu->buf = rsp;
599 iu->sess = sess;
600 sg_init_one(iu->sgt.sgl, rsp, sizeof(*rsp));
615 err = send_usr_msg(sess->rtrs, READ, iu,
616 &vec, sizeof(*rsp), iu->sgt.sgl, 1,
621 rnbd_put_iu(sess, iu);
626 rnbd_put_iu(sess, iu);
990 struct rnbd_iu *iu)
993 struct rtrs_permit *permit = iu->permit;
1001 iu->rq = rq;
1002 iu->dev = dev;
1013 sg_cnt = blk_rq_map_sg(dev->queue, rq, iu->sgt.sgl);
1016 sg_mark_end(&iu->sgt.sgl[0]);
1025 size = rnbd_clt_get_sg_size(iu->sgt.sgl, sg_cnt);
1027 .priv = iu,
1031 &vec, 1, size, iu->sgt.sgl, sg_cnt);
1116 struct rnbd_iu *iu = blk_mq_rq_to_pdu(rq);
1123 iu->permit = rnbd_get_permit(dev->sess, RTRS_IO_CON,
1125 if (!iu->permit) {
1130 iu->sgt.sgl = iu->first_sgl;
1131 err = sg_alloc_table_chained(&iu->sgt,
1136 iu->sgt.sgl,
1141 rnbd_put_permit(dev->sess, iu->permit);
1146 err = rnbd_client_xfer_request(dev, rq, iu);
1153 sg_free_table_chained(&iu->sgt, RNBD_INLINE_SG_CNT);
1154 rnbd_put_permit(dev->sess, iu->permit);
1555 struct rnbd_iu *iu;
1586 iu = rnbd_get_iu(sess, RTRS_ADMIN_CON, RTRS_PERMIT_WAIT);
1587 if (!iu) {
1592 iu->buf = rsp;
1593 iu->dev = dev;
1594 sg_init_one(iu->sgt.sgl, rsp, sizeof(*rsp));
1601 ret = send_usr_msg(sess->rtrs, READ, iu,
1602 &vec, sizeof(*rsp), iu->sgt.sgl, 1,
1606 rnbd_put_iu(sess, iu);
1643 rnbd_put_iu(sess, iu);
1652 rnbd_put_iu(sess, iu);