5#ifndef __INCLUDE_DAO_BLK_DEV_H__
6#define __INCLUDE_DAO_BLK_DEV_H__
11#define DAO_BLKDEV_MAX (128)
12#define DAO_MAX_BLKDEV_ID_STRLEN (20)
15typedef enum dao_blkdev_type {
17 DAO_BLK_DEV_RAMDISK = 1,
64 int (*read)(uint16_t devid, uint64_t sector,
dao_blk_io_vec_t *iov,
size_t len);
65 int (*write)(uint16_t devid, uint64_t sector,
dao_blk_io_vec_t *iov,
size_t len);
66 int (*flush)(uint16_t devid);
67 int (*reset)(uint16_t devid);
68 int (*unmap)(uint16_t devid, uint64_t sector,
size_t len);
69 int (*write_zeroes)(uint16_t devid, uint64_t sector,
size_t len, uint8_t unmap);
70 int (*get_id)(uint16_t devid,
char *name,
size_t max_len);
71 int (*discard)(uint16_t devid, uint64_t sector,
size_t len);
73 void (*clear_stats)(uint16_t devid);
74 void (*get_features)(uint16_t devid, uint64_t *feat);
94typedef enum dao_blkdev_req_status {
96 DAO_BLK_DEV_REQ_COMPGOOD,
100 DAO_BLK_DEV_REQ_UNSUPPORTED,
102 DAO_BLK_DEV_REQ_IN_PROCESS
103} dao_blkdev_req_status_t;
131int dao_blkdev_destroy(uint16_t devid);
149int dao_blkdev_read(uint16_t devid, uint64_t sector,
dao_blk_io_vec_t *iov,
size_t len);
166int dao_blkdev_write(uint16_t devid, uint64_t sector,
dao_blk_io_vec_t *iov,
size_t len);
177int dao_blkdev_flush(uint16_t devid);
188int dao_blkdev_reset(uint16_t devid);
203int dao_blkdev_unmap(uint16_t devid, uint64_t sector,
size_t len);
220int dao_blkdev_write_zeroes(uint16_t devid, uint64_t sector,
size_t len, uint8_t unmap);
235int dao_blkdev_get_id(uint16_t devid,
char *name,
size_t max_len);
250int dao_blkdev_discard(uint16_t devid, uint64_t sector,
size_t len);
268void dao_blkdev_clear_stats(uint16_t devid);
280int dao_blkdev_type_from_str(
const char *type);
292const char *dao_blkdev_type_to_str(
int type);
uint64_t write_zeroes_ops
dao_blkdev_handlers_t * handlers