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)
13#define DAO_BLK_REQ_SECTOR_SHIFT (9)
16typedef enum dao_blkdev_type {
18 DAO_BLK_DEV_RAMDISK = 1,
67 int (*read)(uint16_t devid, uint64_t sector,
dao_blk_io_vec_t *iov,
size_t len);
68 int (*write)(uint16_t devid, uint64_t sector,
dao_blk_io_vec_t *iov,
size_t len);
69 int (*flush)(uint16_t devid);
70 int (*reset)(uint16_t devid);
71 int (*unmap)(uint16_t devid, uint64_t sector,
size_t len);
72 int (*write_zeroes)(uint16_t devid, uint64_t sector,
size_t len, uint8_t unmap);
73 int (*get_id)(uint16_t devid,
char *name,
size_t max_len);
74 int (*discard)(uint16_t devid, uint64_t sector,
size_t len);
76 void (*clear_stats)(uint16_t devid);
77 void (*get_features)(uint16_t devid, uint64_t *feat);
97typedef enum dao_blkdev_req_status {
99 DAO_BLK_DEV_REQ_COMPGOOD,
101 DAO_BLK_DEV_REQ_FAIL,
103 DAO_BLK_DEV_REQ_UNSUPPORTED,
105 DAO_BLK_DEV_REQ_IN_PROCESS
106} dao_blkdev_req_status_t;
134int dao_blkdev_destroy(uint16_t devid);
152int dao_blkdev_read(uint16_t devid, uint64_t sector,
dao_blk_io_vec_t *iov,
size_t len);
169int dao_blkdev_write(uint16_t devid, uint64_t sector,
dao_blk_io_vec_t *iov,
size_t len);
180int dao_blkdev_flush(uint16_t devid);
191int dao_blkdev_reset(uint16_t devid);
206int dao_blkdev_unmap(uint16_t devid, uint64_t sector,
size_t len);
223int dao_blkdev_write_zeroes(uint16_t devid, uint64_t sector,
size_t len, uint8_t unmap);
238int dao_blkdev_get_id(uint16_t devid,
char *name,
size_t max_len);
253int dao_blkdev_discard(uint16_t devid, uint64_t sector,
size_t len);
271void dao_blkdev_clear_stats(uint16_t devid);
283int dao_blkdev_type_from_str(
const char *type);
295const char *dao_blkdev_type_to_str(
int type);
uint64_t write_zeroes_ops
dao_blkdev_handlers_t * handlers