qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PULL 0/4]: QMP queue
@ 2012-08-03 16:42 Luiz Capitulino
  2012-08-03 16:42 ` [Qemu-devel] [PATCH 1/4] qapi: qapi.py: allow the "'" character to be escaped Luiz Capitulino
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: Luiz Capitulino @ 2012-08-03 16:42 UTC (permalink / raw)
  To: aliguori; +Cc: qemu-devel

A qapi fix from Markus and a new field to query-block by Benoit.

The changes (since 02d2bd5d57812154cfb978bc2098cf49d551583d) are available
in the following repository:

    git://repo.or.cz/qemu/qmp-unstable.git queue/qmp

Benoît Canet (3):
      block: create bdrv_get_backing_file_depth()
      block: Use bdrv_get_backing_file_depth()
      hmp: show the backing file depth

Luiz Capitulino (1):
      qapi: qapi.py: allow the "'" character to be escaped

 block.c          | 16 ++++++++++++++++
 block.h          |  1 +
 hmp.c            |  2 ++
 qapi-schema.json |  9 ++++++---
 qmp-commands.hx  |  2 ++
 scripts/qapi.py  | 31 +++++++++++++++++++++----------
 6 files changed, 48 insertions(+), 13 deletions(-)

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Qemu-devel] [PATCH 1/4] qapi: qapi.py: allow the "'" character to be escaped
  2012-08-03 16:42 [Qemu-devel] [PULL 0/4]: QMP queue Luiz Capitulino
@ 2012-08-03 16:42 ` Luiz Capitulino
  2012-08-03 16:42 ` [Qemu-devel] [PATCH 2/4] block: create bdrv_get_backing_file_depth() Luiz Capitulino
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Luiz Capitulino @ 2012-08-03 16:42 UTC (permalink / raw)
  To: aliguori; +Cc: qemu-devel, Markus Armbruster

Support escaping the escape character, and make more robust (don't die
for '', handle ' without matching '.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
---
 scripts/qapi.py | 31 +++++++++++++++++++++----------
 1 file changed, 21 insertions(+), 10 deletions(-)

diff --git a/scripts/qapi.py b/scripts/qapi.py
index 8082af3..d3b8b4d 100644
--- a/scripts/qapi.py
+++ b/scripts/qapi.py
@@ -13,18 +13,29 @@ from ordereddict import OrderedDict
 
 def tokenize(data):
     while len(data):
-        if data[0] in ['{', '}', ':', ',', '[', ']']:
-            yield data[0]
-            data = data[1:]
-        elif data[0] in ' \n':
-            data = data[1:]
-        elif data[0] == "'":
-            data = data[1:]
+        ch = data[0]
+        data = data[1:]
+        if ch in ['{', '}', ':', ',', '[', ']']:
+            yield ch
+        elif ch in ' \n':
+            None
+        elif ch == "'":
             string = ''
-            while data[0] != "'":
-                string += data[0]
+            esc = False
+            while True:
+                if (data == ''):
+                    raise Exception("Mismatched quotes")
+                ch = data[0]
                 data = data[1:]
-            data = data[1:]
+                if esc:
+                    string += ch
+                    esc = False
+                elif ch == "\\":
+                    esc = True
+                elif ch == "'":
+                    break
+                else:
+                    string += ch
             yield string
 
 def parse(tokens):
-- 
1.7.11.2.249.g31c7954.dirty

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [Qemu-devel] [PATCH 2/4] block: create bdrv_get_backing_file_depth()
  2012-08-03 16:42 [Qemu-devel] [PULL 0/4]: QMP queue Luiz Capitulino
  2012-08-03 16:42 ` [Qemu-devel] [PATCH 1/4] qapi: qapi.py: allow the "'" character to be escaped Luiz Capitulino
@ 2012-08-03 16:42 ` Luiz Capitulino
  2012-08-03 16:42 ` [Qemu-devel] [PATCH 3/4] block: Use bdrv_get_backing_file_depth() Luiz Capitulino
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Luiz Capitulino @ 2012-08-03 16:42 UTC (permalink / raw)
  To: aliguori; +Cc: Benoît Canet, qemu-devel, Benoit Canet

From: Benoît Canet <benoit.canet@gmail.com>

Create bdrv_get_backing_file_depth() in order to be able to show
in QMP and HMP how many ancestors backing an image a block device
have.

Signed-off-by: Benoit Canet <benoit@irqsave.net>
Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
---
 block.c | 13 +++++++++++++
 block.h |  1 +
 2 files changed, 14 insertions(+)

diff --git a/block.c b/block.c
index b38940b..1206bba 100644
--- a/block.c
+++ b/block.c
@@ -2754,6 +2754,19 @@ BlockDriverState *bdrv_find_backing_image(BlockDriverState *bs,
     return NULL;
 }
 
