summary refs log tree commit diff stats
path: root/include
diff options
context:
space:
mode:
authorStefan Hajnoczi <stefanha@redhat.com>2017-07-05 13:57:30 +0100
committerMax Reitz <mreitz@redhat.com>2017-07-11 17:45:00 +0200
commit90880ff107ecaada2a06a823dc5fa652f6e37a62 (patch)
treef63e4447193bad024626ead37492cddbd246e2e5 /include
parentb43671f80cda8d0f11dcb929ed76fbd680c29cec (diff)
downloadfocaccia-qemu-90880ff107ecaada2a06a823dc5fa652f6e37a62.tar.gz
focaccia-qemu-90880ff107ecaada2a06a823dc5fa652f6e37a62.zip
block: add bdrv_measure() API
bdrv_measure() provides a conservative maximum for the size of a new
image.  This information is handy if storage needs to be allocated (e.g.
a SAN or an LVM volume) ahead of time.

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Alberto Garcia <berto@igalia.com>
Message-id: 20170705125738.8777-2-stefanha@redhat.com
Signed-off-by: Max Reitz <mreitz@redhat.com>
Diffstat (limited to 'include')
-rw-r--r--include/block/block.h2
-rw-r--r--include/block/block_int.h2
2 files changed, 4 insertions, 0 deletions
diff --git a/include/block/block.h b/include/block/block.h
index f0fdbe8006..96edc85129 100644
--- a/include/block/block.h
+++ b/include/block/block.h
@@ -306,6 +306,8 @@ int bdrv_truncate(BdrvChild *child, int64_t offset, Error **errp);
 int64_t bdrv_nb_sectors(BlockDriverState *bs);
 int64_t bdrv_getlength(BlockDriverState *bs);
 int64_t bdrv_get_allocated_file_size(BlockDriverState *bs);
+BlockMeasureInfo *bdrv_measure(BlockDriver *drv, QemuOpts *opts,
+                               BlockDriverState *in_bs, Error **errp);
 void bdrv_get_geometry(BlockDriverState *bs, uint64_t *nb_sectors_ptr);
 void bdrv_refresh_limits(BlockDriverState *bs, Error **errp);
 int bdrv_commit(BlockDriverState *bs);
diff --git a/include/block/block_int.h b/include/block/block_int.h
index 58d4ffd533..d0cd8a3c58 100644
--- a/include/block/block_int.h
+++ b/include/block/block_int.h
@@ -209,6 +209,8 @@ struct BlockDriver {
     int64_t (*bdrv_getlength)(BlockDriverState *bs);
     bool has_variable_length;
     int64_t (*bdrv_get_allocated_file_size)(BlockDriverState *bs);
+    BlockMeasureInfo *(*bdrv_measure)(QemuOpts *opts, BlockDriverState *in_bs,
+                                      Error **errp);
 
     int coroutine_fn (*bdrv_co_pwritev_compressed)(BlockDriverState *bs,
         uint64_t offset, uint64_t bytes, QEMUIOVector *qiov);