All of lore.kernel.org
 help / color / mirror / Atom feed
From: Pavel Hrdina <phrdina@redhat.com>
To: Luiz Capitulino <lcapitulino@redhat.com>
Cc: Markus Armbruster <armbru@redhat.com>, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH v4 00/11] convert savevm to use qapi and introduce qmp command
Date: Wed, 10 Apr 2013 15:50:43 +0200	[thread overview]
Message-ID: <51656E33.8050505@redhat.com> (raw)
In-Reply-To: <20130410093255.440005f7@redhat.com>

On 10.4.2013 15:32, Luiz Capitulino wrote:
> On Wed, 10 Apr 2013 15:22:49 +0200
> Pavel Hrdina <phrdina@redhat.com> wrote:
>
>> On 10.4.2013 14:49, Eric Blake wrote:
>>> On 04/10/2013 06:40 AM, Luiz Capitulino wrote:
>>>> On Wed, 10 Apr 2013 06:24:11 -0600
>>>> Eric Blake <eblake@redhat.com> wrote:
>>>>
>>>>>>     - If you want to overwrite an existing snapshot, you could specify
>>>>>>       the 'id' or the 'name' argument or both of them and also you will
>>>>>>       have to use the 'force' argument
>>>>>
>>>>> But the argument made in this thread is that QMP should _not_ have a
>>>>> force argument.  It should be a flat-out error in QMP to try to create a
>>>>> snapshot with a conflicting name or tag; preferably with a distinct
>>>>> error type.  Higher-level apps (HMP savevm -f) would try to create; if
>>>>> -f is not specified, the error is good enough; if -f is specified and
>>>>> that particular error is returned, then HMP calls delete and then
>>>>> re-tries the create.  No 'force' argument needed at the QMP layer.
>>>>
>>>> To avoid adding a new error class, the HMP command could query for the
>>>> snapshot name and delete it if it exists before creating the snapshot.
>>>
>>> Atomic collision detection is nicer than having to pre-query - fewer QMP
>>> calls in the common case.  But you're right that none of the existing
>>> ErrorClass categories fit the idea of "creation refused because name
>>> would collide".
>
> We can add a new error class if it's important to be atomic. I don't think
> this is hugely important though, first because we don't support multiple
> QMP connections (it should work, but we don't advertise it as supported) and
> also because I don't think we have ever designed commands with this in mind.
>
>> We still could have the force parameter for HMP because the QMP command
>> will return an error message that the snapshot already exist. The only
>> drawback will be that the error message will not contain an information
>> that you could use a '-f' parameter for override.
>
> You're right, but we're discussing how the HMP command could detect that
> an existing snapshot should be deleted.
>

If you will get an error about existing snapshot then you could write
"savevm -f my_name" and the code could be something like this:

     if (force) {
         qmp_vm_snapshot_delete(!!name, name, false, 0, &local_err);
         if (error_is_set(&local_err) {
             hmp_handle_error(mon, &local_err);
             return;
         }
     }

     info = qmp_vm_snapshot_save(!!name, name, &local_err);

     if (info) {
         print_info
     }

     qapi_free_SnapshotInfo(info);
     hmp_handle_error(mon, &local_err);

The only requirement is that the qmp_vm_snapshot_delete cannot set an 
error if the snapshot doesn't exist. To get this information the 
qmp_vm_snapshot_delete will return nothing or SnapshotInfo of deleted 
snapshot.

  reply	other threads:[~2013-04-10 13:51 UTC|newest]

Thread overview: 53+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-03-29 14:12 [Qemu-devel] [PATCH v4 00/11] convert savevm to use qapi and introduce qmp command Pavel Hrdina
2013-03-29 14:12 ` [Qemu-devel] [PATCH v4 01/11] block: add error parameter to bdrv_snapshot_create() and related functions Pavel Hrdina
2013-04-09 13:13   ` Markus Armbruster
2013-04-09 13:43     ` Kevin Wolf
2013-04-09 16:21   ` Markus Armbruster
2013-03-29 14:12 ` [Qemu-devel] [PATCH v4 02/11] block: add error parameter to del_existing_snapshots() Pavel Hrdina
2013-04-09 13:27   ` Markus Armbruster
2013-04-09 14:14     ` Luiz Capitulino
2013-04-10  9:57     ` Pavel Hrdina
2013-04-10 11:33       ` Markus Armbruster
2013-04-10 12:06       ` Eric Blake
2013-03-29 14:12 ` [Qemu-devel] [PATCH v4 03/11] savevm: add error parameter to qemu_savevm_state_begin() Pavel Hrdina
2013-04-09 13:34   ` Markus Armbruster
2013-04-09 13:37     ` Markus Armbruster
2013-04-09 13:47       ` Pavel Hrdina
2013-04-09 13:49       ` Markus Armbruster
2013-03-29 14:12 ` [Qemu-devel] [PATCH v4 04/11] savevm: add error parameter to qemu_savevm_state_iterate() Pavel Hrdina
2013-04-09 13:41   ` Markus Armbruster
2013-03-29 14:12 ` [Qemu-devel] [PATCH v4 05/11] savevm: add error parameter to qemu_savevm_state_complete() Pavel Hrdina
2013-04-09 13:56   ` Markus Armbruster
2013-03-29 14:12 ` [Qemu-devel] [PATCH v4 06/11] savevm: add error parameter to qemu_savevm_state() Pavel Hrdina
2013-04-09 14:00   ` Markus Armbruster
2013-03-29 14:12 ` [Qemu-devel] [PATCH v4 07/11] qapi: Convert savevm Pavel Hrdina
2013-03-29 16:12   ` Eric Blake
2013-03-29 16:21     ` Pavel Hrdina
2013-04-09 16:04   ` Markus Armbruster
2013-04-09 16:12     ` Eric Blake
2013-04-09 17:23       ` Markus Armbruster
2013-04-09 17:46         ` Eric Blake
2013-04-10  8:01           ` Markus Armbruster
2013-03-29 14:12 ` [Qemu-devel] [PATCH v4 08/11] qemu-img: introduce qemu_img_handle_error Pavel Hrdina
2013-04-09 16:10   ` Markus Armbruster
2013-03-29 14:12 ` [Qemu-devel] [PATCH v4 09/11] block: update return value from bdrv_snapshot_create Pavel Hrdina
2013-04-09 16:29   ` Markus Armbruster
2013-03-29 14:12 ` [Qemu-devel] [PATCH v4 10/11] savevm: update return value from qemu_savevm_state Pavel Hrdina
2013-04-09 16:32   ` Markus Armbruster
2013-03-29 14:12 ` [Qemu-devel] [PATCH v4 11/11] savevm: add force parameter to HMP command and return snapshot info Pavel Hrdina
2013-04-09 16:45   ` Markus Armbruster
2013-04-10  8:18 ` [Qemu-devel] [PATCH v4 00/11] convert savevm to use qapi and introduce qmp command Markus Armbruster
2013-04-10 10:53   ` Pavel Hrdina
2013-04-10 12:24     ` Eric Blake
2013-04-10 12:40       ` Luiz Capitulino
2013-04-10 12:49         ` Eric Blake
2013-04-10 13:22           ` Pavel Hrdina
2013-04-10 13:32             ` Luiz Capitulino
2013-04-10 13:50               ` Pavel Hrdina [this message]
2013-04-10 14:05       ` Pavel Hrdina
2013-04-10 17:15         ` Eric Blake
2013-04-10 17:33           ` Pavel Hrdina
2013-04-17  2:48             ` Wenchao Xia
2013-04-11  9:20           ` Markus Armbruster
2013-04-15 12:10             ` Kevin Wolf
2013-04-15 13:16               ` 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=51656E33.8050505@redhat.com \
    --to=phrdina@redhat.com \
    --cc=armbru@redhat.com \
    --cc=lcapitulino@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /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.