| /* |
| * Handler for virtio-blk I/O |
| * |
| * Copyright (C) 2022 Bytedance Inc. and/or its affiliates. All rights reserved. |
| * |
| * Author: |
| * Xie Yongji <xieyongji@bytedance.com> |
| * |
| * This work is licensed under the terms of the GNU GPL, version 2 or |
| * later. See the COPYING file in the top-level directory. |
| */ |
| |
| #ifndef VIRTIO_BLK_HANDLER_H |
| #define VIRTIO_BLK_HANDLER_H |
| |
| #include "sysemu/block-backend.h" |
| |
| #define VIRTIO_BLK_SECTOR_BITS 9 |
| #define VIRTIO_BLK_SECTOR_SIZE (1ULL << VIRTIO_BLK_SECTOR_BITS) |
| |
| #define VIRTIO_BLK_MAX_DISCARD_SECTORS 32768 |
| #define VIRTIO_BLK_MAX_WRITE_ZEROES_SECTORS 32768 |
| |
| typedef struct { |
| BlockBackend *blk; |
| char *serial; |
| uint32_t logical_block_size; |
| bool writable; |
| } VirtioBlkHandler; |
| |
| int coroutine_fn virtio_blk_process_req(VirtioBlkHandler *handler, |
| struct iovec *in_iov, |
| struct iovec *out_iov, |
| unsigned int in_num, |
| unsigned int out_num); |
| |
| #endif /* VIRTIO_BLK_HANDLER_H */ |