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
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
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
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([])
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,
--- /dev/null
+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])
+])
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
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
$(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) \
"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,
.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,
+ },
+ },
};
/* 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;
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;
#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
#endif
#if WITH_STORAGE_ZFS
&virStorageBackendZFS,
+#endif
+#if WITH_STORAGE_VSTORAGE
+ &virStorageBackendVstorage,
#endif
NULL
};
--- /dev/null
+#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,
+};
--- /dev/null
+/*
+ * 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__ */
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);
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;
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;
}
#endif
#ifdef WITH_STORAGE_ZFS
vshPrint(ctl, " ZFS");
+#endif
+#ifdef WITH_STORAGE_VSTORAGE
+ vshPrint(ctl, "Virtuozzo Storage");
#endif
vshPrint(ctl, "\n");