qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Daniel P. Berrangé" <berrange@redhat.com>
To: Eric Blake <eblake@redhat.com>
Cc: Kevin Wolf <kwolf@redhat.com>, Peter Krempa <pkrempa@redhat.com>,
	"Denis V. Lunev" <den@virtuozzo.com>,
	qemu-block@nongnu.org, Juan Quintela <quintela@redhat.com>,
	Markus Armbruster <armbru@redhat.com>,
	qemu-devel@nongnu.org, Pavel Dovgalyuk <pavel.dovgaluk@ispras.ru>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Max Reitz <mreitz@redhat.com>, John Snow <jsnow@redhat.com>,
	"Dr. David Alan Gilbert" <dgilbert@redhat.com>
Subject: Re: [PATCH v4 9/9] migration: introduce snapshot-{save, load, delete} QMP commands
Date: Fri, 2 Oct 2020 16:56:17 +0100	[thread overview]
Message-ID: <20201002155617.GN2338114@redhat.com> (raw)
In-Reply-To: <0b8eef3d-db87-f82b-798d-2a0cb7ec1198@redhat.com>

On Mon, Sep 21, 2020 at 01:16:16PM -0500, Eric Blake wrote:
> On 9/16/20 3:17 AM, Markus Armbruster wrote:
> > Daniel P. Berrangé <berrange@redhat.com> writes:
> > 
> > > savevm, loadvm and delvm are some of the few HMP commands that have never
> > > been converted to use QMP. The reasons for the lack of conversion are
> > > that they blocked execution of the event thread, and the semantics
> > > around choice of disks were ill-defined.
> > > 
> > > Despite this downside, however, libvirt and applications using libvirt
> > > have used these commands for as long as QMP has existed, via the
> > > "human-monitor-command" passthrough command. IOW, while it is clearly
> > > desirable to be able to fix the problems, they are not a blocker to
> > > all real world usage.
> > > 
> > > Meanwhile there is a need for other features which involve adding new
> > > parameters to the commands. This is possible with HMP passthrough, but
> > > it provides no reliable way for apps to introspect features, so using
> > > QAPI modelling is highly desirable.
> > > 
> > > This patch thus introduces new snapshot-{load,save,delete} commands to
> > > QMP that are intended to replace the old HMP counterparts. The new
> > > commands are given different names, because they will be using the new
> > > QEMU job framework and thus will have diverging behaviour from the HMP
> > > originals. It would thus be misleading to keep the same name.
> > > 
> > > While this design uses the generic job framework, the current impl is
> > > still blocking. The intention that the blocking problem is fixed later.
> > > None the less applications using these new commands should assume that
> > > they are asynchronous and thus wait for the job status change event to
> > > indicate completion.
> > > 
> > > In addition to using the job framework, the new commands require the
> > > caller to be explicit about all the block device nodes used in the
> > > snapshot operations, with no built-in default heuristics in use.
> > > 
> > > Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
> > [...]
> > > diff --git a/qapi/job.json b/qapi/job.json
> > > index 280c2f76f1..b2cbb4fead 100644
> > > --- a/qapi/job.json
> > > +++ b/qapi/job.json
> > > @@ -22,10 +22,17 @@
> > >   #
> > >   # @amend: image options amend job type, see "x-blockdev-amend" (since 5.1)
> > >   #
> > > +# @snapshot-load: snapshot load job type, see "snapshot-load" (since 5.2)
> > > +#
> > > +# @snapshot-save: snapshot save job type, see "snapshot-save" (since 5.2)
> > > +#
> > > +# @snapshot-delete: snapshot delete job type, see "snapshot-delete" (since 5.2)
> > > +#
> > >   # Since: 1.7
> > >   ##
> > >   { 'enum': 'JobType',
> > > -  'data': ['commit', 'stream', 'mirror', 'backup', 'create', 'amend'] }
> > > +  'data': ['commit', 'stream', 'mirror', 'backup', 'create', 'amend',
> > > +           'snapshot-load', 'snapshot-save', 'snapshot-delete'] }
> > >   ##
> > >   # @JobStatus:
> > > diff --git a/qapi/migration.json b/qapi/migration.json
> > > index 675f70bb67..b584c0be31 100644
> > > --- a/qapi/migration.json
> > > +++ b/qapi/migration.json
> > > @@ -1720,3 +1720,123 @@
> > >   ##
> > >   { 'event': 'UNPLUG_PRIMARY',
> > >     'data': { 'device-id': 'str' } }
> > > +
> > > +##
> > > +# @snapshot-save:
> > > +#
> > > +# Save a VM snapshot
> > > +#
> > > +# @job-id: identifier for the newly created job
> > > +# @tag: name of the snapshot to create
> > > +# @devices: list of block device node names to save a snapshot to
> > 
> > Looks like you dropped the idea to also accept drive IDs.  Is that for
> > good, or would you like to add it later?
> 
> Is it necessary?  Several of our newer block interfaces have required node
> names, rather than permitting alternation.  If we rewrite the existing HMP
> commands to operate on top of the new QMP command, it is still possible for
> HMP to support drive names even when QMP does not.  I don't think the
> complexity of worrying about drive names is worth it; after all, the QMP
> command is new enough that the only libvirt that will use it is also a
> libvirt that knows how to use -blockdev, and thus node names are sufficient.
> 
> Yes, we can add drive ids later if I turn out to be wrong, but for now, I'm
> hoping their exclusion is intentional.

