version 1.1.1.7, 2018/04/24 18:16:52
|
version 1.1.1.8, 2018/04/24 18:24:23
|
Line 27 typedef struct QEMUSnapshotInfo {
|
Line 27 typedef struct QEMUSnapshotInfo {
|
uint64_t vm_clock_nsec; /* VM clock relative to boot */ |
uint64_t vm_clock_nsec; /* VM clock relative to boot */ |
} QEMUSnapshotInfo; |
} QEMUSnapshotInfo; |
|
|
#define BDRV_O_RDONLY 0x0000 |
|
#define BDRV_O_RDWR 0x0002 |
#define BDRV_O_RDWR 0x0002 |
#define BDRV_O_ACCESS 0x0003 |
|
#define BDRV_O_CREAT 0x0004 /* create an empty file */ |
|
#define BDRV_O_SNAPSHOT 0x0008 /* open the file read only and save writes in a snapshot */ |
#define BDRV_O_SNAPSHOT 0x0008 /* open the file read only and save writes in a snapshot */ |
#define BDRV_O_FILE 0x0010 /* open as a raw file (do not try to |
|
use a disk image format on top of |
|
it (default for |
|
bdrv_file_open()) */ |
|
#define BDRV_O_NOCACHE 0x0020 /* do not use the host page cache */ |
#define BDRV_O_NOCACHE 0x0020 /* do not use the host page cache */ |
#define BDRV_O_CACHE_WB 0x0040 /* use write-back caching */ |
#define BDRV_O_CACHE_WB 0x0040 /* use write-back caching */ |
#define BDRV_O_NATIVE_AIO 0x0080 /* use native AIO instead of the thread pool */ |
#define BDRV_O_NATIVE_AIO 0x0080 /* use native AIO instead of the thread pool */ |
|
#define BDRV_O_NO_BACKING 0x0100 /* don't open the backing file */ |
|
#define BDRV_O_NO_FLUSH 0x0200 /* disable flushing on this disk */ |
|
|
#define BDRV_O_CACHE_MASK (BDRV_O_NOCACHE | BDRV_O_CACHE_WB) |
#define BDRV_O_CACHE_MASK (BDRV_O_NOCACHE | BDRV_O_CACHE_WB | BDRV_O_NO_FLUSH) |
|
|
#define BDRV_SECTOR_BITS 9 |
#define BDRV_SECTOR_BITS 9 |
#define BDRV_SECTOR_SIZE (1 << BDRV_SECTOR_BITS) |
#define BDRV_SECTOR_SIZE (1ULL << BDRV_SECTOR_BITS) |
#define BDRV_SECTOR_MASK ~(BDRV_SECTOR_SIZE - 1); |
#define BDRV_SECTOR_MASK ~(BDRV_SECTOR_SIZE - 1) |
|
|
|
typedef enum { |
|
BLOCK_ERR_REPORT, BLOCK_ERR_IGNORE, BLOCK_ERR_STOP_ENOSPC, |
|
BLOCK_ERR_STOP_ANY |
|
} BlockErrorAction; |
|
|
|
typedef enum { |
|
BDRV_ACTION_REPORT, BDRV_ACTION_IGNORE, BDRV_ACTION_STOP |
|
} BlockMonEventAction; |
|
|
|
void bdrv_mon_event(const BlockDriverState *bdrv, |
|
BlockMonEventAction action, int is_read); |
void bdrv_info_print(Monitor *mon, const QObject *data); |
void bdrv_info_print(Monitor *mon, const QObject *data); |
void bdrv_info(Monitor *mon, QObject **ret_data); |
void bdrv_info(Monitor *mon, QObject **ret_data); |
void bdrv_stats_print(Monitor *mon, const QObject *data); |
void bdrv_stats_print(Monitor *mon, const QObject *data); |
Line 53 void bdrv_info_stats(Monitor *mon, QObje
|
Line 59 void bdrv_info_stats(Monitor *mon, QObje
|
|
|
void bdrv_init(void); |
void bdrv_init(void); |
void bdrv_init_with_whitelist(void); |
void bdrv_init_with_whitelist(void); |
|
BlockDriver *bdrv_find_protocol(const char *filename); |
BlockDriver *bdrv_find_format(const char *format_name); |
BlockDriver *bdrv_find_format(const char *format_name); |
BlockDriver *bdrv_find_whitelisted_format(const char *format_name); |
BlockDriver *bdrv_find_whitelisted_format(const char *format_name); |
int bdrv_create(BlockDriver *drv, const char* filename, |
int bdrv_create(BlockDriver *drv, const char* filename, |
QEMUOptionParameter *options); |
QEMUOptionParameter *options); |
int bdrv_create2(BlockDriver *drv, |
int bdrv_create_file(const char* filename, QEMUOptionParameter *options); |
const char *filename, int64_t size_in_sectors, |
|
const char *backing_file, const char *backing_format, |
|
int flags); |
|
BlockDriverState *bdrv_new(const char *device_name); |
BlockDriverState *bdrv_new(const char *device_name); |
void bdrv_delete(BlockDriverState *bs); |
void bdrv_delete(BlockDriverState *bs); |
int bdrv_file_open(BlockDriverState **pbs, const char *filename, int flags); |
int bdrv_file_open(BlockDriverState **pbs, const char *filename, int flags); |
int bdrv_open(BlockDriverState *bs, const char *filename, int flags); |
int bdrv_open(BlockDriverState *bs, const char *filename, int flags, |
int bdrv_open2(BlockDriverState *bs, const char *filename, int flags, |
BlockDriver *drv); |
BlockDriver *drv); |
|
void bdrv_close(BlockDriverState *bs); |
void bdrv_close(BlockDriverState *bs); |
int bdrv_check(BlockDriverState *bs); |
int bdrv_attach(BlockDriverState *bs, DeviceState *qdev); |
|
void bdrv_detach(BlockDriverState *bs, DeviceState *qdev); |
|
DeviceState *bdrv_get_attached(BlockDriverState *bs); |
int bdrv_read(BlockDriverState *bs, int64_t sector_num, |
int bdrv_read(BlockDriverState *bs, int64_t sector_num, |
uint8_t *buf, int nb_sectors); |
uint8_t *buf, int nb_sectors); |
int bdrv_write(BlockDriverState *bs, int64_t sector_num, |
int bdrv_write(BlockDriverState *bs, int64_t sector_num, |
Line 86 int64_t bdrv_getlength(BlockDriverState
|
Line 91 int64_t bdrv_getlength(BlockDriverState
|
void bdrv_get_geometry(BlockDriverState *bs, uint64_t *nb_sectors_ptr); |
void bdrv_get_geometry(BlockDriverState *bs, uint64_t *nb_sectors_ptr); |
void bdrv_guess_geometry(BlockDriverState *bs, int *pcyls, int *pheads, int *psecs); |
void bdrv_guess_geometry(BlockDriverState *bs, int *pcyls, int *pheads, int *psecs); |
int bdrv_commit(BlockDriverState *bs); |
int bdrv_commit(BlockDriverState *bs); |
|
void bdrv_commit_all(void); |
|
int bdrv_change_backing_file(BlockDriverState *bs, |
|
const char *backing_file, const char *backing_fmt); |
void bdrv_register(BlockDriver *bdrv); |
void bdrv_register(BlockDriver *bdrv); |
|
|
|
|
|
typedef struct BdrvCheckResult { |
|
int corruptions; |
|
int leaks; |
|
int check_errors; |
|
} BdrvCheckResult; |
|
|
|
int bdrv_check(BlockDriverState *bs, BdrvCheckResult *res); |
|
|
/* async block I/O */ |
/* async block I/O */ |
typedef struct BlockDriverAIOCB BlockDriverAIOCB; |
typedef struct BlockDriverAIOCB BlockDriverAIOCB; |
typedef void BlockDriverCompletionFunc(void *opaque, int ret); |
typedef void BlockDriverCompletionFunc(void *opaque, int ret); |
Line 127 BlockDriverAIOCB *bdrv_aio_ioctl(BlockDr
|
Line 144 BlockDriverAIOCB *bdrv_aio_ioctl(BlockDr
|
/* Ensure contents are flushed to disk. */ |
/* Ensure contents are flushed to disk. */ |
void bdrv_flush(BlockDriverState *bs); |
void bdrv_flush(BlockDriverState *bs); |
void bdrv_flush_all(void); |
void bdrv_flush_all(void); |
|
void bdrv_close_all(void); |
|
|
|
int bdrv_has_zero_init(BlockDriverState *bs); |
int bdrv_is_allocated(BlockDriverState *bs, int64_t sector_num, int nb_sectors, |
int bdrv_is_allocated(BlockDriverState *bs, int64_t sector_num, int nb_sectors, |
int *pnum); |
int *pnum); |
|
|
Line 148 void bdrv_get_geometry_hint(BlockDriverS
|
Line 167 void bdrv_get_geometry_hint(BlockDriverS
|
int *pcyls, int *pheads, int *psecs); |
int *pcyls, int *pheads, int *psecs); |
int bdrv_get_type_hint(BlockDriverState *bs); |
int bdrv_get_type_hint(BlockDriverState *bs); |
int bdrv_get_translation_hint(BlockDriverState *bs); |
int bdrv_get_translation_hint(BlockDriverState *bs); |
|
void bdrv_set_on_error(BlockDriverState *bs, BlockErrorAction on_read_error, |
|
BlockErrorAction on_write_error); |
|
BlockErrorAction bdrv_get_on_error(BlockDriverState *bs, int is_read); |
|
void bdrv_set_removable(BlockDriverState *bs, int removable); |
int bdrv_is_removable(BlockDriverState *bs); |
int bdrv_is_removable(BlockDriverState *bs); |
int bdrv_is_read_only(BlockDriverState *bs); |
int bdrv_is_read_only(BlockDriverState *bs); |
int bdrv_set_read_only(BlockDriverState *bs, int read_only); |
|
int bdrv_is_sg(BlockDriverState *bs); |
int bdrv_is_sg(BlockDriverState *bs); |
int bdrv_enable_write_cache(BlockDriverState *bs); |
int bdrv_enable_write_cache(BlockDriverState *bs); |
int bdrv_is_inserted(BlockDriverState *bs); |
int bdrv_is_inserted(BlockDriverState *bs); |
Line 162 void bdrv_set_change_cb(BlockDriverState
|
Line 184 void bdrv_set_change_cb(BlockDriverState
|
void (*change_cb)(void *opaque), void *opaque); |
void (*change_cb)(void *opaque), void *opaque); |
void bdrv_get_format(BlockDriverState *bs, char *buf, int buf_size); |
void bdrv_get_format(BlockDriverState *bs, char *buf, int buf_size); |
BlockDriverState *bdrv_find(const char *name); |
BlockDriverState *bdrv_find(const char *name); |
|
BlockDriverState *bdrv_next(BlockDriverState *bs); |
void bdrv_iterate(void (*it)(void *opaque, BlockDriverState *bs), |
void bdrv_iterate(void (*it)(void *opaque, BlockDriverState *bs), |
void *opaque); |
void *opaque); |
int bdrv_is_encrypted(BlockDriverState *bs); |
int bdrv_is_encrypted(BlockDriverState *bs); |
Line 178 int bdrv_get_info(BlockDriverState *bs,
|
Line 201 int bdrv_get_info(BlockDriverState *bs,
|
const char *bdrv_get_encrypted_filename(BlockDriverState *bs); |
const char *bdrv_get_encrypted_filename(BlockDriverState *bs); |
void bdrv_get_backing_filename(BlockDriverState *bs, |
void bdrv_get_backing_filename(BlockDriverState *bs, |
char *filename, int filename_size); |
char *filename, int filename_size); |
|
int bdrv_can_snapshot(BlockDriverState *bs); |
|
int bdrv_is_snapshot(BlockDriverState *bs); |
|
BlockDriverState *bdrv_snapshots(void); |
int bdrv_snapshot_create(BlockDriverState *bs, |
int bdrv_snapshot_create(BlockDriverState *bs, |
QEMUSnapshotInfo *sn_info); |
QEMUSnapshotInfo *sn_info); |
int bdrv_snapshot_goto(BlockDriverState *bs, |
int bdrv_snapshot_goto(BlockDriverState *bs, |
Line 205 void bdrv_set_dirty_tracking(BlockDriver
|
Line 231 void bdrv_set_dirty_tracking(BlockDriver
|
int bdrv_get_dirty(BlockDriverState *bs, int64_t sector); |
int bdrv_get_dirty(BlockDriverState *bs, int64_t sector); |
void bdrv_reset_dirty(BlockDriverState *bs, int64_t cur_sector, |
void bdrv_reset_dirty(BlockDriverState *bs, int64_t cur_sector, |
int nr_sectors); |
int nr_sectors); |
|
int64_t bdrv_get_dirty_count(BlockDriverState *bs); |
|
|
|
|
|
typedef enum { |
|
BLKDBG_L1_UPDATE, |
|
|
|
BLKDBG_L1_GROW_ALLOC_TABLE, |
|
BLKDBG_L1_GROW_WRITE_TABLE, |
|
BLKDBG_L1_GROW_ACTIVATE_TABLE, |
|
|
|
BLKDBG_L2_LOAD, |
|
BLKDBG_L2_UPDATE, |
|
BLKDBG_L2_UPDATE_COMPRESSED, |
|
BLKDBG_L2_ALLOC_COW_READ, |
|
BLKDBG_L2_ALLOC_WRITE, |
|
|
|
BLKDBG_READ, |
|
BLKDBG_READ_AIO, |
|
BLKDBG_READ_BACKING, |
|
BLKDBG_READ_BACKING_AIO, |
|
BLKDBG_READ_COMPRESSED, |
|
|
|
BLKDBG_WRITE_AIO, |
|
BLKDBG_WRITE_COMPRESSED, |
|
|
|
BLKDBG_VMSTATE_LOAD, |
|
BLKDBG_VMSTATE_SAVE, |
|
|
|
BLKDBG_COW_READ, |
|
BLKDBG_COW_WRITE, |
|
|
|
BLKDBG_REFTABLE_LOAD, |
|
BLKDBG_REFTABLE_GROW, |
|
|
|
BLKDBG_REFBLOCK_LOAD, |
|
BLKDBG_REFBLOCK_UPDATE, |
|
BLKDBG_REFBLOCK_UPDATE_PART, |
|
BLKDBG_REFBLOCK_ALLOC, |
|
BLKDBG_REFBLOCK_ALLOC_HOOKUP, |
|
BLKDBG_REFBLOCK_ALLOC_WRITE, |
|
BLKDBG_REFBLOCK_ALLOC_WRITE_BLOCKS, |
|
BLKDBG_REFBLOCK_ALLOC_WRITE_TABLE, |
|
BLKDBG_REFBLOCK_ALLOC_SWITCH_TABLE, |
|
|
|
BLKDBG_CLUSTER_ALLOC, |
|
BLKDBG_CLUSTER_ALLOC_BYTES, |
|
BLKDBG_CLUSTER_FREE, |
|
|
|
BLKDBG_EVENT_MAX, |
|
} BlkDebugEvent; |
|
|
|
#define BLKDBG_EVENT(bs, evt) bdrv_debug_event(bs, evt) |
|
void bdrv_debug_event(BlockDriverState *bs, BlkDebugEvent event); |
|
|
#endif |
#endif |