+int bdrv_get_backing_file_depth(BlockDriverState *bs)
+{
+    if (!bs->drv) {
+        return 0;
+    }
+
+    if (!bs->backing_hd) {
+        return 0;
+    }
+
+    return 1 + bdrv_get_backing_file_depth(bs->backing_hd);
+}
+
 #define NB_SUFFIXES 4
 
 char *get_human_readable_size(char *buf, int buf_size, int64_t size)
diff --git a/block.h b/block.h
index c89590d..650d872 100644
--- a/block.h
+++ b/block.h
@@ -174,6 +174,7 @@ int coroutine_fn bdrv_co_is_allocated_above(BlockDriverState *top,
                                             int nb_sectors, int *pnum);
 BlockDriverState *bdrv_find_backing_image(BlockDriverState *bs,
     const char *backing_file);
+int bdrv_get_backing_file_depth(BlockDriverState *bs);
 int bdrv_truncate(BlockDriverState *bs, int64_t offset);
 int64_t bdrv_getlength(BlockDriverState *bs);
 int64_t bdrv_get_allocated_file_size(BlockDriverState *bs);
-- 
1.7.11.2.249.g31c7954.dirty

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [Qemu-devel] [PATCH 3/4] block: Use bdrv_get_backing_file_depth()
  2012-08-03 16:42 [Qemu-devel] [PULL 0/4]: QMP queue Luiz Capitulino
  2012-08-03 16:42 ` [Qemu-devel] [PATCH 1/4] qapi: qapi.py: allow the "'" character to be escaped Luiz Capitulino
  2012-08-03 16:42 ` [Qemu-devel] [PATCH 2/4] block: create bdrv_get_backing_file_depth() Luiz Capitulino
@ 2012-08-03 16:42 ` Luiz Capitulino
  2012-08-03 16:42 ` [Qemu-devel] [PATCH 4/4] hmp: show the backing file depth Luiz Capitulino
  2012-08-03 20:43 ` [Qemu-devel] [PULL 0/4]: QMP queue Anthony Liguori
  4 siblings, 0 replies; 6+ messages in thread
From: Luiz Capitulino @ 2012-08-03 16:42 UTC (permalink / raw)
  To: aliguori; +Cc: Benoît Canet, qemu-devel, Benoit Canet

From: Benoît Canet <benoit.canet@gmail.com>

Use the dedicated counting function in qmp_query_block in order to
propagate the backing file depth to HMP and add backing_file_depth
to qmp-commands.hx

Signed-off-by: Benoit Canet <benoit@irqsave.net>
Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
---
 block.c          | 3 +++
 qapi-schema.json | 9 ++++++---
 qmp-commands.hx  | 2 ++
 3 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/block.c b/block.c
index 1206bba..24323c1 100644
--- a/block.c
+++ b/block.c
@@ -2450,6 +2450,9 @@ BlockInfoList *qmp_query_block(Error **errp)
                 info->value->inserted->backing_file = g_strdup(bs->backing_file);
             }
 
+            info->value->inserted->backing_file_depth =
+                bdrv_get_backing_file_depth(bs);
+
             if (bs->io_limits_enabled) {
                 info->value->inserted->bps =
                                bs->io_limits.bps[BLOCK_IO_LIMIT_TOTAL];
diff --git a/qapi-schema.json b/qapi-schema.json
index bc55ed2..b58f5cd 100644
--- a/qapi-schema.json
+++ b/qapi-schema.json
@@ -398,6 +398,8 @@
 #
 # @backing_file: #optional the name of the backing file (for copy-on-write)
 #
+# @backing_file_depth: number of files in the backing file chain (since: 1.2)
+#
 # @encrypted: true if the backing device is encrypted
 #
 # @bps: total throughput limit in bytes per second is specified
@@ -418,9 +420,10 @@
 ##
 { 'type': 'BlockDeviceInfo',
   'data': { 'file': 'str', 'ro': 'bool', 'drv': 'str',
-            '*backing_file': 'str', 'encrypted': 'bool',
-            'bps': 'int', 'bps_rd': 'int', 'bps_wr': 'int',
-            'iops': 'int', 'iops_rd': 'int', 'iops_wr': 'int'} }
+            '*backing_file': 'str', 'backing_file_depth': 'int',
+            'encrypted': 'bool', 'bps': 'int', 'bps_rd': 'int',
+            'bps_wr': 'int', 'iops': 'int', 'iops_rd': 'int',
+            'iops_wr': 'int'} }
 
 ##
 # @BlockDeviceIoStatus:
diff --git a/qmp-commands.hx b/qmp-commands.hx
index e3cf3c5..ac46638 100644
--- a/qmp-commands.hx
+++ b/qmp-commands.hx
@@ -1317,6 +1317,7 @@ Each json-object contain the following:
                                 "nbd", "parallels", "qcow", "qcow2", "raw",
                                 "tftp", "vdi", "vmdk", "vpc", "vvfat"
          - "backing_file": backing file name (json-string, optional)
+         - "backing_file_depth": number of files in the backing file chain (json-int)
          - "encrypted": true if encrypted, false otherwise (json-bool)
          - "bps": limit total bytes per second (json-int)
          - "bps_rd": limit read bytes per second (json-int)
@@ -1345,6 +1346,7 @@ Example:
                "drv":"qcow2",
                "encrypted":false,
                "file":"disks/test.img",
+               "backing_file_depth":0,
                "bps":1000000,
                "bps_rd":0,
                "bps_wr":0,
-- 
1.7.11.2.249.g31c7954.dirty

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [Qemu-devel] [PATCH 4/4] hmp: show the backing file depth
  2012-08-03 16:42 [Qemu-devel] [PULL 0/4]: QMP queue Luiz Capitulino
                   ` (2 preceding siblings ...)
  2012-08-03 16:42 ` [Qemu-devel] [PATCH 3/4] block: Use bdrv_get_backing_file_depth() Luiz Capitulino
@ 2012-08-03 16:42 ` Luiz Capitulino
  2012-08-03 20:43 ` [Qemu-devel] [PULL 0/4]: QMP queue Anthony Liguori
  4 siblings, 0 replies; 6+ messages in thread
From: Luiz Capitulino @ 2012-08-03 16:42 UTC (permalink / raw)
  To: aliguori; +Cc: Benoît Canet, qemu-devel, Benoit Canet

From: Benoît Canet <benoit.canet@gmail.com>

Signed-off-by: Benoit Canet <benoit@irqsave.net>
Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
---
 hmp.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/hmp.c b/hmp.c
index 6b72a64..25688ab 100644
--- a/hmp.c
+++ b/hmp.c
@@ -227,6 +227,8 @@ void hmp_info_block(Monitor *mon)
             if (info->value->inserted->has_backing_file) {
                 monitor_printf(mon, " backing_file=");
                 monitor_print_filename(mon, info->value->inserted->backing_file);
+                monitor_printf(mon, " backing_file_depth=%" PRId64,
+                    info->value->inserted->backing_file_depth);
             }
             monitor_printf(mon, " ro=%d drv=%s encrypted=%d",
                            info->value->inserted->ro,
-- 
1.7.11.2.249.g31c7954.dirty

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [Qemu-devel] [PULL 0/4]: QMP queue
  2012-08-03 16:42 [Qemu-devel] [PULL 0/4]: QMP queue Luiz Capitulino
                   ` (3 preceding siblings ...)
  2012-08-03 16:42 ` [Qemu-devel] [PATCH 4/4] hmp: show the backing file depth Luiz Capitulino
@ 2012-08-03 20:43 ` Anthony Liguori
  4 siblings, 0 replies; 6+ messages in thread
