Lines Matching refs:vbr

140 static int virtblk_add_req(struct virtqueue *vq, struct virtblk_req *vbr)
145 sg_init_one(&out_hdr, &vbr->out_hdr, sizeof(vbr->out_hdr));
148 if (vbr->sg_table.nents) {
149 if (vbr->out_hdr.type & cpu_to_virtio32(vq->vdev, VIRTIO_BLK_T_OUT))
150 sgs[num_out++] = vbr->sg_table.sgl;
152 sgs[num_out + num_in++] = vbr->sg_table.sgl;
155 sg_init_one(&in_hdr, &vbr->in_hdr.status, vbr->in_hdr_len);
158 return virtqueue_add_sgs(vq, sgs, num_out, num_in, vbr, GFP_ATOMIC);
207 static void virtblk_unmap_data(struct request *req, struct virtblk_req *vbr)
210 sg_free_table_chained(&vbr->sg_table,
215 struct virtblk_req *vbr)
222 vbr->sg_table.sgl = vbr->sg;
223 err = sg_alloc_table_chained(&vbr->sg_table,
225 vbr->sg_table.sgl,
230 return blk_rq_map_sg(hctx->queue, req, vbr->sg_table.sgl);
241 struct virtblk_req *vbr)
243 size_t in_hdr_len = sizeof(vbr->in_hdr.status);
252 vbr->out_hdr.ioprio = cpu_to_virtio32(vdev, req_get_ioprio(req));
291 in_hdr_len = sizeof(vbr->in_hdr.zone_append);
312 vbr->in_hdr_len = in_hdr_len;
313 vbr->out_hdr.type = cpu_to_virtio32(vdev, type);
314 vbr->out_hdr.sector = cpu_to_virtio64(vdev, sector);
330 static inline u8 virtblk_vbr_status(struct virtblk_req *vbr)
332 return *((u8 *)&vbr->in_hdr + vbr->in_hdr_len - 1);
337 struct virtblk_req *vbr = blk_mq_rq_to_pdu(req);
338 blk_status_t status = virtblk_result(virtblk_vbr_status(vbr));
341 virtblk_unmap_data(req, vbr);
346 vbr->in_hdr.zone_append.sector);
356 struct virtblk_req *vbr;
363 while ((vbr = virtqueue_get_buf(vblk->vqs[qid].vq, &len)) != NULL) {
364 struct request *req = blk_mq_rq_from_pdu(vbr);
410 struct virtblk_req *vbr)
415 status = virtblk_setup_cmd(vblk->vdev, req, vbr);
419 num = virtblk_map_data(hctx, req, vbr);
422 vbr->sg_table.nents = num;
434 struct virtblk_req *vbr = blk_mq_rq_to_pdu(req);
441 status = virtblk_prep_rq(hctx, vblk, req, vbr);
446 err = virtblk_add_req(vblk->vqs[qid].vq, vbr);
455 virtblk_unmap_data(req, vbr);
471 struct virtblk_req *vbr = blk_mq_rq_to_pdu(req);
475 return virtblk_prep_rq(req->mq_hctx, vblk, req, vbr) == BLK_STS_OK;
489 struct virtblk_req *vbr = blk_mq_rq_to_pdu(req);
491 err = virtblk_add_req(vq->vq, vbr);
493 virtblk_unmap_data(req, vbr);
572 struct virtblk_req *vbr;
579 vbr = blk_mq_rq_to_pdu(req);
580 vbr->in_hdr_len = sizeof(vbr->in_hdr.status);
581 vbr->out_hdr.type = cpu_to_virtio32(vblk->vdev, VIRTIO_BLK_T_ZONE_REPORT);
582 vbr->out_hdr.sector = cpu_to_virtio64(vblk->vdev, sector);
589 err = blk_status_to_errno(virtblk_result(vbr->in_hdr.status));
871 struct virtblk_req *vbr;
878 vbr = blk_mq_rq_to_pdu(req);
879 vbr->in_hdr_len = sizeof(vbr->in_hdr.status);
880 vbr->out_hdr.type = cpu_to_virtio32(vblk->vdev, VIRTIO_BLK_T_GET_ID);
881 vbr->out_hdr.sector = 0;
888 err = blk_status_to_errno(virtblk_result(vbr->in_hdr.status));
1267 struct virtblk_req *vbr;
1274 while ((vbr = virtqueue_get_buf(vq->vq, &len)) != NULL) {
1275 struct request *req = blk_mq_rq_from_pdu(vbr);
1279 !blk_mq_add_to_batch(req, iob, virtblk_vbr_status(vbr),