Lines Matching refs:vbr
67 static inline blk_status_t virtblk_result(struct virtblk_req *vbr) in virtblk_result() argument
69 switch (vbr->status) { in virtblk_result()
86 static int virtblk_add_req_scsi(struct virtqueue *vq, struct virtblk_req *vbr, in virtblk_add_req_scsi() argument
92 sg_init_one(&hdr, &vbr->out_hdr, sizeof(vbr->out_hdr)); in virtblk_add_req_scsi()
94 sg_init_one(&cmd, vbr->sreq.cmd, vbr->sreq.cmd_len); in virtblk_add_req_scsi()
98 if (vbr->out_hdr.type & cpu_to_virtio32(vq->vdev, VIRTIO_BLK_T_OUT)) in virtblk_add_req_scsi()
104 sg_init_one(&sense, vbr->sense, SCSI_SENSE_BUFFERSIZE); in virtblk_add_req_scsi()
106 sg_init_one(&inhdr, &vbr->in_hdr, sizeof(vbr->in_hdr)); in virtblk_add_req_scsi()
108 sg_init_one(&status, &vbr->status, sizeof(vbr->status)); in virtblk_add_req_scsi()
111 return virtqueue_add_sgs(vq, sgs, num_out, num_in, vbr, GFP_ATOMIC); in virtblk_add_req_scsi()
116 struct virtblk_req *vbr = blk_mq_rq_to_pdu(req); in virtblk_scsi_request_done() local
118 struct scsi_request *sreq = &vbr->sreq; in virtblk_scsi_request_done()
120 sreq->resid_len = virtio32_to_cpu(vblk->vdev, vbr->in_hdr.residual); in virtblk_scsi_request_done()
121 sreq->sense_len = virtio32_to_cpu(vblk->vdev, vbr->in_hdr.sense_len); in virtblk_scsi_request_done()
122 sreq->result = virtio32_to_cpu(vblk->vdev, vbr->in_hdr.errors); in virtblk_scsi_request_done()
142 struct virtblk_req *vbr, struct scatterlist *data_sg, in virtblk_add_req_scsi() argument
153 static int virtblk_add_req(struct virtqueue *vq, struct virtblk_req *vbr, in virtblk_add_req() argument
159 sg_init_one(&hdr, &vbr->out_hdr, sizeof(vbr->out_hdr)); in virtblk_add_req()
163 if (vbr->out_hdr.type & cpu_to_virtio32(vq->vdev, VIRTIO_BLK_T_OUT)) in virtblk_add_req()
169 sg_init_one(&status, &vbr->status, sizeof(vbr->status)); in virtblk_add_req()
172 return virtqueue_add_sgs(vq, sgs, num_out, num_in, vbr, GFP_ATOMIC); in virtblk_add_req()
177 struct virtblk_req *vbr = blk_mq_rq_to_pdu(req); in virtblk_request_done() local
186 blk_mq_end_request(req, virtblk_result(vbr)); in virtblk_request_done()
194 struct virtblk_req *vbr; in virtblk_done() local
201 while ((vbr = virtqueue_get_buf(vblk->vqs[qid].vq, &len)) != NULL) { in virtblk_done()
202 struct request *req = blk_mq_rq_from_pdu(vbr); in virtblk_done()
222 struct virtblk_req *vbr = blk_mq_rq_to_pdu(req); in virtio_queue_rq() local
252 vbr->out_hdr.type = cpu_to_virtio32(vblk->vdev, type); in virtio_queue_rq()
253 vbr->out_hdr.sector = type ? in virtio_queue_rq()
255 vbr->out_hdr.ioprio = cpu_to_virtio32(vblk->vdev, req_get_ioprio(req)); in virtio_queue_rq()
259 num = blk_rq_map_sg(hctx->queue, req, vbr->sg); in virtio_queue_rq()
262 vbr->out_hdr.type |= cpu_to_virtio32(vblk->vdev, VIRTIO_BLK_T_OUT); in virtio_queue_rq()
264 vbr->out_hdr.type |= cpu_to_virtio32(vblk->vdev, VIRTIO_BLK_T_IN); in virtio_queue_rq()
269 err = virtblk_add_req_scsi(vblk->vqs[qid].vq, vbr, vbr->sg, num); in virtio_queue_rq()
271 err = virtblk_add_req(vblk->vqs[qid].vq, vbr, vbr->sg, num); in virtio_queue_rq()
589 struct virtblk_req *vbr = blk_mq_rq_to_pdu(rq); in virtblk_init_request() local
592 vbr->sreq.sense = vbr->sense; in virtblk_init_request()
594 sg_init_table(vbr->sg, vblk->sg_elems); in virtblk_init_request()
608 struct virtblk_req *vbr = blk_mq_rq_to_pdu(req); in virtblk_initialize_rq() local
610 scsi_req_init(&vbr->sreq); in virtblk_initialize_rq()