From: Anthony Liguori @ 2012-08-03 20:43 UTC (permalink / raw)
  To: Luiz Capitulino; +Cc: qemu-devel

Luiz Capitulino <lcapitulino@redhat.com> writes:

> A qapi fix from Markus and a new field to query-block by Benoit.
>
> The changes (since 02d2bd5d57812154cfb978bc2098cf49d551583d) are available
> in the following repository:
>
>     git://repo.or.cz/qemu/qmp-unstable.git queue/qmp
>

Pulled. Thanks.

Regards,

Anthony Liguori

> Benoît Canet (3):
>       block: create bdrv_get_backing_file_depth()
>       block: Use bdrv_get_backing_file_depth()
>       hmp: show the backing file depth
>
> Luiz Capitulino (1):
>       qapi: qapi.py: allow the "'" character to be escaped
>
>  block.c          | 16 ++++++++++++++++
>  block.h          |  1 +
>  hmp.c            |  2 ++
>  qapi-schema.json |  9 ++++++---
>  qmp-commands.hx  |  2 ++
>  scripts/qapi.py  | 31 +++++++++++++++++++++----------
>  6 files changed, 48 insertions(+), 13 deletions(-)

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2012-08-03 20:43 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-08-03 16:42 [Qemu-devel] [PULL 0/4]: QMP queue Luiz Capitulino
2012-08-03 16:42 ` [Qemu-devel] [PATCH 1/4] qapi: qapi.py: allow the "'" character to be escaped Luiz Capitulino
2012-08-03 16:42 ` [Qemu-devel] [PATCH 2/4] block: create bdrv_get_backing_file_depth() Luiz Capitulino
2012-08-03 16:42 ` [Qemu-devel] [PATCH 3/4] block: Use bdrv_get_backing_file_depth() Luiz Capitulino
2012-08-03 16:42 ` [Qemu-devel] [PATCH 4/4] hmp: show the backing file depth Luiz Capitulino
2012-08-03 20:43 ` [Qemu-devel] [PULL 0/4]: QMP queue Anthony Liguori

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).