diff mbox

[v2,23/45] block: export dirty bitmap information in query-block

Message ID 1348675011-8794-24-git-send-email-pbonzini@redhat.com
State New
Headers show

Commit Message

Paolo Bonzini Sept. 26, 2012, 3:56 p.m. UTC
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
        v1->v2: new

 block.c          |  6 ++++++
 qapi-schema.json | 20 ++++++++++++++++++--
 2 file modificati, 24 inserzioni(+), 2 rimozioni(-)

Comments

Kevin Wolf Oct. 15, 2012, 4:08 p.m. UTC | #1
Am 26.09.2012 17:56, schrieb Paolo Bonzini:
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
>         v1->v2: new
> 
>  block.c          |  6 ++++++
>  qapi-schema.json | 20 ++++++++++++++++++--
>  2 file modificati, 24 inserzioni(+), 2 rimozioni(-)
> 
> diff --git a/block.c b/block.c
> index 2c1273c..074325d 100644
> --- a/block.c
> +++ b/block.c
> @@ -2697,6 +2697,12 @@ BlockInfo *bdrv_query_info(BlockDriverState *bs)
>          info->io_status = bs->iostatus;
>      }
>  
> +    if (bs->dirty_bitmap) {
> +        info->has_dirty = true;
> +        info->dirty = g_malloc0(sizeof(*info->dirty));
> +        info->dirty->count = bdrv_get_dirty_count(bs) * BDRV_SECTORS_PER_DIRTY_CHUNK;
> +    }
> +
>      if (bs->drv) {
>          info->has_inserted = true;
>          info->inserted = g_malloc0(sizeof(*info->inserted));
> diff --git a/qapi-schema.json b/qapi-schema.json
> index 26ac21f..dd418b8 100644
> --- a/qapi-schema.json
> +++ b/qapi-schema.json
> @@ -604,7 +604,7 @@
>              '*backing_file': 'str', 'backing_file_depth': 'int',
>              'encrypted': 'bool', 'encryption_key_missing': 'bool',
>              'bps': 'int', 'bps_rd': 'int', 'bps_wr': 'int',
> -            'iops': 'int', 'iops_rd': 'int', 'iops_wr': 'int'} }
> +            'iops': 'int', 'iops_rd': 'int', 'iops_wr': 'int' } }
>  
>  ##
>  # @BlockDeviceIoStatus:
> @@ -622,6 +622,18 @@
>  { 'enum': 'BlockDeviceIoStatus', 'data': [ 'ok', 'failed', 'nospace' ] }
>  
>  ##
> +# @BlockDirtyInfo:
> +#
> +# Block dirty bitmap information.
> +#
> +# @count: number of dirty sectors according to the dirty bitmap
> +#
> +# Since: 1.3
> +##
> +{ 'type': 'BlockDirtyInfo',
> +  'data': {'count': 'int'} }

Can we use bytes instead of arbitrary units of 512 bytes? I don't want
to discuss with people why a sector is 512 bytes here even though all
their virtual disks use a 4k sector size...

Kevin
diff mbox

Patch

diff --git a/block.c b/block.c
index 2c1273c..074325d 100644
--- a/block.c
+++ b/block.c
@@ -2697,6 +2697,12 @@  BlockInfo *bdrv_query_info(BlockDriverState *bs)
         info->io_status = bs->iostatus;
     }
 
+    if (bs->dirty_bitmap) {
+        info->has_dirty = true;
+        info->dirty = g_malloc0(sizeof(*info->dirty));
+        info->dirty->count = bdrv_get_dirty_count(bs) * BDRV_SECTORS_PER_DIRTY_CHUNK;
+    }
+
     if (bs->drv) {
         info->has_inserted = true;
         info->inserted = g_malloc0(sizeof(*info->inserted));
diff --git a/qapi-schema.json b/qapi-schema.json
index 26ac21f..dd418b8 100644
--- a/qapi-schema.json
+++ b/qapi-schema.json
@@ -604,7 +604,7 @@ 
             '*backing_file': 'str', 'backing_file_depth': 'int',
             'encrypted': 'bool', 'encryption_key_missing': 'bool',
             'bps': 'int', 'bps_rd': 'int', 'bps_wr': 'int',
-            'iops': 'int', 'iops_rd': 'int', 'iops_wr': 'int'} }
+            'iops': 'int', 'iops_rd': 'int', 'iops_wr': 'int' } }
 
 ##
 # @BlockDeviceIoStatus:
@@ -622,6 +622,18 @@ 
 { 'enum': 'BlockDeviceIoStatus', 'data': [ 'ok', 'failed', 'nospace' ] }
 
 ##
+# @BlockDirtyInfo:
+#
+# Block dirty bitmap information.
+#
+# @count: number of dirty sectors according to the dirty bitmap
+#
+# Since: 1.3
+##
+{ 'type': 'BlockDirtyInfo',
+  'data': {'count': 'int'} }
+
+##
 # @BlockInfo:
 #
 # Block device information.  This structure describes a virtual device and
@@ -640,6 +652,9 @@ 
 # @tray_open: #optional True if the device has a tray and it is open
 #             (only present if removable is true)
 #
+# @dirty: #optional dirty bitmap information (only present if the dirty
+#         bitmap is enabled)
+#
 # @io-status: #optional @BlockDeviceIoStatus. Only present if the device
 #             supports it and the VM is configured to stop on errors
 #
@@ -651,7 +666,8 @@ 
 { 'type': 'BlockInfo',
   'data': {'device': 'str', 'type': 'str', 'removable': 'bool',
            'locked': 'bool', '*inserted': 'BlockDeviceInfo',
-           '*tray_open': 'bool', '*io-status': 'BlockDeviceIoStatus'} }
+           '*tray_open': 'bool', '*io-status': 'BlockDeviceIoStatus',
+           '*dirty': 'BlockDirtyInfo' } }
 
 ##
 # @query-block: