Lines Matching refs:vbr
142 static int virtblk_add_req(struct virtqueue *vq, struct virtblk_req *vbr) in virtblk_add_req() argument
147 sg_init_one(&out_hdr, &vbr->out_hdr, sizeof(vbr->out_hdr)); in virtblk_add_req()
150 if (vbr->sg_table.nents) { in virtblk_add_req()
151 if (vbr->out_hdr.type & cpu_to_virtio32(vq->vdev, VIRTIO_BLK_T_OUT)) in virtblk_add_req()
152 sgs[num_out++] = vbr->sg_table.sgl; in virtblk_add_req()
154 sgs[num_out + num_in++] = vbr->sg_table.sgl; in virtblk_add_req()
157 sg_init_one(&in_hdr, &vbr->status, vbr->in_hdr_len); in virtblk_add_req()
160 return virtqueue_add_sgs(vq, sgs, num_out, num_in, vbr, GFP_ATOMIC); in virtblk_add_req()
209 static void virtblk_unmap_data(struct request *req, struct virtblk_req *vbr) in virtblk_unmap_data() argument
212 sg_free_table_chained(&vbr->sg_table, in virtblk_unmap_data()
217 struct virtblk_req *vbr) in virtblk_map_data() argument
224 vbr->sg_table.sgl = vbr->sg; in virtblk_map_data()
225 err = sg_alloc_table_chained(&vbr->sg_table, in virtblk_map_data()
227 vbr->sg_table.sgl, in virtblk_map_data()
232 return blk_rq_map_sg(hctx->queue, req, vbr->sg_table.sgl); in virtblk_map_data()
243 struct virtblk_req *vbr) in virtblk_setup_cmd() argument
245 size_t in_hdr_len = sizeof(vbr->status); in virtblk_setup_cmd()
251 vbr->out_hdr.ioprio = cpu_to_virtio32(vdev, req_get_ioprio(req)); in virtblk_setup_cmd()
290 in_hdr_len = sizeof(vbr->zone_append_in_hdr); in virtblk_setup_cmd()
308 vbr->in_hdr_len = in_hdr_len; in virtblk_setup_cmd()
309 vbr->out_hdr.type = cpu_to_virtio32(vdev, type); in virtblk_setup_cmd()
310 vbr->out_hdr.sector = cpu_to_virtio64(vdev, sector); in virtblk_setup_cmd()
323 struct virtblk_req *vbr = blk_mq_rq_to_pdu(req); in virtblk_request_done() local
324 blk_status_t status = virtblk_result(vbr->status); in virtblk_request_done()
326 virtblk_unmap_data(req, vbr); in virtblk_request_done()
330 req->__sector = le64_to_cpu(vbr->zone_append_in_hdr.append_sector); in virtblk_request_done()
349 struct virtblk_req *vbr; in virtblk_handle_req() local
353 while ((vbr = virtqueue_get_buf(vq->vq, &len)) != NULL) { in virtblk_handle_req()
354 struct request *req = blk_mq_rq_from_pdu(vbr); in virtblk_handle_req()
358 !blk_mq_add_to_batch(req, iob, vbr->status, in virtblk_handle_req()
424 struct virtblk_req *vbr) in virtblk_prep_rq() argument
429 status = virtblk_setup_cmd(vblk->vdev, req, vbr); in virtblk_prep_rq()
433 num = virtblk_map_data(hctx, req, vbr); in virtblk_prep_rq()
436 vbr->sg_table.nents = num; in virtblk_prep_rq()
448 struct virtblk_req *vbr = blk_mq_rq_to_pdu(req); in virtio_queue_rq() local
455 status = virtblk_prep_rq(hctx, vblk, req, vbr); in virtio_queue_rq()
460 err = virtblk_add_req(vblk->vqs[qid].vq, vbr); in virtio_queue_rq()
469 virtblk_unmap_data(req, vbr); in virtio_queue_rq()
485 struct virtblk_req *vbr = blk_mq_rq_to_pdu(req); in virtblk_prep_rq_batch() local
489 return virtblk_prep_rq(req->mq_hctx, vblk, req, vbr) == BLK_STS_OK; in virtblk_prep_rq_batch()
503 struct virtblk_req *vbr = blk_mq_rq_to_pdu(req); in virtblk_add_req_batch() local
505 err = virtblk_add_req(vq->vq, vbr); in virtblk_add_req_batch()
507 virtblk_unmap_data(req, vbr); in virtblk_add_req_batch()
587 struct virtblk_req *vbr; in virtblk_submit_zone_report() local
594 vbr = blk_mq_rq_to_pdu(req); in virtblk_submit_zone_report()
595 vbr->in_hdr_len = sizeof(vbr->status); in virtblk_submit_zone_report()
596 vbr->out_hdr.type = cpu_to_virtio32(vblk->vdev, VIRTIO_BLK_T_ZONE_REPORT); in virtblk_submit_zone_report()
597 vbr->out_hdr.sector = cpu_to_virtio64(vblk->vdev, sector); in virtblk_submit_zone_report()
604 err = blk_status_to_errno(virtblk_result(vbr->status)); in virtblk_submit_zone_report()
826 struct virtblk_req *vbr; in virtblk_get_id() local
833 vbr = blk_mq_rq_to_pdu(req); in virtblk_get_id()
834 vbr->in_hdr_len = sizeof(vbr->status); in virtblk_get_id()
835 vbr->out_hdr.type = cpu_to_virtio32(vblk->vdev, VIRTIO_BLK_T_GET_ID); in virtblk_get_id()
836 vbr->out_hdr.sector = 0; in virtblk_get_id()
843 err = blk_status_to_errno(virtblk_result(vbr->status)); in virtblk_get_id()