I didn't realize we have precedent for new commands only accepting
node names. Given that, I'm going to stick with this design and
only support node names.

Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|



      reply	other threads:[~2020-10-02 15:59 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-15 11:35 [PATCH v4 0/9] migration: bring improved savevm/loadvm/delvm to QMP Daniel P. Berrangé
2020-09-15 11:35 ` [PATCH v4 1/9] block: push error reporting into bdrv_all_*_snapshot functions Daniel P. Berrangé
2020-09-15 11:35 ` [PATCH v4 2/9] migration: stop returning errno from load_snapshot() Daniel P. Berrangé
2020-09-15 11:35 ` [PATCH v4 3/9] block: add ability to specify list of blockdevs during snapshot Daniel P. Berrangé
2020-09-15 11:35 ` [PATCH v4 4/9] block: allow specifying name of block device for vmstate storage Daniel P. Berrangé
2020-09-15 11:35 ` [PATCH v4 5/9] migration: control whether snapshots are ovewritten Daniel P. Berrangé
2020-09-16  7:47   ` Markus Armbruster
2020-09-16  8:25     ` Daniel P. Berrangé
2020-09-15 11:35 ` [PATCH v4 6/9] migration: wire up support for snapshot device selection Daniel P. Berrangé
2020-09-21 17:41   ` Dr. David Alan Gilbert
2020-09-15 11:35 ` [PATCH v4 7/9] migration: introduce a delete_snapshot wrapper Daniel P. Berrangé
2020-09-15 11:35 ` [PATCH v4 8/9] iotests: add support for capturing and matching QMP events Daniel P. Berrangé
2020-09-15 11:35 ` [PATCH v4 9/9] migration: introduce snapshot-{save, load, delete} QMP commands Daniel P. Berrangé
2020-09-16  8:17   ` Markus Armbruster
2020-09-16  8:27     ` Daniel P. Berrangé
2020-09-16 11:44       ` Markus Armbruster
2020-09-21 18:16     ` Eric Blake
2020-10-02 15:56       ` Daniel P. Berrangé [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=20201002155617.GN2338114@redhat.com \
    --to=berrange@redhat.com \
    --cc=armbru@redhat.com \
    --cc=den@virtuozzo.com \
    --cc=dgilbert@redhat.com \
    --cc=eblake@redhat.com \
    --cc=jsnow@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=mreitz@redhat.com \
    --cc=pavel.dovgaluk@ispras.ru \
    --cc=pbonzini@redhat.com \
    --cc=pkrempa@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=quintela@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 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).