mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-03 03:25:20 +00:00
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_GLUSTER
|
||||
LIBVIRT_STORAGE_ARG_ZFS
|
||||
LIBVIRT_STORAGE_ARG_VSTORAGE
|
||||
|
||||
if test "$with_libvirtd" = "no"; then
|
||||
with_storage_dir=no
|
||||
@ -583,6 +584,7 @@ if test "$with_libvirtd" = "no"; then
|
||||
with_storage_sheepdog=no
|
||||
with_storage_gluster=no
|
||||
with_storage_zfs=no
|
||||
with_storage_vstorage=no
|
||||
fi
|
||||
|
||||
dnl storage-fs does not work on MacOS X
|
||||
@ -602,6 +604,7 @@ LIBVIRT_STORAGE_CHECK_RBD
|
||||
LIBVIRT_STORAGE_CHECK_SHEEPDOG
|
||||
LIBVIRT_STORAGE_CHECK_GLUSTER
|
||||
LIBVIRT_STORAGE_CHECK_ZFS
|
||||
LIBVIRT_STORAGE_CHECK_VSTORAGE
|
||||
|
||||
with_storage=no
|
||||
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_GLUSTER
|
||||
LIBVIRT_STORAGE_RESULT_ZFS
|
||||
LIBVIRT_STORAGE_RESULT_VSTORAGE
|
||||
AC_MSG_NOTICE([])
|
||||
AC_MSG_NOTICE([Security Drivers])
|
||||
AC_MSG_NOTICE([])
|
||||
|
@ -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,
|
||||
|
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/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
|
||||
|
||||
@ -1714,6 +1718,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
|
||||
@ -1925,6 +1933,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) \
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -64,6 +64,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
|
||||
|
||||
@ -103,6 +106,9 @@ static virStorageBackendPtr backends[] = {
|
||||
#endif
|
||||
#if WITH_STORAGE_ZFS
|
||||
&virStorageBackendZFS,
|
||||
#endif
|
||||
#if WITH_STORAGE_VSTORAGE
|
||||
&virStorageBackendVstorage,
|
||||
#endif
|
||||
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_SCSI:
|
||||
case VIR_STORAGE_POOL_MPATH:
|
||||
case VIR_STORAGE_POOL_VSTORAGE:
|
||||
stable_path = virStorageBackendStablePath(pool,
|
||||
cleanpath,
|
||||
false);
|
||||
@ -3502,6 +3503,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;
|
||||
|
||||
|
@ -1185,6 +1185,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;
|
||||
}
|
||||
|
@ -647,6 +647,9 @@ virshShowVersion(vshControl *ctl ATTRIBUTE_UNUSED)
|
||||
#endif
|
||||
#ifdef WITH_STORAGE_ZFS
|
||||
vshPrint(ctl, " ZFS");
|
||||
#endif
|
||||
#ifdef WITH_STORAGE_VSTORAGE
|
||||
vshPrint(ctl, "Virtuozzo Storage");
|
||||
#endif
|
||||
vshPrint(ctl, "\n");
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user