1*5c368029SXie Yongji /* 2*5c368029SXie Yongji * Handler for virtio-blk I/O 3*5c368029SXie Yongji * 4*5c368029SXie Yongji * Copyright (C) 2022 Bytedance Inc. and/or its affiliates. All rights reserved. 5*5c368029SXie Yongji * 6*5c368029SXie Yongji * Author: 7*5c368029SXie Yongji * Xie Yongji <xieyongji@bytedance.com> 8*5c368029SXie Yongji * 9*5c368029SXie Yongji * This work is licensed under the terms of the GNU GPL, version 2 or 10*5c368029SXie Yongji * later. See the COPYING file in the top-level directory. 11*5c368029SXie Yongji */ 12*5c368029SXie Yongji 13*5c368029SXie Yongji #ifndef VIRTIO_BLK_HANDLER_H 14*5c368029SXie Yongji #define VIRTIO_BLK_HANDLER_H 15*5c368029SXie Yongji 16*5c368029SXie Yongji #include "sysemu/block-backend.h" 17*5c368029SXie Yongji 18*5c368029SXie Yongji #define VIRTIO_BLK_SECTOR_BITS 9 19*5c368029SXie Yongji #define VIRTIO_BLK_SECTOR_SIZE (1ULL << VIRTIO_BLK_SECTOR_BITS) 20*5c368029SXie Yongji 21*5c368029SXie Yongji #define VIRTIO_BLK_MAX_DISCARD_SECTORS 32768 22*5c368029SXie Yongji #define VIRTIO_BLK_MAX_WRITE_ZEROES_SECTORS 32768 23*5c368029SXie Yongji 24*5c368029SXie Yongji typedef struct { 25*5c368029SXie Yongji BlockBackend *blk; 26*5c368029SXie Yongji const char *serial; 27*5c368029SXie Yongji uint32_t logical_block_size; 28*5c368029SXie Yongji bool writable; 29*5c368029SXie Yongji } VirtioBlkHandler; 30*5c368029SXie Yongji 31*5c368029SXie Yongji int coroutine_fn virtio_blk_process_req(VirtioBlkHandler *handler, 32*5c368029SXie Yongji struct iovec *in_iov, 33*5c368029SXie Yongji struct iovec *out_iov, 34*5c368029SXie Yongji unsigned int in_num, 35*5c368029SXie Yongji unsigned int out_num); 36*5c368029SXie Yongji 37*5c368029SXie Yongji #endif /* VIRTIO_BLK_HANDLER_H */ 38