Lines Matching refs:blk_endpoint

69 	struct virtio_blk_endpoint *blk_endpoint = ctx;  in vfu_virtio_blk_vring_poll()  local
70 struct vfu_virtio_dev *dev = blk_endpoint->virtio.dev; in vfu_virtio_blk_vring_poll()
78 if (spdk_unlikely(blk_endpoint->virtio.quiesce_in_progress)) { in vfu_virtio_blk_vring_poll()
105 struct virtio_blk_endpoint *blk_endpoint = to_blk_endpoint(virtio_endpoint); in virtio_blk_start() local
107 if (blk_endpoint->ring_poller) { in virtio_blk_start()
112 blk_endpoint->io_channel = spdk_bdev_get_io_channel(blk_endpoint->bdev_desc); in virtio_blk_start()
113 blk_endpoint->ring_poller = SPDK_POLLER_REGISTER(vfu_virtio_blk_vring_poll, blk_endpoint, 0); in virtio_blk_start()
121 struct virtio_blk_endpoint *blk_endpoint = ctx; in _virtio_blk_stop_msg() local
123 spdk_poller_unregister(&blk_endpoint->ring_poller); in _virtio_blk_stop_msg()
124 spdk_put_io_channel(blk_endpoint->io_channel); in _virtio_blk_stop_msg()
125 blk_endpoint->io_channel = NULL; in _virtio_blk_stop_msg()
128 spdk_vfu_get_endpoint_id(blk_endpoint->virtio.endpoint)); in _virtio_blk_stop_msg()
134 struct virtio_blk_endpoint *blk_endpoint = to_blk_endpoint(virtio_endpoint); in virtio_blk_stop() local
136 if (!blk_endpoint->io_channel) { in virtio_blk_stop()
141 spdk_thread_send_msg(virtio_endpoint->thread, _virtio_blk_stop_msg, blk_endpoint); in virtio_blk_stop()
173 struct virtio_blk_endpoint *blk_endpoint = to_blk_endpoint(virtio_endpoint); in virtio_blk_process_req() local
184 blk_req->endpoint = blk_endpoint; in virtio_blk_process_req()
214 if (spdk_unlikely(blk_endpoint->bdev_desc == NULL)) { in virtio_blk_process_req()
230 ret = spdk_bdev_readv(blk_endpoint->bdev_desc, blk_endpoint->io_channel, in virtio_blk_process_req()
235 ret = spdk_bdev_writev(blk_endpoint->bdev_desc, blk_endpoint->io_channel, in virtio_blk_process_req()
259 ret = spdk_bdev_unmap(blk_endpoint->bdev_desc, blk_endpoint->io_channel, in virtio_blk_process_req()
285 ret = spdk_bdev_write_zeroes(blk_endpoint->bdev_desc, blk_endpoint->io_channel, in virtio_blk_process_req()
295 flush_bytes = spdk_bdev_get_num_blocks(blk_endpoint->bdev) * spdk_bdev_get_block_size( in virtio_blk_process_req()
296 blk_endpoint->bdev); in virtio_blk_process_req()
302 ret = spdk_bdev_flush(blk_endpoint->bdev_desc, blk_endpoint->io_channel, in virtio_blk_process_req()
317 spdk_strcpy_pad(req->iovs[1].iov_base, spdk_bdev_get_name(blk_endpoint->bdev), in virtio_blk_process_req()
378 struct virtio_blk_endpoint *blk_endpoint = event_ctx; in bdev_event_cb() local
385 virtio_blk_update_config(&blk_endpoint->blk_cfg, NULL, 0); in bdev_event_cb()
387 if (blk_endpoint->io_channel) { in bdev_event_cb()
388 spdk_thread_send_msg(blk_endpoint->virtio.thread, _virtio_blk_stop_msg, blk_endpoint); in bdev_event_cb()
391 if (blk_endpoint->bdev_desc) { in bdev_event_cb()
392 spdk_thread_send_msg(blk_endpoint->init_thread, _vfu_virtio_blk_bdev_close, in bdev_event_cb()
393 blk_endpoint->bdev_desc); in bdev_event_cb()
394 blk_endpoint->bdev_desc = NULL; in bdev_event_cb()
399 virtio_blk_update_config(&blk_endpoint->blk_cfg, blk_endpoint->bdev, in bdev_event_cb()
400 blk_endpoint->virtio.num_queues); in bdev_event_cb()
401 vfu_virtio_notify_config(&blk_endpoint->virtio); in bdev_event_cb()
412 struct virtio_blk_endpoint *blk_endpoint = to_blk_endpoint(virtio_endpoint); in virtio_blk_get_supported_features() local
421 bdev = blk_endpoint->bdev; in virtio_blk_get_supported_features()
442 struct virtio_blk_endpoint *blk_endpoint = to_blk_endpoint(virtio_endpoint); in virtio_blk_get_device_specific_config() local
451 blk_cfg = (uint8_t *)&blk_endpoint->blk_cfg; in virtio_blk_get_device_specific_config()
495 struct virtio_blk_endpoint *blk_endpoint; in vfu_virtio_blk_add_bdev() local
505 blk_endpoint = to_blk_endpoint(virtio_endpoint); in vfu_virtio_blk_add_bdev()
507 if (blk_endpoint->bdev_desc) { in vfu_virtio_blk_add_bdev()
513 blk_endpoint->virtio.num_queues = num_queues; in vfu_virtio_blk_add_bdev()
516 blk_endpoint->virtio.qsize = qsize; in vfu_virtio_blk_add_bdev()
518 blk_endpoint->virtio.packed_ring = packed_ring; in vfu_virtio_blk_add_bdev()
522 bdev_name, blk_endpoint->virtio.num_queues, blk_endpoint->virtio.qsize, in vfu_virtio_blk_add_bdev()
525 ret = spdk_bdev_open_ext(bdev_name, true, bdev_event_cb, blk_endpoint, in vfu_virtio_blk_add_bdev()
526 &blk_endpoint->bdev_desc); in vfu_virtio_blk_add_bdev()
532 blk_endpoint->bdev = spdk_bdev_desc_get_bdev(blk_endpoint->bdev_desc); in vfu_virtio_blk_add_bdev()
533 virtio_blk_update_config(&blk_endpoint->blk_cfg, blk_endpoint->bdev, in vfu_virtio_blk_add_bdev()
534 blk_endpoint->virtio.num_queues); in vfu_virtio_blk_add_bdev()
535 blk_endpoint->init_thread = spdk_get_thread(); in vfu_virtio_blk_add_bdev()
544 struct virtio_blk_endpoint *blk_endpoint = to_blk_endpoint(virtio_endpoint); in vfu_virtio_blk_endpoint_destruct() local
546 if (blk_endpoint->bdev_desc) { in vfu_virtio_blk_endpoint_destruct()
547 spdk_thread_send_msg(blk_endpoint->init_thread, _vfu_virtio_blk_bdev_close, in vfu_virtio_blk_endpoint_destruct()
548 blk_endpoint->bdev_desc); in vfu_virtio_blk_endpoint_destruct()
549 blk_endpoint->bdev_desc = NULL; in vfu_virtio_blk_endpoint_destruct()
552 vfu_virtio_endpoint_destruct(&blk_endpoint->virtio); in vfu_virtio_blk_endpoint_destruct()
553 free(blk_endpoint); in vfu_virtio_blk_endpoint_destruct()
562 struct virtio_blk_endpoint *blk_endpoint; in vfu_virtio_blk_endpoint_init() local
565 blk_endpoint = calloc(1, sizeof(*blk_endpoint)); in vfu_virtio_blk_endpoint_init()
566 if (!blk_endpoint) { in vfu_virtio_blk_endpoint_init()
570 ret = vfu_virtio_endpoint_setup(&blk_endpoint->virtio, endpoint, basename, endpoint_name, in vfu_virtio_blk_endpoint_init()
574 free(blk_endpoint); in vfu_virtio_blk_endpoint_init()
578 return (void *)&blk_endpoint->virtio; in vfu_virtio_blk_endpoint_init()
586 struct virtio_blk_endpoint *blk_endpoint = to_blk_endpoint(virtio_endpoint); in vfu_virtio_blk_get_device_info() local
588 vfu_virtio_get_device_info(&blk_endpoint->virtio, device_info); in vfu_virtio_blk_get_device_info()