Skip to content
Snippets Groups Projects
  • Daniel P. Berrangé's avatar
    0f0d83a4
    migration: introduce snapshot-{save, load, delete} QMP commands · 0f0d83a4
    Daniel P. Berrangé authored
    
    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.
    
    Note that the existing "query-named-block-nodes" can be used to query
    what snapshots currently exist for block nodes.
    
    Acked-by: default avatarMarkus Armbruster <armbru@redhat.com>
    Signed-off-by: default avatarDaniel P. Berrangé <berrange@redhat.com>
    Message-Id: <20210204124834.774401-13-berrange@redhat.com>
    Signed-off-by: default avatarDr. David Alan Gilbert <dgilbert@redhat.com>
      dgilbert: removed tests for now, the output ordering isn't
    deterministic
    0f0d83a4
    History
    migration: introduce snapshot-{save, load, delete} QMP commands
    Daniel P. Berrangé authored
    
    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.
    
    Note that the existing "query-named-block-nodes" can be used to query
    what snapshots currently exist for block nodes.
    
    Acked-by: default avatarMarkus Armbruster <armbru@redhat.com>
    Signed-off-by: default avatarDaniel P. Berrangé <berrange@redhat.com>
    Message-Id: <20210204124834.774401-13-berrange@redhat.com>
    Signed-off-by: default avatarDr. David Alan Gilbert <dgilbert@redhat.com>
      dgilbert: removed tests for now, the output ordering isn't
    deterministic