storage: Introduce Virtuozzo vstorage backend
Added general definitions for vstorage pool backend including the build options to add --with-storage-vstorage checking. In order to use vstorage as a backend for a storage pool vstorage tools (vstorage and vstorage-mount) need to be installed. Signed-off-by: Olga Krishtal <okrishtal@virtuozzo.com>
This commit is contained in:
parent
1452c85fb7
commit
e590d5301e
@ -570,6 +570,7 @@ LIBVIRT_STORAGE_ARG_RBD
|
|||||||
LIBVIRT_STORAGE_ARG_SHEEPDOG
|
LIBVIRT_STORAGE_ARG_SHEEPDOG
|
||||||
LIBVIRT_STORAGE_ARG_GLUSTER
|
LIBVIRT_STORAGE_ARG_GLUSTER
|
||||||
LIBVIRT_STORAGE_ARG_ZFS
|
LIBVIRT_STORAGE_ARG_ZFS
|
||||||
|
LIBVIRT_STORAGE_ARG_VSTORAGE
|
||||||
|
|
||||||
if test "$with_libvirtd" = "no"; then
|
if test "$with_libvirtd" = "no"; then
|
||||||
with_storage_dir=no
|
with_storage_dir=no
|
||||||
@ -583,6 +584,7 @@ if test "$with_libvirtd" = "no"; then
|
|||||||
with_storage_sheepdog=no
|
with_storage_sheepdog=no
|
||||||
with_storage_gluster=no
|
with_storage_gluster=no
|
||||||
with_storage_zfs=no
|
with_storage_zfs=no
|
||||||
|
with_storage_vstorage=no
|
||||||
fi
|
fi
|
||||||
|
|
||||||
dnl storage-fs does not work on MacOS X
|
dnl storage-fs does not work on MacOS X
|
||||||
@ -602,6 +604,7 @@ LIBVIRT_STORAGE_CHECK_RBD
|
|||||||
LIBVIRT_STORAGE_CHECK_SHEEPDOG
|
LIBVIRT_STORAGE_CHECK_SHEEPDOG
|
||||||
LIBVIRT_STORAGE_CHECK_GLUSTER
|
LIBVIRT_STORAGE_CHECK_GLUSTER
|
||||||
LIBVIRT_STORAGE_CHECK_ZFS
|
LIBVIRT_STORAGE_CHECK_ZFS
|
||||||
|
LIBVIRT_STORAGE_CHECK_VSTORAGE
|
||||||
|
|
||||||
with_storage=no
|
with_storage=no
|
||||||
for backend in dir fs lvm iscsi scsi mpath rbd disk; do
|
for backend in dir fs lvm iscsi scsi mpath rbd disk; do
|
||||||
@ -935,6 +938,7 @@ LIBVIRT_STORAGE_RESULT_RBD
|
|||||||
LIBVIRT_STORAGE_RESULT_SHEEPDOG
|
LIBVIRT_STORAGE_RESULT_SHEEPDOG
|
||||||
LIBVIRT_STORAGE_RESULT_GLUSTER
|
LIBVIRT_STORAGE_RESULT_GLUSTER
|
||||||
LIBVIRT_STORAGE_RESULT_ZFS
|
LIBVIRT_STORAGE_RESULT_ZFS
|
||||||
|
LIBVIRT_STORAGE_RESULT_VSTORAGE
|
||||||
AC_MSG_NOTICE([])
|
AC_MSG_NOTICE([])
|
||||||
AC_MSG_NOTICE([Security Drivers])
|
AC_MSG_NOTICE([Security Drivers])
|
||||||
AC_MSG_NOTICE([])
|
AC_MSG_NOTICE([])
|
||||||
|
@ -240,6 +240,7 @@ typedef enum {
|
|||||||
VIR_CONNECT_LIST_STORAGE_POOLS_SHEEPDOG = 1 << 15,
|
VIR_CONNECT_LIST_STORAGE_POOLS_SHEEPDOG = 1 << 15,
|
||||||
VIR_CONNECT_LIST_STORAGE_POOLS_GLUSTER = 1 << 16,
|
VIR_CONNECT_LIST_STORAGE_POOLS_GLUSTER = 1 << 16,
|
||||||
VIR_CONNECT_LIST_STORAGE_POOLS_ZFS = 1 << 17,
|
VIR_CONNECT_LIST_STORAGE_POOLS_ZFS = 1 << 17,
|
||||||
|
VIR_CONNECT_LIST_STORAGE_POOLS_VSTORAGE = 1 << 18,
|
||||||
} virConnectListAllStoragePoolsFlags;
|
} virConnectListAllStoragePoolsFlags;
|
||||||
|
|
||||||
int virConnectListAllStoragePools(virConnectPtr conn,
|
int virConnectListAllStoragePools(virConnectPtr conn,
|
||||||
|
73
m4/virt-storage-vstorage.m4
Normal file
73
m4/virt-storage-vstorage.m4
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
dnl The storage vstorage check
|
||||||
|
dnl
|
||||||
|
dnl Copyright (C) 2016 Parallels IP Holdings GmbH, Inc.
|
||||||
|
dnl
|
||||||
|
dnl This library is free software; you can redistribute it and/or
|
||||||
|
dnl modify it under the terms of the GNU Lesser General Public
|
||||||
|
dnl License as published by the Free Software Foundation; either
|
||||||
|
dnl version 2.1 of the License, or (at your option) any later version.
|
||||||
|
dnl
|
||||||
|
dnl This library is distributed in the hope that it will be useful,
|
||||||
|
dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
dnl Lesser General Public License for more details.
|
||||||
|
dnl
|
||||||
|
dnl You should have received a copy of the GNU Lesser General Public
|
||||||
|
dnl License along with this library. If not, see
|
||||||
|
dnl <http://www.gnu.org/licenses/>.
|
||||||
|
dnl
|
||||||
|
|
||||||
|
|
||||||
|
AC_DEFUN([LIBVIRT_STORAGE_ARG_VSTORAGE], [
|
||||||
|
LIBVIRT_ARG_WITH_FEATURE([STORAGE_VSTORAGE],
|
||||||
|
[Virtuozzo Storage backend for the storage driver],
|
||||||
|
[check])
|
||||||
|
])
|
||||||
|
|
||||||
|
AC_DEFUN([LIBVIRT_STORAGE_CHECK_VSTORAGE], [
|
||||||
|
if test "$with_storage_vstorage" = "yes" ||
|
||||||
|
test "$with_storage_vstorage" = "check"; then
|
||||||
|
AC_PATH_PROG([VSTORAGE], [vstorage], [], [$LIBVIRT_SBIN_PATH])
|
||||||
|
AC_PATH_PROG([VSTORAGE_MOUNT], [vstorage-mount], [], [$LIBVIRT_SBIN_PATH])
|
||||||
|
AC_PATH_PROG([UMOUNT], [umount], [], [$LIBVIRT_SBIN_PATH])
|
||||||
|
|
||||||
|
if test "$with_storage_vstorage" = "yes"; then
|
||||||
|
if test -z "$VSTORAGE" || test -z "$VSTORAGE_MOUNT"; then
|
||||||
|
AC_MSG_ERROR([We need vstorage and vstorage-mount tool for Vstorage storage driver]);
|
||||||
|
fi
|
||||||
|
if test -z "$UMOUNT" ; then
|
||||||
|
AC_MSG_ERROR([We need umount for Vstorage storage driver]);
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
if test -z "$VSTORAGE" ; then
|
||||||
|
with_storage_vstorage=no
|
||||||
|
fi
|
||||||
|
if test -z "$VSTORAGE_MOUNT" ; then
|
||||||
|
with_storage_vstorage=no
|
||||||
|
fi
|
||||||
|
if test -z "$UMOUNT" ; then
|
||||||
|
with_storage_vstorage=no
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "$with_storage_fs" = "check" ; then
|
||||||
|
with_storage_vstorage=yes
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "$with_storage_vstorage" = "yes" ; then
|
||||||
|
AC_DEFINE_UNQUOTED([WITH_STORAGE_VSTORAGE], 1,
|
||||||
|
[whether Vstorage backend for storage driver is enabled])
|
||||||
|
AC_DEFINE_UNQUOTED([VSTORAGE], ["$VSTORAGE"],
|
||||||
|
[Location or name of the vstorage client tool])
|
||||||
|
AC_DEFINE_UNQUOTED([VSTORAGE_MOUNT], ["$VSTORAGE_MOUNT"],
|
||||||
|
[Location or name of the vstorage mount tool])
|
||||||
|
AC_DEFINE_UNQUOTED([UMOUNT], ["$UMOUNT"],
|
||||||
|
[Location or name of the umount programm])
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
AM_CONDITIONAL([WITH_STORAGE_VSTORAGE], [test "$with_storage_vstorage" = "yes"])
|
||||||
|
])
|
||||||
|
|
||||||
|
AC_DEFUN([LIBVIRT_STORAGE_RESULT_VSTORAGE], [
|
||||||
|
LIBVIRT_RESULT([Virtuozzo storage], [$with_storage_vstorage])
|
||||||
|
])
|
@ -1007,6 +1007,10 @@ STORAGE_DRIVER_GLUSTER_SOURCES = \
|
|||||||
STORAGE_DRIVER_ZFS_SOURCES = \
|
STORAGE_DRIVER_ZFS_SOURCES = \
|
||||||
storage/storage_backend_zfs.h storage/storage_backend_zfs.c
|
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_HELPER_DISK_SOURCES = \
|
||||||
storage/parthelper.c
|
storage/parthelper.c
|
||||||
|
|
||||||
@ -1714,6 +1718,10 @@ if WITH_STORAGE_ZFS
|
|||||||
libvirt_driver_storage_impl_la_SOURCES += $(STORAGE_DRIVER_ZFS_SOURCES)
|
libvirt_driver_storage_impl_la_SOURCES += $(STORAGE_DRIVER_ZFS_SOURCES)
|
||||||
endif WITH_STORAGE_ZFS
|
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
|
if WITH_NODE_DEVICES
|
||||||
# Needed to keep automake quiet about conditionals
|
# Needed to keep automake quiet about conditionals
|
||||||
if WITH_DRIVER_MODULES
|
if WITH_DRIVER_MODULES
|
||||||
@ -1925,6 +1933,7 @@ EXTRA_DIST += \
|
|||||||
$(STORAGE_DRIVER_SHEEPDOG_SOURCES) \
|
$(STORAGE_DRIVER_SHEEPDOG_SOURCES) \
|
||||||
$(STORAGE_DRIVER_GLUSTER_SOURCES) \
|
$(STORAGE_DRIVER_GLUSTER_SOURCES) \
|
||||||
$(STORAGE_DRIVER_ZFS_SOURCES) \
|
$(STORAGE_DRIVER_ZFS_SOURCES) \
|
||||||
|
$(STORAGE_DRIVER_VSTORAGE_SOURCES) \
|
||||||
$(NODE_DEVICE_DRIVER_SOURCES) \
|
$(NODE_DEVICE_DRIVER_SOURCES) \
|
||||||
$(NODE_DEVICE_DRIVER_HAL_SOURCES) \
|
$(NODE_DEVICE_DRIVER_HAL_SOURCES) \
|
||||||
$(NODE_DEVICE_DRIVER_UDEV_SOURCES) \
|
$(NODE_DEVICE_DRIVER_UDEV_SOURCES) \
|
||||||
|
@ -60,7 +60,8 @@ VIR_ENUM_IMPL(virStoragePool,
|
|||||||
"dir", "fs", "netfs",
|
"dir", "fs", "netfs",
|
||||||
"logical", "disk", "iscsi",
|
"logical", "disk", "iscsi",
|
||||||
"scsi", "mpath", "rbd",
|
"scsi", "mpath", "rbd",
|
||||||
"sheepdog", "gluster", "zfs")
|
"sheepdog", "gluster", "zfs",
|
||||||
|
"vstorage")
|
||||||
|
|
||||||
VIR_ENUM_IMPL(virStoragePoolFormatFileSystem,
|
VIR_ENUM_IMPL(virStoragePoolFormatFileSystem,
|
||||||
VIR_STORAGE_POOL_FS_LAST,
|
VIR_STORAGE_POOL_FS_LAST,
|
||||||
@ -274,6 +275,16 @@ static virStoragePoolTypeInfo poolTypeInfo[] = {
|
|||||||
.defaultFormat = VIR_STORAGE_FILE_RAW,
|
.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 */
|
/* Only one mpath pool is valid per host */
|
||||||
matchpool = pool;
|
matchpool = pool;
|
||||||
break;
|
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_RBD:
|
||||||
case VIR_STORAGE_POOL_LAST:
|
case VIR_STORAGE_POOL_LAST:
|
||||||
break;
|
break;
|
||||||
|
@ -95,6 +95,7 @@ typedef enum {
|
|||||||
VIR_STORAGE_POOL_SHEEPDOG, /* Sheepdog device */
|
VIR_STORAGE_POOL_SHEEPDOG, /* Sheepdog device */
|
||||||
VIR_STORAGE_POOL_GLUSTER, /* Gluster device */
|
VIR_STORAGE_POOL_GLUSTER, /* Gluster device */
|
||||||
VIR_STORAGE_POOL_ZFS, /* ZFS */
|
VIR_STORAGE_POOL_ZFS, /* ZFS */
|
||||||
|
VIR_STORAGE_POOL_VSTORAGE, /* Virtuozzo Storage */
|
||||||
|
|
||||||
VIR_STORAGE_POOL_LAST,
|
VIR_STORAGE_POOL_LAST,
|
||||||
} virStoragePoolType;
|
} virStoragePoolType;
|
||||||
|
@ -64,6 +64,9 @@
|
|||||||
#if WITH_STORAGE_ZFS
|
#if WITH_STORAGE_ZFS
|
||||||
# include "storage_backend_zfs.h"
|
# include "storage_backend_zfs.h"
|
||||||
#endif
|
#endif
|
||||||
|
#if WITH_STORAGE_VSTORAGE
|
||||||
|
# include "storage_backend_vstorage.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#define VIR_FROM_THIS VIR_FROM_STORAGE
|
#define VIR_FROM_THIS VIR_FROM_STORAGE
|
||||||
|
|
||||||
@ -103,6 +106,9 @@ static virStorageBackendPtr backends[] = {
|
|||||||
#endif
|
#endif
|
||||||
#if WITH_STORAGE_ZFS
|
#if WITH_STORAGE_ZFS
|
||||||
&virStorageBackendZFS,
|
&virStorageBackendZFS,
|
||||||
|
#endif
|
||||||
|
#if WITH_STORAGE_VSTORAGE
|
||||||
|
&virStorageBackendVstorage,
|
||||||
#endif
|
#endif
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
16
src/storage/storage_backend_vstorage.c
Normal file
16
src/storage/storage_backend_vstorage.c
Normal file
@ -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,
|
||||||
|
};
|
28
src/storage/storage_backend_vstorage.h
Normal file
28
src/storage/storage_backend_vstorage.h
Normal file
@ -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__ */
|
@ -1619,6 +1619,7 @@ storageVolLookupByPath(virConnectPtr conn,
|
|||||||
case VIR_STORAGE_POOL_ISCSI:
|
case VIR_STORAGE_POOL_ISCSI:
|
||||||
case VIR_STORAGE_POOL_SCSI:
|
case VIR_STORAGE_POOL_SCSI:
|
||||||
case VIR_STORAGE_POOL_MPATH:
|
case VIR_STORAGE_POOL_MPATH:
|
||||||
|
case VIR_STORAGE_POOL_VSTORAGE:
|
||||||
stable_path = virStorageBackendStablePath(pool,
|
stable_path = virStorageBackendStablePath(pool,
|
||||||
cleanpath,
|
cleanpath,
|
||||||
false);
|
false);
|
||||||
@ -3502,6 +3503,7 @@ virStorageTranslateDiskSourcePool(virConnectPtr conn,
|
|||||||
case VIR_STORAGE_POOL_DISK:
|
case VIR_STORAGE_POOL_DISK:
|
||||||
case VIR_STORAGE_POOL_SCSI:
|
case VIR_STORAGE_POOL_SCSI:
|
||||||
case VIR_STORAGE_POOL_ZFS:
|
case VIR_STORAGE_POOL_ZFS:
|
||||||
|
case VIR_STORAGE_POOL_VSTORAGE:
|
||||||
if (!(def->src->path = virStorageVolGetPath(vol)))
|
if (!(def->src->path = virStorageVolGetPath(vol)))
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
|
@ -1185,6 +1185,9 @@ cmdPoolList(vshControl *ctl, const vshCmd *cmd ATTRIBUTE_UNUSED)
|
|||||||
case VIR_STORAGE_POOL_ZFS:
|
case VIR_STORAGE_POOL_ZFS:
|
||||||
flags |= VIR_CONNECT_LIST_STORAGE_POOLS_ZFS;
|
flags |= VIR_CONNECT_LIST_STORAGE_POOLS_ZFS;
|
||||||
break;
|
break;
|
||||||
|
case VIR_STORAGE_POOL_VSTORAGE:
|
||||||
|
flags |= VIR_CONNECT_LIST_STORAGE_POOLS_VSTORAGE;
|
||||||
|
break;
|
||||||
case VIR_STORAGE_POOL_LAST:
|
case VIR_STORAGE_POOL_LAST:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -647,6 +647,9 @@ virshShowVersion(vshControl *ctl ATTRIBUTE_UNUSED)
|
|||||||
#endif
|
#endif
|
||||||
#ifdef WITH_STORAGE_ZFS
|
#ifdef WITH_STORAGE_ZFS
|
||||||
vshPrint(ctl, " ZFS");
|
vshPrint(ctl, " ZFS");
|
||||||
|
#endif
|
||||||
|
#ifdef WITH_STORAGE_VSTORAGE
|
||||||
|
vshPrint(ctl, "Virtuozzo Storage");
|
||||||
#endif
|
#endif
|
||||||
vshPrint(ctl, "\n");
|
vshPrint(ctl, "\n");
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user