Re: [Qemu-devel] [RFC v2 2/8] raw-format: add bdrv_measure() support

2017-03-17 Thread Nir Soffer
On Wed, Mar 15, 2017 at 11:29 AM Stefan Hajnoczi 
wrote:

> Maximum size calculation is trivial for the raw format: it's just the
> requested image size (because there is no metadata).
>
> Signed-off-by: Stefan Hajnoczi 
> ---
>  block/raw-format.c | 22 ++
>  1 file changed, 22 insertions(+)
>
> diff --git a/block/raw-format.c b/block/raw-format.c
> index 86fbc65..cc88540 100644
> --- a/block/raw-format.c
> +++ b/block/raw-format.c
> @@ -312,6 +312,27 @@ static int64_t raw_getlength(BlockDriverState *bs)
>  return s->size;
>  }
>
> +static void raw_measure(QemuOpts *opts, BlockDriverState *in_bs,
> +BlockMeasureInfo *info,
> +Error **errp)
> +{
> +if (in_bs) {
> +int64_t ssize = bdrv_getlength(in_bs);
> +if (ssize < 0) {
> +error_setg_errno(errp, -ssize, "Unable to get image size");
> +return;
> +}
> +info->required_bytes = ssize;
> +} else {
> +info->required_bytes =
> +ROUND_UP(qemu_opt_get_size_del(opts, BLOCK_OPT_SIZE, 0),
> + BDRV_SECTOR_SIZE);
> +}
> +
> +/* Unallocated sectors count towards the file size in raw images */
> +info->fully_allocated_bytes = info->required_bytes;
> +}
> +
>  static int raw_get_info(BlockDriverState *bs, BlockDriverInfo *bdi)
>  {
>  return bdrv_get_info(bs->file->bs, bdi);
> @@ -477,6 +498,7 @@ BlockDriver bdrv_raw = {
>  .bdrv_truncate= &raw_truncate,
>  .bdrv_getlength   = &raw_getlength,
>  .has_variable_length  = true,
> +.bdrv_measure = &raw_measure,
>  .bdrv_get_info= &raw_get_info,
>  .bdrv_refresh_limits  = &raw_refresh_limits,
>  .bdrv_probe_blocksizes = &raw_probe_blocksizes,
> --
> 2.9.3
>
>
Looks good.

Nir


[Qemu-devel] [RFC v2 2/8] raw-format: add bdrv_measure() support

2017-03-15 Thread Stefan Hajnoczi
Maximum size calculation is trivial for the raw format: it's just the
requested image size (because there is no metadata).

Signed-off-by: Stefan Hajnoczi 
---
 block/raw-format.c | 22 ++
 1 file changed, 22 insertions(+)

diff --git a/block/raw-format.c b/block/raw-format.c
index 86fbc65..cc88540 100644
--- a/block/raw-format.c
+++ b/block/raw-format.c
@@ -312,6 +312,27 @@ static int64_t raw_getlength(BlockDriverState *bs)
 return s->size;
 }
 
+static void raw_measure(QemuOpts *opts, BlockDriverState *in_bs,
+BlockMeasureInfo *info,
+Error **errp)
+{
+if (in_bs) {
+int64_t ssize = bdrv_getlength(in_bs);
+if (ssize < 0) {
+error_setg_errno(errp, -ssize, "Unable to get image size");
+return;
+}
+info->required_bytes = ssize;
+} else {
+info->required_bytes =
+ROUND_UP(qemu_opt_get_size_del(opts, BLOCK_OPT_SIZE, 0),
+ BDRV_SECTOR_SIZE);
+}
+
+/* Unallocated sectors count towards the file size in raw images */
+info->fully_allocated_bytes = info->required_bytes;
+}
+
 static int raw_get_info(BlockDriverState *bs, BlockDriverInfo *bdi)
 {
 return bdrv_get_info(bs->file->bs, bdi);
@@ -477,6 +498,7 @@ BlockDriver bdrv_raw = {
 .bdrv_truncate= &raw_truncate,
 .bdrv_getlength   = &raw_getlength,
 .has_variable_length  = true,
+.bdrv_measure = &raw_measure,
 .bdrv_get_info= &raw_get_info,
 .bdrv_refresh_limits  = &raw_refresh_limits,
 .bdrv_probe_blocksizes = &raw_probe_blocksizes,
-- 
2.9.3