Diff for /qemu/block.h between versions 1.1.1.12 and 1.1.1.13

version 1.1.1.12, 2018/04/24 19:17:39 version 1.1.1.13, 2018/04/24 19:34:55
Line 15  typedef struct BlockDriverInfo { Line 15  typedef struct BlockDriverInfo {
     int cluster_size;      int cluster_size;
     /* offset at which the VM state can be saved (0 if not possible) */      /* offset at which the VM state can be saved (0 if not possible) */
     int64_t vm_state_offset;      int64_t vm_state_offset;
       bool is_dirty;
 } BlockDriverInfo;  } BlockDriverInfo;
   
   typedef struct BlockFragInfo {
       uint64_t allocated_clusters;
       uint64_t total_clusters;
       uint64_t fragmented_clusters;
   } BlockFragInfo;
   
 typedef struct QEMUSnapshotInfo {  typedef struct QEMUSnapshotInfo {
     char id_str[128]; /* unique snapshot id */      char id_str[128]; /* unique snapshot id */
     /* the following fields are informative. They are not needed for      /* the following fields are informative. They are not needed for
        the consistency of the snapshot */         the consistency of the snapshot */
     char name[256]; /* user choosen name */      char name[256]; /* user chosen name */
     uint32_t vm_state_size; /* VM state info size */      uint64_t vm_state_size; /* VM state info size */
     uint32_t date_sec; /* UTC date of the snapshot */      uint32_t date_sec; /* UTC date of the snapshot */
     uint32_t date_nsec;      uint32_t date_nsec;
     uint64_t vm_clock_nsec; /* VM clock relative to boot */      uint64_t vm_clock_nsec; /* VM clock relative to boot */
Line 70  typedef struct BlockDevOps { Line 77  typedef struct BlockDevOps {
 #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_BACKING  0x0100 /* don't open the backing file */
 #define BDRV_O_NO_FLUSH    0x0200 /* disable flushing on this disk */  #define BDRV_O_NO_FLUSH    0x0200 /* disable flushing on this disk */
   #define BDRV_O_COPY_ON_READ 0x0400 /* copy read backing sectors into image */
   #define BDRV_O_INCOMING    0x0800  /* consistency hint for incoming migration */
   
 #define BDRV_O_CACHE_MASK  (BDRV_O_NOCACHE | BDRV_O_CACHE_WB | BDRV_O_NO_FLUSH)  #define BDRV_O_CACHE_MASK  (BDRV_O_NOCACHE | BDRV_O_CACHE_WB | BDRV_O_NO_FLUSH)
   
Line 84  typedef enum { Line 93  typedef enum {
   
 typedef enum {  typedef enum {
     BDRV_ACTION_REPORT, BDRV_ACTION_IGNORE, BDRV_ACTION_STOP      BDRV_ACTION_REPORT, BDRV_ACTION_IGNORE, BDRV_ACTION_STOP
 } BlockMonEventAction;  } BlockQMPEventAction;
   
 void bdrv_iostatus_enable(BlockDriverState *bs);  void bdrv_iostatus_enable(BlockDriverState *bs);
 void bdrv_iostatus_reset(BlockDriverState *bs);  void bdrv_iostatus_reset(BlockDriverState *bs);
 void bdrv_iostatus_disable(BlockDriverState *bs);  void bdrv_iostatus_disable(BlockDriverState *bs);
 bool bdrv_iostatus_is_enabled(const BlockDriverState *bs);  bool bdrv_iostatus_is_enabled(const BlockDriverState *bs);
 void bdrv_iostatus_set_err(BlockDriverState *bs, int error);  void bdrv_iostatus_set_err(BlockDriverState *bs, int error);
 void bdrv_mon_event(const BlockDriverState *bdrv,  void bdrv_emit_qmp_error_event(const BlockDriverState *bdrv,
                     BlockMonEventAction action, int is_read);                                 BlockQMPEventAction 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);
 void bdrv_info_stats(Monitor *mon, QObject **ret_data);  void bdrv_info_stats(Monitor *mon, QObject **ret_data);
   
   /* disk I/O throttling */
   void bdrv_io_limits_enable(BlockDriverState *bs);
   void bdrv_io_limits_disable(BlockDriverState *bs);
   bool bdrv_io_limits_enabled(BlockDriverState *bs);
   
 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_protocol(const char *filename);
Line 108  int bdrv_create(BlockDriver *drv, const  Line 122  int bdrv_create(BlockDriver *drv, const 
 int bdrv_create_file(const char* filename, QEMUOptionParameter *options);  int bdrv_create_file(const char* filename, QEMUOptionParameter *options);
 BlockDriverState *bdrv_new(const char *device_name);  BlockDriverState *bdrv_new(const char *device_name);
 void bdrv_make_anon(BlockDriverState *bs);  void bdrv_make_anon(BlockDriverState *bs);
   void bdrv_append(BlockDriverState *bs_new, BlockDriverState *bs_top);
 void bdrv_delete(BlockDriverState *bs);  void bdrv_delete(BlockDriverState *bs);
 int bdrv_parse_cache_flags(const char *mode, int *flags);  int bdrv_parse_cache_flags(const char *mode, int *flags);
 int bdrv_file_open(BlockDriverState **pbs, const char *filename, int flags);  int bdrv_file_open(BlockDriverState **pbs, const char *filename, int flags);
Line 136  int bdrv_pwrite_sync(BlockDriverState *b Line 151  int bdrv_pwrite_sync(BlockDriverState *b
     const void *buf, int count);      const void *buf, int count);
 int coroutine_fn bdrv_co_readv(BlockDriverState *bs, int64_t sector_num,  int coroutine_fn bdrv_co_readv(BlockDriverState *bs, int64_t sector_num,
     int nb_sectors, QEMUIOVector *qiov);      int nb_sectors, QEMUIOVector *qiov);
   int coroutine_fn bdrv_co_copy_on_readv(BlockDriverState *bs,
       int64_t sector_num, int nb_sectors, QEMUIOVector *qiov);
 int coroutine_fn bdrv_co_writev(BlockDriverState *bs, int64_t sector_num,  int coroutine_fn bdrv_co_writev(BlockDriverState *bs, int64_t sector_num,
     int nb_sectors, QEMUIOVector *qiov);      int nb_sectors, QEMUIOVector *qiov);
   /*
    * Efficiently zero a region of the disk image.  Note that this is a regular
    * I/O request like read or write and should have a reasonable size.  This
    * function is not suitable for zeroing the entire image in a single request
    * because it may allocate memory for the entire region.
    */
   int coroutine_fn bdrv_co_write_zeroes(BlockDriverState *bs, int64_t sector_num,
       int nb_sectors);
   int coroutine_fn bdrv_co_is_allocated(BlockDriverState *bs, int64_t sector_num,
       int nb_sectors, int *pnum);
   BlockDriverState *bdrv_find_backing_image(BlockDriverState *bs,
       const char *backing_file);
 int bdrv_truncate(BlockDriverState *bs, int64_t offset);  int bdrv_truncate(BlockDriverState *bs, int64_t offset);
 int64_t bdrv_getlength(BlockDriverState *bs);  int64_t bdrv_getlength(BlockDriverState *bs);
 int64_t bdrv_get_allocated_file_size(BlockDriverState *bs);  int64_t bdrv_get_allocated_file_size(BlockDriverState *bs);
 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_commit_all(void);
 int bdrv_change_backing_file(BlockDriverState *bs,  int bdrv_change_backing_file(BlockDriverState *bs,
     const char *backing_file, const char *backing_fmt);      const char *backing_file, const char *backing_fmt);
 void bdrv_register(BlockDriver *bdrv);  void bdrv_register(BlockDriver *bdrv);
Line 154  typedef struct BdrvCheckResult { Line 183  typedef struct BdrvCheckResult {
     int corruptions;      int corruptions;
     int leaks;      int leaks;
     int check_errors;      int check_errors;
       BlockFragInfo bfi;
 } BdrvCheckResult;  } BdrvCheckResult;
   
 int bdrv_check(BlockDriverState *bs, BdrvCheckResult *res);  int bdrv_check(BlockDriverState *bs, BdrvCheckResult *res);
   
 /* async block I/O */  /* async block I/O */
 typedef struct BlockDriverAIOCB BlockDriverAIOCB;  
 typedef void BlockDriverCompletionFunc(void *opaque, int ret);  
 typedef void BlockDriverDirtyHandler(BlockDriverState *bs, int64_t sector,  typedef void BlockDriverDirtyHandler(BlockDriverState *bs, int64_t sector,
                                      int sector_num);                                       int sector_num);
 BlockDriverAIOCB *bdrv_aio_readv(BlockDriverState *bs, int64_t sector_num,  BlockDriverAIOCB *bdrv_aio_readv(BlockDriverState *bs, int64_t sector_num,
Line 201  BlockDriverAIOCB *bdrv_aio_ioctl(BlockDr Line 229  BlockDriverAIOCB *bdrv_aio_ioctl(BlockDr
 void bdrv_invalidate_cache(BlockDriverState *bs);  void bdrv_invalidate_cache(BlockDriverState *bs);
 void bdrv_invalidate_cache_all(void);  void bdrv_invalidate_cache_all(void);
   
   void bdrv_clear_incoming_migration_all(void);
   
 /* Ensure contents are flushed to disk.  */  /* Ensure contents are flushed to disk.  */
 int bdrv_flush(BlockDriverState *bs);  int bdrv_flush(BlockDriverState *bs);
 int coroutine_fn bdrv_co_flush(BlockDriverState *bs);  int coroutine_fn bdrv_co_flush(BlockDriverState *bs);
 void bdrv_flush_all(void);  void bdrv_flush_all(void);
 void bdrv_close_all(void);  void bdrv_close_all(void);
   void bdrv_drain_all(void);
   
 int bdrv_discard(BlockDriverState *bs, int64_t sector_num, int nb_sectors);  int bdrv_discard(BlockDriverState *bs, int64_t sector_num, int nb_sectors);
 int bdrv_co_discard(BlockDriverState *bs, int64_t sector_num, int nb_sectors);  int bdrv_co_discard(BlockDriverState *bs, int64_t sector_num, int nb_sectors);
Line 231  typedef enum FDriveType { Line 262  typedef enum FDriveType {
     FDRIVE_DRV_NONE = 0x03,   /* No drive connected     */      FDRIVE_DRV_NONE = 0x03,   /* No drive connected     */
 } FDriveType;  } FDriveType;
   
   typedef enum FDriveRate {
       FDRIVE_RATE_500K = 0x00,  /* 500 Kbps */
       FDRIVE_RATE_300K = 0x01,  /* 300 Kbps */
       FDRIVE_RATE_250K = 0x02,  /* 250 Kbps */
       FDRIVE_RATE_1M   = 0x03,  /*   1 Mbps */
   } FDriveRate;
   
 void bdrv_get_floppy_geometry_hint(BlockDriverState *bs, int *nb_heads,  void bdrv_get_floppy_geometry_hint(BlockDriverState *bs, int *nb_heads,
                                    int *max_track, int *last_sect,                                     int *max_track, int *last_sect,
                                    FDriveType drive_in, FDriveType *drive);                                     FDriveType drive_in, FDriveType *drive,
                                      FDriveRate *rate);
 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,  void bdrv_set_on_error(BlockDriverState *bs, BlockErrorAction on_read_error,
                        BlockErrorAction on_write_error);                         BlockErrorAction on_write_error);
Line 244  int bdrv_enable_write_cache(BlockDriverS Line 283  int bdrv_enable_write_cache(BlockDriverS
 int bdrv_is_inserted(BlockDriverState *bs);  int bdrv_is_inserted(BlockDriverState *bs);
 int bdrv_media_changed(BlockDriverState *bs);  int bdrv_media_changed(BlockDriverState *bs);
 void bdrv_lock_medium(BlockDriverState *bs, bool locked);  void bdrv_lock_medium(BlockDriverState *bs, bool locked);
 void bdrv_eject(BlockDriverState *bs, int eject_flag);  void bdrv_eject(BlockDriverState *bs, bool eject_flag);
 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);  BlockDriverState *bdrv_next(BlockDriverState *bs);
Line 264  int bdrv_get_info(BlockDriverState *bs,  Line 303  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);
   void bdrv_get_full_backing_filename(BlockDriverState *bs,
                                       char *dest, size_t sz);
 int bdrv_can_snapshot(BlockDriverState *bs);  int bdrv_can_snapshot(BlockDriverState *bs);
 int bdrv_is_snapshot(BlockDriverState *bs);  int bdrv_is_snapshot(BlockDriverState *bs);
 BlockDriverState *bdrv_snapshots(void);  BlockDriverState *bdrv_snapshots(void);
Line 305  void bdrv_reset_dirty(BlockDriverState * Line 346  void bdrv_reset_dirty(BlockDriverState *
                       int nr_sectors);                        int nr_sectors);
 int64_t bdrv_get_dirty_count(BlockDriverState *bs);  int64_t bdrv_get_dirty_count(BlockDriverState *bs);
   
   void bdrv_enable_copy_on_read(BlockDriverState *bs);
   void bdrv_disable_copy_on_read(BlockDriverState *bs);
   
 void bdrv_set_in_use(BlockDriverState *bs, int in_use);  void bdrv_set_in_use(BlockDriverState *bs, int in_use);
 int bdrv_in_use(BlockDriverState *bs);  int bdrv_in_use(BlockDriverState *bs);
   
Line 404  static inline unsigned int get_physical_ Line 448  static inline unsigned int get_physical_
   
 #define DEFINE_BLOCK_PROPERTIES(_state, _conf)                          \  #define DEFINE_BLOCK_PROPERTIES(_state, _conf)                          \
     DEFINE_PROP_DRIVE("drive", _state, _conf.bs),                       \      DEFINE_PROP_DRIVE("drive", _state, _conf.bs),                       \
     DEFINE_PROP_UINT16("logical_block_size", _state,                    \      DEFINE_PROP_BLOCKSIZE("logical_block_size", _state,                 \
                        _conf.logical_block_size, 512),                  \                            _conf.logical_block_size, 512),               \
     DEFINE_PROP_UINT16("physical_block_size", _state,                   \      DEFINE_PROP_BLOCKSIZE("physical_block_size", _state,                \
                        _conf.physical_block_size, 512),                 \                            _conf.physical_block_size, 512),              \
     DEFINE_PROP_UINT16("min_io_size", _state, _conf.min_io_size, 0),  \      DEFINE_PROP_UINT16("min_io_size", _state, _conf.min_io_size, 0),  \
     DEFINE_PROP_UINT32("opt_io_size", _state, _conf.opt_io_size, 0),    \      DEFINE_PROP_UINT32("opt_io_size", _state, _conf.opt_io_size, 0),    \
     DEFINE_PROP_INT32("bootindex", _state, _conf.bootindex, -1),        \      DEFINE_PROP_INT32("bootindex", _state, _conf.bootindex, -1),        \

Removed from v.1.1.1.12  
changed lines
  Added in v.1.1.1.13


unix.superglobalmegacorp.com