Lines Matching refs:vbr

92 static inline blk_status_t virtblk_result(struct virtblk_req *vbr)  in virtblk_result()  argument
94 switch (vbr->status) { in virtblk_result()
112 static int virtblk_add_req(struct virtqueue *vq, struct virtblk_req *vbr) in virtblk_add_req() argument
117 sg_init_one(&hdr, &vbr->out_hdr, sizeof(vbr->out_hdr)); in virtblk_add_req()
120 if (vbr->sg_table.nents) { in virtblk_add_req()
121 if (vbr->out_hdr.type & cpu_to_virtio32(vq->vdev, VIRTIO_BLK_T_OUT)) in virtblk_add_req()
122 sgs[num_out++] = vbr->sg_table.sgl; in virtblk_add_req()
124 sgs[num_out + num_in++] = vbr->sg_table.sgl; in virtblk_add_req()
127 sg_init_one(&status, &vbr->status, sizeof(vbr->status)); in virtblk_add_req()
130 return virtqueue_add_sgs(vq, sgs, num_out, num_in, vbr, GFP_ATOMIC); in virtblk_add_req()
181 static void virtblk_unmap_data(struct request *req, struct virtblk_req *vbr) in virtblk_unmap_data() argument
184 sg_free_table_chained(&vbr->sg_table, in virtblk_unmap_data()
189 struct virtblk_req *vbr) in virtblk_map_data() argument
196 vbr->sg_table.sgl = vbr->sg; in virtblk_map_data()
197 err = sg_alloc_table_chained(&vbr->sg_table, in virtblk_map_data()
199 vbr->sg_table.sgl, in virtblk_map_data()
204 return blk_rq_map_sg(hctx->queue, req, vbr->sg_table.sgl); in virtblk_map_data()
215 struct virtblk_req *vbr) in virtblk_setup_cmd() argument
220 vbr->out_hdr.sector = 0; in virtblk_setup_cmd()
225 vbr->out_hdr.sector = cpu_to_virtio64(vdev, in virtblk_setup_cmd()
230 vbr->out_hdr.sector = cpu_to_virtio64(vdev, in virtblk_setup_cmd()
254 vbr->out_hdr.type = cpu_to_virtio32(vdev, type); in virtblk_setup_cmd()
255 vbr->out_hdr.ioprio = cpu_to_virtio32(vdev, req_get_ioprio(req)); in virtblk_setup_cmd()
268 struct virtblk_req *vbr = blk_mq_rq_to_pdu(req); in virtblk_request_done() local
270 virtblk_unmap_data(req, vbr); in virtblk_request_done()
272 blk_mq_end_request(req, virtblk_result(vbr)); in virtblk_request_done()
280 struct virtblk_req *vbr; in virtblk_done() local
287 while ((vbr = virtqueue_get_buf(vblk->vqs[qid].vq, &len)) != NULL) { in virtblk_done()
288 struct request *req = blk_mq_rq_from_pdu(vbr); in virtblk_done()
334 struct virtblk_req *vbr) in virtblk_prep_rq() argument
339 status = virtblk_setup_cmd(vblk->vdev, req, vbr); in virtblk_prep_rq()
343 num = virtblk_map_data(hctx, req, vbr); in virtblk_prep_rq()
346 vbr->sg_table.nents = num; in virtblk_prep_rq()
358 struct virtblk_req *vbr = blk_mq_rq_to_pdu(req); in virtio_queue_rq() local
365 status = virtblk_prep_rq(hctx, vblk, req, vbr); in virtio_queue_rq()
370 err = virtblk_add_req(vblk->vqs[qid].vq, vbr); in virtio_queue_rq()
379 virtblk_unmap_data(req, vbr); in virtio_queue_rq()
395 struct virtblk_req *vbr = blk_mq_rq_to_pdu(req); in virtblk_prep_rq_batch() local
399 return virtblk_prep_rq(req->mq_hctx, vblk, req, vbr) == BLK_STS_OK; in virtblk_prep_rq_batch()
413 struct virtblk_req *vbr = blk_mq_rq_to_pdu(req); in virtblk_add_req_batch() local
415 err = virtblk_add_req(vq->vq, vbr); in virtblk_add_req_batch()
417 virtblk_unmap_data(req, vbr); in virtblk_add_req_batch()
855 struct virtblk_req *vbr; in virtblk_poll() local
862 while ((vbr = virtqueue_get_buf(vq->vq, &len)) != NULL) { in virtblk_poll()
863 struct request *req = blk_mq_rq_from_pdu(vbr); in virtblk_poll()
866 if (!blk_mq_add_to_batch(req, iob, vbr->status, in virtblk_poll()