From: Jeff Cody <jcody@redhat.com>
To: "Benoît Canet" <benoit.canet@irqsave.net>
Cc: kwolf@redhat.com, pkrempa@redhat.com, famz@redhat.com,
qemu-devel@nongnu.org, stefanha@redhat.com
Subject: Re: [Qemu-devel] [PATCH 3/5] block: make 'top' argument to block-commit optional
Date: Thu, 15 May 2014 07:49:07 -0400 [thread overview]
Message-ID: <20140515114907.GF8452@localhost.localdomain> (raw)
In-Reply-To: <20140515114755.GD2812@irqsave.net>
On Thu, May 15, 2014 at 01:47:55PM +0200, Benoît Canet wrote:
> The Wednesday 14 May 2014 à 23:20:17 (-0400), Jeff Cody wrote :
> > Now that active layer block-commit is supported, the 'top' argument
> > no longer needs to be mandatory.
> >
> > Change it optional, with the default being the active layer in the
>
> Do you mean "Change it to optional" or "Make it optional" ?
>
Thanks - forgot the "to".
> > device chain.
> >
> > Signed-off-by: Jeff Cody <jcody@redhat.com>
> > ---
> > blockdev.c | 3 ++-
> > qapi-schema.json | 7 ++++---
> > qmp-commands.hx | 5 +++--
> > tests/qemu-iotests/040 | 28 ++++++++++++++++++----------
> > 4 files changed, 27 insertions(+), 16 deletions(-)
> >
> > diff --git a/blockdev.c b/blockdev.c
> > index 500707e..02c6525 100644
> > --- a/blockdev.c
> > +++ b/blockdev.c
> > @@ -1868,7 +1868,8 @@ void qmp_block_stream(const char *device, bool has_base,
> > }
> >
> > void qmp_block_commit(const char *device,
> > - bool has_base, const char *base, const char *top,
> > + bool has_base, const char *base,
> > + bool has_top, const char *top,
> > bool has_speed, int64_t speed,
> > Error **errp)
> > {
> > diff --git a/qapi-schema.json b/qapi-schema.json
> > index 36cb964..06a9b5d 100644
> > --- a/qapi-schema.json
> > +++ b/qapi-schema.json
> > @@ -2099,8 +2099,9 @@
> > # @base: #optional The file name of the backing image to write data into.
> > # If not specified, this is the deepest backing image
> > #
> > -# @top: The file name of the backing image within the image chain,
> > -# which contains the topmost data to be committed down.
> > +# @top: #optional The file name of the backing image within the image chain,
> > +# which contains the topmost data to be committed down. If
> > +# not specified, this is the active layer.
> > #
> > # If top == base, that is an error.
> > # If top == active, the job will not be completed by itself,
> > @@ -2128,7 +2129,7 @@
> > #
> > ##
> > { 'command': 'block-commit',
> > - 'data': { 'device': 'str', '*base': 'str', 'top': 'str',
> > + 'data': { 'device': 'str', '*base': 'str', '*top': 'str',
> > '*speed': 'int' } }
> >
> > ##
> > diff --git a/qmp-commands.hx b/qmp-commands.hx
> > index cae890e..1aa3c65 100644
> > --- a/qmp-commands.hx
> > +++ b/qmp-commands.hx
> > @@ -985,7 +985,7 @@ EQMP
> >
> > {
> > .name = "block-commit",
> > - .args_type = "device:B,base:s?,top:s,speed:o?",
> > + .args_type = "device:B,base:s?,top:s?,speed:o?",
> > .mhandler.cmd_new = qmp_marshal_input_block_commit,
> > },
> >
> > @@ -1003,7 +1003,8 @@ Arguments:
> > If not specified, this is the deepest backing image
> > (json-string, optional)
> > - "top": The file name of the backing image within the image chain,
> > - which contains the topmost data to be committed down.
> > + which contains the topmost data to be committed down. If
> > + not specified, this is the active layer. (json-string, optional)
> >
> > If top == base, that is an error.
> > If top == active, the job will not be completed by itself,
> > diff --git a/tests/qemu-iotests/040 b/tests/qemu-iotests/040
> > index 734b6a6..803b0c7 100755
> > --- a/tests/qemu-iotests/040
> > +++ b/tests/qemu-iotests/040
> > @@ -35,11 +35,7 @@ test_img = os.path.join(iotests.test_dir, 'test.img')
> > class ImageCommitTestCase(iotests.QMPTestCase):
> > '''Abstract base class for image commit test cases'''
> >
> > - def run_commit_test(self, top, base):
> > - self.assert_no_active_block_jobs()
> > - result = self.vm.qmp('block-commit', device='drive0', top=top, base=base)
> > - self.assert_qmp(result, 'return', {})
> > -
> > + def wait_for_complete(self):
> > completed = False
> > while not completed:
> > for event in self.vm.get_qmp_events(wait=True):
> > @@ -58,6 +54,18 @@ class ImageCommitTestCase(iotests.QMPTestCase):
> > self.assert_no_active_block_jobs()
> > self.vm.shutdown()
> >
> > + def run_commit_test(self, top, base):
> > + self.assert_no_active_block_jobs()
> > + result = self.vm.qmp('block-commit', device='drive0', top=top, base=base)
> > + self.assert_qmp(result, 'return', {})
> > + self.wait_for_complete()
> > +
> > + def run_default_commit_test(self):
> > + self.assert_no_active_block_jobs()
> > + result = self.vm.qmp('block-commit', device='drive0')
> > + self.assert_qmp(result, 'return', {})
> > + self.wait_for_complete()
> > +
> > class TestSingleDrive(ImageCommitTestCase):
> > image_len = 1 * 1024 * 1024
> > test_len = 1 * 1024 * 256
> > @@ -109,17 +117,17 @@ class TestSingleDrive(ImageCommitTestCase):
> > self.assertEqual(-1, qemu_io('-c', 'read -P 0xab 0 524288', backing_img).find("verification failed"))
> > self.assertEqual(-1, qemu_io('-c', 'read -P 0xef 524288 524288', backing_img).find("verification failed"))
> >
> > + def test_top_is_default_active(self):
> > + self.run_default_commit_test()
> > + self.assertEqual(-1, qemu_io('-c', 'read -P 0xab 0 524288', backing_img).find("verification failed"))
> > + self.assertEqual(-1, qemu_io('-c', 'read -P 0xef 524288 524288', backing_img).find("verification failed"))
> > +
> > def test_top_and_base_reversed(self):
> > self.assert_no_active_block_jobs()
> > result = self.vm.qmp('block-commit', device='drive0', top='%s' % backing_img, base='%s' % mid_img)
> > self.assert_qmp(result, 'error/class', 'GenericError')
> > self.assert_qmp(result, 'error/desc', 'Base \'%s\' not found' % mid_img)
> >
> > - def test_top_omitted(self):
> > - self.assert_no_active_block_jobs()
> > - result = self.vm.qmp('block-commit', device='drive0')
> > - self.assert_qmp(result, 'error/class', 'GenericError')
> > - self.assert_qmp(result, 'error/desc', "Parameter 'top' is missing")
> >
> > class TestRelativePaths(ImageCommitTestCase):
> > image_len = 1 * 1024 * 1024
> > --
> > 1.8.3.1
> >
> Reviewed-by: Benoit Canet <benoit@irqsave.net>
next prev parent reply other threads:[~2014-05-15 11:49 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-05-15 3:20 [Qemu-devel] [PATCH 0/5] block: Modify block-commit to use node-names Jeff Cody
2014-05-15 3:20 ` [Qemu-devel] [PATCH 1/5] block: Auto-generate node_names for each BDS entry Jeff Cody
2014-05-15 11:58 ` Benoît Canet
2014-05-15 12:06 ` Jeff Cody
2014-05-15 12:32 ` Benoît Canet
2014-05-15 12:37 ` Jeff Cody
2014-05-15 14:11 ` Eric Blake
2014-05-15 15:59 ` Eric Blake
2014-05-15 18:41 ` Jeff Cody
2014-05-15 19:12 ` Eric Blake
2014-05-16 9:39 ` Kevin Wolf
2014-05-16 11:35 ` Jeff Cody
2014-05-16 12:47 ` Eric Blake
2014-05-16 17:16 ` Kevin Wolf
2014-05-15 3:20 ` [Qemu-devel] [PATCH 2/5] block: add helper function to determine if a BDS is in a chain Jeff Cody
2014-05-15 11:48 ` Benoît Canet
2014-05-15 14:16 ` Eric Blake
2014-05-15 14:24 ` Kevin Wolf
2014-05-15 14:31 ` Jeff Cody
2014-05-15 3:20 ` [Qemu-devel] [PATCH 3/5] block: make 'top' argument to block-commit optional Jeff Cody
2014-05-15 11:47 ` Benoît Canet
2014-05-15 11:49 ` Jeff Cody [this message]
2014-05-15 15:07 ` Eric Blake
2014-05-15 3:20 ` [Qemu-devel] [PATCH 4/5] block: Accept node-name arguments for block-commit Jeff Cody
2014-05-15 12:09 ` Benoît Canet
2014-05-15 15:42 ` Eric Blake
2014-05-15 18:04 ` Jeff Cody
2014-05-15 3:20 ` [Qemu-devel] [PATCH 5/5] block: extend block-commit to accept a string for the backing file Jeff Cody
2014-05-15 12:26 ` Benoît Canet
2014-05-15 12:57 ` Eric Blake
2014-05-15 13:10 ` Jeff Cody
2014-05-15 13:14 ` Eric Blake
2014-05-15 16:06 ` Eric Blake
2014-05-15 18:22 ` Jeff Cody
2014-05-15 18:52 ` Eric Blake
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=20140515114907.GF8452@localhost.localdomain \
--to=jcody@redhat.com \
--cc=benoit.canet@irqsave.net \
--cc=famz@redhat.com \
--cc=kwolf@redhat.com \
--cc=pkrempa@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@redhat.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.