]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
storage: Implement CreateVolFrom for logical and disk backend.
authorCole Robinson <crobinso@redhat.com>
Thu, 9 Jul 2009 23:17:31 +0000 (19:17 -0400)
committerCole Robinson <crobinso@redhat.com>
Thu, 16 Jul 2009 16:52:52 +0000 (12:52 -0400)
With the previous refactoring, this is a simple process, since the global
'CreateBlockFrom' in storage_backend does all the work.

src/storage_backend_disk.c
src/storage_backend_logical.c

index e1357528e15a5fceaf2a32d1f77198471a1e7dc7..ae2acaece371867fa1d0e14e9a953d70d5a44307 100644 (file)
@@ -592,6 +592,20 @@ virStorageBackendDiskCreateVol(virConnectPtr conn,
     return 0;
 }
 
+static int
+virStorageBackendDiskBuildVolFrom(virConnectPtr conn,
+                                  virStorageVolDefPtr vol,
+                                  virStorageVolDefPtr inputvol,
+                                  unsigned int flags)
+{
+    virStorageBackendBuildVolFrom build_func;
+
+    build_func = virStorageBackendGetBuildVolFromFunction(conn, vol, inputvol);
+    if (!build_func)
+        return -1;
+
+    return build_func(conn, vol, inputvol, flags);
+}
 
 static int
 virStorageBackendDiskDeleteVol(virConnectPtr conn,
@@ -660,4 +674,5 @@ virStorageBackend virStorageBackendDisk = {
 
     .createVol = virStorageBackendDiskCreateVol,
     .deleteVol = virStorageBackendDiskDeleteVol,
+    .buildVolFrom = virStorageBackendDiskBuildVolFrom,
 };
index 1bd00d4b2d0cc9770c27624fd34772b0f20c26d9..6c123ae77fb3860a56b4e4a2aaa1695a7a0fa772 100644 (file)
@@ -653,6 +653,21 @@ virStorageBackendLogicalCreateVol(virConnectPtr conn,
     return -1;
 }
 
+static int
+virStorageBackendLogicalBuildVolFrom(virConnectPtr conn,
+                                     virStorageVolDefPtr vol,
+                                     virStorageVolDefPtr inputvol,
+                                     unsigned int flags)
+{
+    virStorageBackendBuildVolFrom build_func;
+
+    build_func = virStorageBackendGetBuildVolFromFunction(conn, vol, inputvol);
+    if (!build_func)
+        return -1;
+
+    return build_func(conn, vol, inputvol, flags);
+}
+
 static int
 virStorageBackendLogicalDeleteVol(virConnectPtr conn,
                                   virStoragePoolObjPtr pool ATTRIBUTE_UNUSED,
@@ -679,6 +694,8 @@ virStorageBackend virStorageBackendLogical = {
     .refreshPool = virStorageBackendLogicalRefreshPool,
     .stopPool = virStorageBackendLogicalStopPool,
     .deletePool = virStorageBackendLogicalDeletePool,
+    .buildVol = NULL,
+    .buildVolFrom = virStorageBackendLogicalBuildVolFrom,
     .createVol = virStorageBackendLogicalCreateVol,
     .deleteVol = virStorageBackendLogicalDeleteVol,
 };