diff options
Diffstat (limited to 'block_int.h')
-rw-r--r-- | block_int.h | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/block_int.h b/block_int.h index 223a437b6a..930a5a4d11 100644 --- a/block_int.h +++ b/block_int.h @@ -202,4 +202,31 @@ extern BlockDriverState *bdrv_first; int is_windows_drive(const char *filename); #endif +struct DriveInfo; + +typedef struct BlockConf { + struct DriveInfo *dinfo; + uint16_t physical_block_size; + uint16_t min_io_size; + uint32_t opt_io_size; +} BlockConf; + +static inline unsigned int get_physical_block_exp(BlockConf *conf) +{ + unsigned int exp = 0, size; + + for (size = conf->physical_block_size; size > 512; size >>= 1) { + exp++; + } + + return exp; +} + +#define DEFINE_BLOCK_PROPERTIES(_state, _conf) \ + DEFINE_PROP_DRIVE("drive", _state, _conf.dinfo), \ + DEFINE_PROP_UINT16("physical_block_size", _state, \ + _conf.physical_block_size, 512), \ + DEFINE_PROP_UINT16("min_io_size", _state, _conf.min_io_size, 512), \ + DEFINE_PROP_UINT32("opt_io_size", _state, _conf.opt_io_size, 512) + #endif /* BLOCK_INT_H */ |