From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:39109) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Ug63l-0006LH-JA for qemu-devel@nongnu.org; Sat, 25 May 2013 00:26:31 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Ug63g-0008FM-Ca for qemu-devel@nongnu.org; Sat, 25 May 2013 00:26:25 -0400 Received: from e28smtp09.in.ibm.com ([122.248.162.9]:35783) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Ug63f-0008FE-RI for qemu-devel@nongnu.org; Sat, 25 May 2013 00:26:20 -0400 Received: from /spool/local by e28smtp09.in.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Sat, 25 May 2013 09:52:17 +0530 Received: from d28relay01.in.ibm.com (d28relay01.in.ibm.com [9.184.220.58]) by d28dlp03.in.ibm.com (Postfix) with ESMTP id 6404E1258052 for ; Sat, 25 May 2013 09:58:14 +0530 (IST) Received: from d28av03.in.ibm.com (d28av03.in.ibm.com [9.184.220.65]) by d28relay01.in.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id r4P4Q66M63766700 for ; Sat, 25 May 2013 09:56:07 +0530 Received: from d28av03.in.ibm.com (loopback [127.0.0.1]) by d28av03.in.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id r4P4QDGJ007078 for ; Sat, 25 May 2013 14:26:13 +1000 From: Wenchao Xia Date: Sat, 25 May 2013 12:24:40 +0800 Message-Id: <1369455886-30677-1-git-send-email-xiawenc@linux.vnet.ibm.com> Subject: [Qemu-devel] [PATCH V13 0/6] enhancement for qmp/hmp interfaces of block info List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: kwolf@redhat.com, phrdina@redhat.com, stefanha@gmail.com, armbru@redhat.com, lcapitulino@redhat.com, pbonzini@redhat.com, Wenchao Xia This serial let qmp interface show delaied info, including internal snapshot /backing chain on all block device at runtime, which helps management stack and human user, by retrieving exactly the same info of what qemu saws. Example: -> { "execute": "query-block" } <- { "return":[ { "io-status": "ok", "device":"ide0-hd0", "locked":false, "removable":false, "inserted":{ "ro":false, "drv":"qcow2", "encrypted":false, "file":"disks/test.qcow2", "backing_file_depth":1, "bps":1000000, "bps_rd":0, "bps_wr":0, "iops":1000000, "iops_rd":0, "iops_wr":0, "image":{ "filename":"disks/test.qcow2", "format":"qcow2", "virtual-size":2048000, "backing_file":"base.qcow2", "full-backing-filename":"disks/base.qcow2", "backing-filename-format:"qcow2", "snapshots":[ { "id": "1", "name": "snapshot1", "vm-state-size": 0, "date-sec": 10000200, "date-nsec": 12, "vm-clock-sec": 206, "vm-clock-nsec": 30 } ], "backing-image":{ "filename":"disks/base.qcow2", "format":"qcow2", "virtual-size":2048000 } } }, "type":"unknown" }, { "io-status": "ok", "device":"ide1-cd0", "locked":false, "removable":true, "type":"unknown" }, { "device":"floppy0", "locked":false, "removable":true, "type":"unknown" }, { "device":"sd0", "locked":false, "removable":true, "type":"unknown" } ] } These patches follows the rule that use qmp to retieve information, hmp layer just does a translation from qmp object it got. To make code graceful, snapshot and image info retrieving code in qemu and qemu-img are merged into block layer, and some function name was adjusted to make it tips better. For the part touch by the serial, it works as: qemu qemu-img dump_monitor dump_stdout |--------------| | block/qapi.c Special thanks for Markus, Stefan, Kevin, Eric reviewing many times. v13: Renamed the serial as "enhancement for qmp/hmp interfaces of block info". Seperated the common part of code moving and hmp printf as a standalone serial, which can be used by both mine and Pavel's work. This serial depend on it: "[PATCH V3 0/4] qapi and snapshot code clean up in block layer", https://lists.gnu.org/archive/html/qemu-devel/2013-05/msg03539.html Removed the VM snapshot info part, since it relate to VM snapshot creating logic, which should be changed together with Pavel's serial. Address Eric's comments: 2/6: bdrv_query_image_info() returns void now, only use *errp to tip error. Wenchao Xia (6): 1 block: add snapshot info query function bdrv_query_snapshot_info_list() 2 block: add image info query function bdrv_query_image_info() 3 qmp: add recursive member in ImageInfo 4 qmp: add ImageInfo in BlockDeviceInfo used by query-block 5 hmp: show ImageInfo in 'info block' 6 hmp: add parameters device and -v for info block block/qapi.c | 148 ++++++++++++++++++++++++++++++++++++++++++-------- hmp.c | 21 +++++++ include/block/qapi.h | 14 +++-- monitor.c | 7 ++- qapi-schema.json | 10 +++- qemu-img.c | 10 +++- qmp-commands.hx | 69 +++++++++++++++++++++++- 7 files changed, 242 insertions(+), 37 deletions(-)