From fd06fd1442f6cd404a7221fb2d56bc42f0e013c7 Mon Sep 17 00:00:00 2001 From: Cole Robinson Date: Thu, 9 Jul 2009 19:17:31 -0400 Subject: [PATCH] storage: Implement CreateVolFrom for logical and disk backend. 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 | 15 +++++++++++++++ src/storage_backend_logical.c | 17 +++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/src/storage_backend_disk.c b/src/storage_backend_disk.c index e1357528e1..ae2acaece3 100644 --- a/src/storage_backend_disk.c +++ b/src/storage_backend_disk.c @@ -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, }; diff --git a/src/storage_backend_logical.c b/src/storage_backend_logical.c index 1bd00d4b2d..6c123ae77f 100644 --- a/src/storage_backend_logical.c +++ b/src/storage_backend_logical.c @@ -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, };