[libvirt] [PATCH 1/7] storage: added ploop volume type

Olga Krishtal okrishtal at virtuozzo.com
Mon Mar 14 16:00:34 UTC 2016


Ploop image consists of directory with two files: ploop image itself,
called root.hds and DiskDescriptor.xml that contains information about
ploop device: https://openvz.org/Ploop/format.
Such volume are difficult to manipulate in terms of existing volume types
because they are neither a single files nor a directory.
This patch introduces new volume type - ploop. This volume type is used
by ploop volume's exclusively.

Signed-off-by: Olga Krishtal <okrishtal at virtuozzo.com>
---
 include/libvirt/libvirt-storage.h | 1 +
 src/conf/storage_conf.c           | 3 ++-
 src/storage/storage_backend_fs.c  | 3 +++
 tools/virsh-volume.c              | 3 ++-
 4 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/include/libvirt/libvirt-storage.h b/include/libvirt/libvirt-storage.h
index 1a868cc..57a26c4 100644
--- a/include/libvirt/libvirt-storage.h
+++ b/include/libvirt/libvirt-storage.h
@@ -122,6 +122,7 @@ typedef enum {
     VIR_STORAGE_VOL_NETWORK = 3,  /* Network volumes like RBD (RADOS Block Device) */
     VIR_STORAGE_VOL_NETDIR = 4,   /* Network accessible directory that can
                                    * contain other network volumes */
+    VIR_STORAGE_VOL_PLOOP = 5,    /* Ploop based volumes*/
 
 # ifdef VIR_ENUM_SENTINELS
     VIR_STORAGE_VOL_LAST
diff --git a/src/conf/storage_conf.c b/src/conf/storage_conf.c
index bfba521..f4e04ce 100644
--- a/src/conf/storage_conf.c
+++ b/src/conf/storage_conf.c
@@ -52,7 +52,8 @@ VIR_LOG_INIT("conf.storage_conf");
 
 VIR_ENUM_IMPL(virStorageVol,
               VIR_STORAGE_VOL_LAST,
-              "file", "block", "dir", "network", "netdir")
+              "file", "block", "dir", "network",
+              "netdir", "ploop")
 
 VIR_ENUM_IMPL(virStoragePool,
               VIR_STORAGE_POOL_LAST,
diff --git a/src/storage/storage_backend_fs.c b/src/storage/storage_backend_fs.c
index 692c9ff..d54dbfa 100644
--- a/src/storage/storage_backend_fs.c
+++ b/src/storage/storage_backend_fs.c
@@ -1085,6 +1085,8 @@ virStorageBackendFileSystemVolCreate(virConnectPtr conn ATTRIBUTE_UNUSED,
 
     if (vol->target.format == VIR_STORAGE_FILE_DIR)
         vol->type = VIR_STORAGE_VOL_DIR;
+    else if (vol->target.format == VIR_STORAGE_FILE_PLOOP)
+        vol->type = VIR_STORAGE_VOL_PLOOP;
     else
         vol->type = VIR_STORAGE_VOL_FILE;
 
@@ -1259,6 +1261,7 @@ virStorageBackendFileSystemVolDelete(virConnectPtr conn ATTRIBUTE_UNUSED,
             }
         }
         break;
+    case VIR_STORAGE_VOL_PLOOP:
     case VIR_STORAGE_VOL_BLOCK:
     case VIR_STORAGE_VOL_NETWORK:
     case VIR_STORAGE_VOL_NETDIR:
diff --git a/tools/virsh-volume.c b/tools/virsh-volume.c
index cfb8cfc..36dd0ed 100644
--- a/tools/virsh-volume.c
+++ b/tools/virsh-volume.c
@@ -965,7 +965,8 @@ VIR_ENUM_IMPL(virshStorageVol,
               N_("block"),
               N_("dir"),
               N_("network"),
-              N_("netdir"))
+              N_("netdir"),
+              N_("ploop"))
 
 static const char *
 virshVolumeTypeToString(int type)
-- 
1.8.3.1




More information about the libvir-list mailing list