Added general defenitions for vstorage pool backend Signed-off-by: Olga Krishtal <okrishtal@xxxxxxxxxxxxx> --- include/libvirt/libvirt-storage.h | 1 + po/POTFILES.in | 1 + src/Makefile.am | 9 +++++++++ src/conf/storage_conf.c | 17 ++++++++++++++++- src/conf/storage_conf.h | 1 + src/storage/storage_backend.c | 6 ++++++ src/storage/storage_backend_vstorage.c | 16 ++++++++++++++++ src/storage/storage_backend_vstorage.h | 28 ++++++++++++++++++++++++++++ src/storage/storage_driver.c | 2 ++ tools/virsh-pool.c | 3 +++ tools/virsh.c | 3 +++ 11 files changed, 86 insertions(+), 1 deletion(-) create mode 100644 src/storage/storage_backend_vstorage.c create mode 100644 src/storage/storage_backend_vstorage.h diff --git a/include/libvirt/libvirt-storage.h b/include/libvirt/libvirt-storage.h index 8a861e4..45ec720 100644 --- a/include/libvirt/libvirt-storage.h +++ b/include/libvirt/libvirt-storage.h @@ -240,6 +240,7 @@ typedef enum { VIR_CONNECT_LIST_STORAGE_POOLS_SHEEPDOG = 1 << 15, VIR_CONNECT_LIST_STORAGE_POOLS_GLUSTER = 1 << 16, VIR_CONNECT_LIST_STORAGE_POOLS_ZFS = 1 << 17, + VIR_CONNECT_LIST_STORAGE_POOLS_VSTORAGE = 1 << 18, } virConnectListAllStoragePoolsFlags; int virConnectListAllStoragePools(virConnectPtr conn, diff --git a/po/POTFILES.in b/po/POTFILES.in index 59efd91..b4fac0e 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -175,6 +175,7 @@ src/storage/storage_backend_mpath.c src/storage/storage_backend_rbd.c src/storage/storage_backend_scsi.c src/storage/storage_backend_sheepdog.c +src/storage/storage_backend_vstorage.c src/storage/storage_backend_zfs.c src/storage/storage_driver.c src/test/test_driver.c diff --git a/src/Makefile.am b/src/Makefile.am index 21a78e0..78e64f2 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1005,6 +1005,10 @@ STORAGE_DRIVER_GLUSTER_SOURCES = \ STORAGE_DRIVER_ZFS_SOURCES = \ storage/storage_backend_zfs.h storage/storage_backend_zfs.c +STORAGE_DRIVER_VSTORAGE_SOURCES = \ + storage/storage_backend_vstorage.h \ + storage/storage_backend_vstorage.c + STORAGE_HELPER_DISK_SOURCES = \ storage/parthelper.c @@ -1712,6 +1716,10 @@ if WITH_STORAGE_ZFS libvirt_driver_storage_impl_la_SOURCES += $(STORAGE_DRIVER_ZFS_SOURCES) endif WITH_STORAGE_ZFS +if WITH_STORAGE_VSTORAGE +libvirt_driver_storage_impl_la_SOURCES += $(STORAGE_DRIVER_VSTORAGE_SOURCES) +endif WITH_STORAGE_VSTORAGE + if WITH_NODE_DEVICES # Needed to keep automake quiet about conditionals if WITH_DRIVER_MODULES @@ -1923,6 +1931,7 @@ EXTRA_DIST += \ $(STORAGE_DRIVER_SHEEPDOG_SOURCES) \ $(STORAGE_DRIVER_GLUSTER_SOURCES) \ $(STORAGE_DRIVER_ZFS_SOURCES) \ + $(STORAGE_DRIVER_VSTORAGE_SOURCES) \ $(NODE_DEVICE_DRIVER_SOURCES) \ $(NODE_DEVICE_DRIVER_HAL_SOURCES) \ $(NODE_DEVICE_DRIVER_UDEV_SOURCES) \ diff --git a/src/conf/storage_conf.c b/src/conf/storage_conf.c index c53f080..c9b93aa 100644 --- a/src/conf/storage_conf.c +++ b/src/conf/storage_conf.c @@ -60,7 +60,8 @@ VIR_ENUM_IMPL(virStoragePool, "dir", "fs", "netfs", "logical", "disk", "iscsi", "scsi", "mpath", "rbd", - "sheepdog", "gluster", "zfs") + "sheepdog", "gluster", "zfs", + "vstorage") VIR_ENUM_IMPL(virStoragePoolFormatFileSystem, VIR_STORAGE_POOL_FS_LAST, @@ -274,6 +275,16 @@ static virStoragePoolTypeInfo poolTypeInfo[] = { .defaultFormat = VIR_STORAGE_FILE_RAW, }, }, + {.poolType = VIR_STORAGE_POOL_VSTORAGE, + .poolOptions = { + .flags = VIR_STORAGE_POOL_SOURCE_NAME, + }, + .volOptions = { + .defaultFormat = VIR_STORAGE_FILE_RAW, + .formatFromString = virStorageVolumeFormatFromString, + .formatToString = virStorageFileFormatTypeToString, + }, + }, }; @@ -2611,6 +2622,10 @@ virStoragePoolSourceFindDuplicate(virConnectPtr conn, /* Only one mpath pool is valid per host */ matchpool = pool; break; + case VIR_STORAGE_POOL_VSTORAGE: + if (STREQ(pool->def->source.name, def->source.name)) + matchpool = pool; + break; case VIR_STORAGE_POOL_RBD: case VIR_STORAGE_POOL_LAST: break; diff --git a/src/conf/storage_conf.h b/src/conf/storage_conf.h index b35471d..e952f5f 100644 --- a/src/conf/storage_conf.h +++ b/src/conf/storage_conf.h @@ -95,6 +95,7 @@ typedef enum { VIR_STORAGE_POOL_SHEEPDOG, /* Sheepdog device */ VIR_STORAGE_POOL_GLUSTER, /* Gluster device */ VIR_STORAGE_POOL_ZFS, /* ZFS */ + VIR_STORAGE_POOL_VSTORAGE, /* Virtuozzo Storage */ VIR_STORAGE_POOL_LAST, } virStoragePoolType; diff --git a/src/storage/storage_backend.c b/src/storage/storage_backend.c index 18433e9..207a534 100644 --- a/src/storage/storage_backend.c +++ b/src/storage/storage_backend.c @@ -103,6 +103,9 @@ #if WITH_STORAGE_ZFS # include "storage_backend_zfs.h" #endif +#if WITH_STORAGE_VSTORAGE +# include "storage_backend_vstorage.h" +#endif #define VIR_FROM_THIS VIR_FROM_STORAGE @@ -143,6 +146,9 @@ static virStorageBackendPtr backends[] = { #if WITH_STORAGE_ZFS &virStorageBackendZFS, #endif +#if WITH_STORAGE_VSTORAGE + &virStorageBackendVstorage, +#endif NULL }; diff --git a/src/storage/storage_backend_vstorage.c b/src/storage/storage_backend_vstorage.c new file mode 100644 index 0000000..3a57385 --- /dev/null +++ b/src/storage/storage_backend_vstorage.c @@ -0,0 +1,16 @@ +#include <config.h> + +#include "viralloc.h" +#include "virerror.h" +#include "virfile.h" +#include "storage_backend_vstorage.h" +#include "virlog.h" +#include "virstring.h" + +#define VIR_FROM_THIS VIR_FROM_STORAGE + +VIR_LOG_INIT("storage.storage_backend_vstorage"); + +virStorageBackend virStorageBackendVstorage = { + .type = VIR_STORAGE_POOL_VSTORAGE, +}; diff --git a/src/storage/storage_backend_vstorage.h b/src/storage/storage_backend_vstorage.h new file mode 100644 index 0000000..262e454 --- /dev/null +++ b/src/storage/storage_backend_vstorage.h @@ -0,0 +1,28 @@ +/* + * storage_backend_vstorage.h: storage backend for Virtuozzo storage + * handling + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see + * <http://www.gnu.org/licenses/>. + * + */ + +#ifndef __VIR_STORAGE_BACKEND_VSTORAGE_H__ +# define __VIR_STORAGE_BACKEND_VSTORAGE_H__ + +# include "storage_backend.h" + +extern virStorageBackend virStorageBackendVstorage; + +#endif /* __VIR_STORAGE_BACKEND_VSTORAGE_H__ */ diff --git a/src/storage/storage_driver.c b/src/storage/storage_driver.c index 8f1d3f0..257af80 100644 --- a/src/storage/storage_driver.c +++ b/src/storage/storage_driver.c @@ -1618,6 +1618,7 @@ storageVolLookupByPath(virConnectPtr conn, case VIR_STORAGE_POOL_ISCSI: case VIR_STORAGE_POOL_SCSI: case VIR_STORAGE_POOL_MPATH: + case VIR_STORAGE_POOL_VSTORAGE: stable_path = virStorageBackendStablePath(pool, cleanpath, false); @@ -3501,6 +3502,7 @@ virStorageTranslateDiskSourcePool(virConnectPtr conn, case VIR_STORAGE_POOL_DISK: case VIR_STORAGE_POOL_SCSI: case VIR_STORAGE_POOL_ZFS: + case VIR_STORAGE_POOL_VSTORAGE: if (!(def->src->path = virStorageVolGetPath(vol))) goto cleanup; diff --git a/tools/virsh-pool.c b/tools/virsh-pool.c index 6806b7a..f766be6 100644 --- a/tools/virsh-pool.c +++ b/tools/virsh-pool.c @@ -1166,6 +1166,9 @@ cmdPoolList(vshControl *ctl, const vshCmd *cmd ATTRIBUTE_UNUSED) case VIR_STORAGE_POOL_ZFS: flags |= VIR_CONNECT_LIST_STORAGE_POOLS_ZFS; break; + case VIR_STORAGE_POOL_VSTORAGE: + flags |= VIR_CONNECT_LIST_STORAGE_POOLS_VSTORAGE; + break; case VIR_STORAGE_POOL_LAST: break; } diff --git a/tools/virsh.c b/tools/virsh.c index 1068447..7eb51ab 100644 --- a/tools/virsh.c +++ b/tools/virsh.c @@ -648,6 +648,9 @@ virshShowVersion(vshControl *ctl ATTRIBUTE_UNUSED) #ifdef WITH_STORAGE_ZFS vshPrint(ctl, " ZFS"); #endif +#ifdef WITH_STORAGE_VSTORAGE + vshPrint(ctl, "Virtuozzo Storage"); +#endif vshPrint(ctl, "\n"); vshPrint(ctl, "%s", _(" Miscellaneous:")); -- 1.8.3.1 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list