From: Kashyap Chamarthy <kchamart@redhat.com>
To: John Snow <jsnow@redhat.com>
Cc: kwolf@redhat.com, famz@redhat.com, qemu-block@nongnu.org,
qemu-devel@nongnu.org, mreitz@redhat.com,
vsementsov@parallels.com, stefanha@redhat.com
Subject: Re: [Qemu-devel] [PATCH v2.5 00/10] block: incremental backup transactions
Date: Tue, 21 Apr 2015 22:33:55 +0200 [thread overview]
Message-ID: <20150421203355.GC11726@tesla.redhat.com> (raw)
In-Reply-To: <20150421135311.GB11726@tesla.redhat.com>
On Tue, Apr 21, 2015 at 03:53:11PM +0200, Kashyap Chamarthy wrote:
[. . .]
> And, invoking `drive-backup` *without* pre-creating the target image
> (i.e. 'incremental.o.img'):
>
> { 'execute': 'drive-backup',
> 'arguments': {
> 'device': 'ide0-0-0',
> 'bitmap': 'bitmap0',
> 'sync': 'dirty-bitmap',
> 'target': 'incremental.0.img',
> 'mode': 'existing',
> 'format': 'qcow2'
> }
> }
>
> Results in:
>
> {"QMP": {"version": {"qemu": {"micro": 93, "minor": 2, "major": 2},
> "package": ""}, "capabilities": []}} {"return": {}}
>
> Instead of an "error". Is this a bug?
Answering myself, no, it's not.
I learnt from John Snow and Eric Blake that I needed additional 'reads'
to see event lines in my trivial QMP shell script[1] -- "because QEMU
sends events as the job makes progress, when you first connect, the qemu
sends a line BEFORE you send your 'qmp_capabilities' response so you're
off by one if you don't read the initial server greeting" (detail
by Eric).
A minimal test below:
(1) This time, invoke QEMU w/ QMP server over Unix socket:
---------------
$ ./invoke-qemu-with-qmp.sh
. . .
-qmp unix:./qmp-sock,server
char device redirected to /dev/pts/49 (label charserial0)
QEMU waiting for connection on: disconnected:unix:./qmp-sock,server
---------------
(2) Pre-create the target destination:
$ qemu-img create -f qcow2 incremental.0.img -b full_backup.img -F qcow2
(3) And, use `rlwrap` in combination with `socat` (previously learnt
this trick from Markus Armbruster, it conveniently retains the command
history) to connect to the QMP server and issue 'block-dirty-bitmap-add'
and 'drive-mirror' commands with 'dirty-bitmap':
----------------
$ rlwrap -H ~/.qmp_history socat UNIX-CONNECT:./qmp-sock STDIO
{"QMP": {"version": {"qemu": {"micro": 93, "minor": 2, "major": 2}, "package": ""}, "capabilities": []}}
{"execute":"qmp_capabilities"}
{"return": {}}
{ 'execute': 'block-dirty-bitmap-add', 'arguments': { 'node': 'drive-ide0-0-0', 'name': 'bitmap0' } }
{"return": {}}
{ 'execute': 'drive-backup', 'arguments': { 'device': 'drive-ide0-0-0', 'bitmap': 'bitmap0', 'sync': 'dirty-bitmap', 'target': '/home/kashyapc/work/virt/qemu/incremental-backup-test-qemu/tests/incremental.0.img', 'mode': 'existing', 'format': 'qcow2' } }
{"return": {}}
{"timestamp": {"seconds": 1429647518, "microseconds": 663755}, "event": "BLOCK_JOB_COMPLETED", "data": {"device": "drive-ide0-0-0", "len": 41126400, "offset": 41156608, "speed": 0, "type": "backup"}}
----------------
Thanks, John/Eric.
[1] Discussion thread here which contains the trivial script used:
http://lists.nongnu.org/archive/html/qemu-devel/2015-04/msg02432.html
prev parent reply other threads:[~2015-04-21 20:34 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-03-27 19:19 [Qemu-devel] [PATCH v2 00/11] block: incremental backup transactions John Snow
2015-03-27 19:19 ` [Qemu-devel] [PATCH v2 01/11] qapi: Add transaction support to block-dirty-bitmap operations John Snow
2015-04-17 14:41 ` Max Reitz
2015-04-17 14:50 ` Eric Blake
2015-03-27 19:19 ` [Qemu-devel] [PATCH v2 02/11] iotests: add transactional incremental backup test John Snow
2015-04-17 14:42 ` Max Reitz
2015-03-27 19:19 ` [Qemu-devel] [PATCH v2 03/11] block: rename BlkTransactionState and BdrvActionOps John Snow
2015-04-17 14:51 ` Max Reitz
2015-03-27 19:19 ` [Qemu-devel] [PATCH v2 04/11] block: re-add BlkTransactionState John Snow
2015-04-17 15:11 ` Max Reitz
2015-03-27 19:19 ` [Qemu-devel] [PATCH v2 05/11] block: add transactional callbacks feature John Snow
2015-04-17 15:41 ` Max Reitz
2015-04-17 21:55 ` John Snow
2015-03-27 19:20 ` [Qemu-devel] [PATCH v2 06/11] block: add refcount to Job object John Snow
2015-04-17 15:43 ` Max Reitz
2015-03-27 19:20 ` [Qemu-devel] [PATCH v2 07/11] block: add delayed bitmap successor cleanup John Snow
2015-04-17 15:49 ` Max Reitz
2015-03-27 19:20 ` [Qemu-devel] [PATCH v2 08/11] block: move transactions beneath qmp interfaces John Snow
2015-04-17 16:01 ` Max Reitz
2015-04-17 16:40 ` John Snow
2015-04-17 16:43 ` Eric Blake
2015-03-27 19:20 ` [Qemu-devel] [PATCH v2 09/11] qmp: Add an implementation wrapper for qmp_drive_backup John Snow
2015-04-17 16:12 ` Max Reitz
2015-03-27 19:20 ` [Qemu-devel] [PATCH v2 10/11] block: drive_backup transaction callback support John Snow
2015-04-17 16:55 ` Max Reitz
2015-03-27 19:20 ` [Qemu-devel] [PATCH v2 11/11] iotests: 124 - transactional failure test John Snow
2015-04-17 17:04 ` Max Reitz
2015-04-18 1:01 ` [Qemu-devel] [PATCH v2.5 00/10] block: incremental backup transactions John Snow
2015-04-21 13:53 ` Kashyap Chamarthy
2015-04-21 14:48 ` Kashyap Chamarthy
2015-04-21 20:33 ` Kashyap Chamarthy [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20150421203355.GC11726@tesla.redhat.com \
--to=kchamart@redhat.com \
--cc=famz@redhat.com \
--cc=jsnow@redhat.com \
--cc=kwolf@redhat.com \
--cc=mreitz@redhat.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@redhat.com \
--cc=vsementsov@parallels.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.