]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: blockjob: Add job types for 'snapshot-save/delete'
authorNikolai Barybin via Devel <devel@lists.libvirt.org>
Wed, 17 Jul 2024 18:21:37 +0000 (21:21 +0300)
committerPeter Krempa <pkrempa@redhat.com>
Wed, 9 Oct 2024 13:22:00 +0000 (15:22 +0200)
The snapshot creation/deletion QMP commands use the qemu 'job' API
to signal completion thus we need to add corresponding job types.

As the job handles everything internally we don't store anything about
the job.

Signed-off-by: Nikolai Barybin <nikolai.barybin@virtuozzo.com>
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
src/qemu/qemu_block.c
src/qemu/qemu_blockjob.c
src/qemu/qemu_blockjob.h
src/qemu/qemu_domain.c

index 9bdec926971ffb33b536d2e98c8adcfa43c62669..e739c097caf3f587dbad21ac401282ce8a960524 100644 (file)
@@ -3775,6 +3775,8 @@ qemuBlockPivot(virDomainObj *vm,
     case QEMU_BLOCKJOB_TYPE_BACKUP:
     case QEMU_BLOCKJOB_TYPE_INTERNAL:
     case QEMU_BLOCKJOB_TYPE_CREATE:
+    case QEMU_BLOCKJOB_TYPE_SNAPSHOT_SAVE:
+    case QEMU_BLOCKJOB_TYPE_SNAPSHOT_DELETE:
     case QEMU_BLOCKJOB_TYPE_BROKEN:
         virReportError(VIR_ERR_OPERATION_INVALID,
                        _("job type '%1$s' does not support pivot"),
index 652b25540a9551eda2942291c32b909f9d9720ed..6e53603fbad48a78463b0c7c3da298530a2e11c9 100644 (file)
@@ -68,6 +68,8 @@ VIR_ENUM_IMPL(qemuBlockjob,
               "backup",
               "",
               "create",
+              "snapshot-save",
+              "snapshot-delete",
               "broken");
 
 static virClass *qemuBlockJobDataClass;
@@ -1455,6 +1457,11 @@ qemuBlockJobEventProcessConcludedTransition(qemuBlockJobData *job,
                                                 progressTotal);
         break;
 
+    case QEMU_BLOCKJOB_TYPE_SNAPSHOT_SAVE:
+    case QEMU_BLOCKJOB_TYPE_SNAPSHOT_DELETE:
+        /* The internal snapshot jobs don't need any extra handling */
+        break;
+
     case QEMU_BLOCKJOB_TYPE_BROKEN:
     case QEMU_BLOCKJOB_TYPE_NONE:
     case QEMU_BLOCKJOB_TYPE_INTERNAL:
index f1ac43b4c7ad68e163bc3ee8b7eaf4dff45c0d11..6620e08c471114d0c5621bf0643c24895898c381 100644 (file)
@@ -65,6 +65,8 @@ typedef enum {
     /* Additional enum values local to qemu */
     QEMU_BLOCKJOB_TYPE_INTERNAL,
     QEMU_BLOCKJOB_TYPE_CREATE,
+    QEMU_BLOCKJOB_TYPE_SNAPSHOT_SAVE,
+    QEMU_BLOCKJOB_TYPE_SNAPSHOT_DELETE,
     QEMU_BLOCKJOB_TYPE_BROKEN,
     QEMU_BLOCKJOB_TYPE_LAST
 } qemuBlockJobType;
index f8eac603ecdee9e9b756f481d1f45db1ac3b2fac..fda4439b0bd5469f5eb7ae917a3da712502c7e75 100644 (file)
@@ -2478,6 +2478,11 @@ qemuDomainObjPrivateXMLFormatBlockjobIterator(void *payload,
             }
             break;
 
+        case QEMU_BLOCKJOB_TYPE_SNAPSHOT_SAVE:
+        case QEMU_BLOCKJOB_TYPE_SNAPSHOT_DELETE:
+            /* No private data for internal snapshot jobs */
+            break;
+
         case QEMU_BLOCKJOB_TYPE_BROKEN:
         case QEMU_BLOCKJOB_TYPE_NONE:
         case QEMU_BLOCKJOB_TYPE_INTERNAL:
@@ -3030,6 +3035,11 @@ qemuDomainObjPrivateXMLParseBlockjobDataSpecific(qemuBlockJobData *job,
                 goto broken;
             break;
 
+        case QEMU_BLOCKJOB_TYPE_SNAPSHOT_SAVE:
+        case QEMU_BLOCKJOB_TYPE_SNAPSHOT_DELETE:
+            /* No extra data for internal snapshot jobs. */
+            break;
+
         case QEMU_BLOCKJOB_TYPE_BROKEN:
         case QEMU_BLOCKJOB_TYPE_NONE:
         case QEMU_BLOCKJOB_TYPE_INTERNAL: