182 lines
6.0 KiB
Diff
182 lines
6.0 KiB
Diff
|
Index: pve-qemu-kvm-5.2.0/qapi/block-core.json
|
||
|
===================================================================
|
||
|
--- pve-qemu-kvm-5.2.0.orig/qapi/block-core.json
|
||
|
+++ pve-qemu-kvm-5.2.0/qapi/block-core.json
|
||
|
@@ -3076,7 +3076,7 @@
|
||
|
'luks', 'nbd', 'nfs', 'null-aio', 'null-co', 'nvme', 'parallels',
|
||
|
'qcow', 'qcow2', 'qed', 'quorum', 'raw', 'rbd',
|
||
|
{ 'name': 'replication', 'if': 'defined(CONFIG_REPLICATION)' },
|
||
|
- 'sheepdog', 'pbs',
|
||
|
+ 'sheepdog', 'pbs', 'vitastor',
|
||
|
'ssh', 'throttle', 'vdi', 'vhdx', 'vmdk', 'vpc', 'vvfat' ] }
|
||
|
|
||
|
##
|
||
|
@@ -3924,6 +3924,28 @@
|
||
|
'*tag': 'str' } }
|
||
|
|
||
|
##
|
||
|
+# @BlockdevOptionsVitastor:
|
||
|
+#
|
||
|
+# Driver specific block device options for vitastor
|
||
|
+#
|
||
|
+# @image: Image name
|
||
|
+# @inode: Inode number
|
||
|
+# @pool: Pool ID
|
||
|
+# @size: Desired image size in bytes
|
||
|
+# @config-path: Path to Vitastor configuration
|
||
|
+# @etcd-host: etcd connection address(es)
|
||
|
+# @etcd-prefix: etcd key/value prefix
|
||
|
+##
|
||
|
+{ 'struct': 'BlockdevOptionsVitastor',
|
||
|
+ 'data': { '*inode': 'uint64',
|
||
|
+ '*pool': 'uint64',
|
||
|
+ '*size': 'uint64',
|
||
|
+ '*image': 'str',
|
||
|
+ '*config-path': 'str',
|
||
|
+ '*etcd-host': 'str',
|
||
|
+ '*etcd-prefix': 'str' } }
|
||
|
+
|
||
|
+##
|
||
|
# @ReplicationMode:
|
||
|
#
|
||
|
# An enumeration of replication modes.
|
||
|
@@ -4272,6 +4294,7 @@
|
||
|
'replication': { 'type': 'BlockdevOptionsReplication',
|
||
|
'if': 'defined(CONFIG_REPLICATION)' },
|
||
|
'sheepdog': 'BlockdevOptionsSheepdog',
|
||
|
+ 'vitastor': 'BlockdevOptionsVitastor',
|
||
|
'ssh': 'BlockdevOptionsSsh',
|
||
|
'throttle': 'BlockdevOptionsThrottle',
|
||
|
'vdi': 'BlockdevOptionsGenericFormat',
|
||
|
@@ -4662,6 +4685,17 @@
|
||
|
'*cluster-size' : 'size' } }
|
||
|
|
||
|
##
|
||
|
+# @BlockdevCreateOptionsVitastor:
|
||
|
+#
|
||
|
+# Driver specific image creation options for Vitastor.
|
||
|
+#
|
||
|
+# @size: Size of the virtual disk in bytes
|
||
|
+##
|
||
|
+{ 'struct': 'BlockdevCreateOptionsVitastor',
|
||
|
+ 'data': { 'location': 'BlockdevOptionsVitastor',
|
||
|
+ 'size': 'size' } }
|
||
|
+
|
||
|
+##
|
||
|
# @BlockdevVmdkSubformat:
|
||
|
#
|
||
|
# Subformat options for VMDK images
|
||
|
@@ -4923,6 +4957,7 @@
|
||
|
'qed': 'BlockdevCreateOptionsQed',
|
||
|
'rbd': 'BlockdevCreateOptionsRbd',
|
||
|
'sheepdog': 'BlockdevCreateOptionsSheepdog',
|
||
|
+ 'vitastor': 'BlockdevCreateOptionsVitastor',
|
||
|
'ssh': 'BlockdevCreateOptionsSsh',
|
||
|
'vdi': 'BlockdevCreateOptionsVdi',
|
||
|
'vhdx': 'BlockdevCreateOptionsVhdx',
|
||
|
Index: pve-qemu-kvm-5.2.0/block/meson.build
|
||
|
===================================================================
|
||
|
--- pve-qemu-kvm-5.2.0.orig/block/meson.build
|
||
|
+++ pve-qemu-kvm-5.2.0/block/meson.build
|
||
|
@@ -89,6 +89,7 @@ foreach m : [
|
||
|
['CONFIG_LIBNFS', 'nfs', libnfs, 'nfs.c'],
|
||
|
['CONFIG_LIBSSH', 'ssh', libssh, 'ssh.c'],
|
||
|
['CONFIG_RBD', 'rbd', rbd, 'rbd.c'],
|
||
|
+ ['CONFIG_VITASTOR', 'vitastor', vitastor, 'vitastor.c'],
|
||
|
]
|
||
|
if config_host.has_key(m[0])
|
||
|
if enable_modules
|
||
|
Index: pve-qemu-kvm-5.2.0/configure
|
||
|
===================================================================
|
||
|
--- pve-qemu-kvm-5.2.0.orig/configure
|
||
|
+++ pve-qemu-kvm-5.2.0/configure
|
||
|
@@ -372,6 +372,7 @@ trace_backends="log"
|
||
|
trace_file="trace"
|
||
|
spice=""
|
||
|
rbd=""
|
||
|
+vitastor=""
|
||
|
smartcard=""
|
||
|
u2f="auto"
|
||
|
libusb=""
|
||
|
@@ -1264,6 +1265,10 @@ for opt do
|
||
|
;;
|
||
|
--enable-rbd) rbd="yes"
|
||
|
;;
|
||
|
+ --disable-vitastor) vitastor="no"
|
||
|
+ ;;
|
||
|
+ --enable-vitastor) vitastor="yes"
|
||
|
+ ;;
|
||
|
--disable-xfsctl) xfs="no"
|
||
|
;;
|
||
|
--enable-xfsctl) xfs="yes"
|
||
|
@@ -1807,6 +1812,7 @@ disabled with --disable-FEATURE, default
|
||
|
vhost-vdpa vhost-vdpa kernel backend support
|
||
|
spice spice
|
||
|
rbd rados block device (rbd)
|
||
|
+ vitastor vitastor block device
|
||
|
libiscsi iscsi support
|
||
|
libnfs nfs support
|
||
|
smartcard smartcard support (libcacard)
|
||
|
@@ -3700,6 +3706,27 @@ EOF
|
||
|
fi
|
||
|
|
||
|
##########################################
|
||
|
+# vitastor probe
|
||
|
+if test "$vitastor" != "no" ; then
|
||
|
+ cat > $TMPC <<EOF
|
||
|
+#include <vitastor_c.h>
|
||
|
+int main(void) {
|
||
|
+ vitastor_c_create_qemu(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||
|
+ return 0;
|
||
|
+}
|
||
|
+EOF
|
||
|
+ vitastor_libs="-lvitastor_client"
|
||
|
+ if compile_prog "" "$vitastor_libs" ; then
|
||
|
+ vitastor=yes
|
||
|
+ else
|
||
|
+ if test "$vitastor" = "yes" ; then
|
||
|
+ feature_not_found "vitastor block device" "Install vitastor-client-dev"
|
||
|
+ fi
|
||
|
+ vitastor=no
|
||
|
+ fi
|
||
|
+fi
|
||
|
+
|
||
|
+##########################################
|
||
|
# libssh probe
|
||
|
if test "$libssh" != "no" ; then
|
||
|
if $pkg_config --exists libssh; then
|
||
|
@@ -6437,6 +6464,10 @@ if test "$rbd" = "yes" ; then
|
||
|
echo "CONFIG_RBD=y" >> $config_host_mak
|
||
|
echo "RBD_LIBS=$rbd_libs" >> $config_host_mak
|
||
|
fi
|
||
|
+if test "$vitastor" = "yes" ; then
|
||
|
+ echo "CONFIG_VITASTOR=y" >> $config_host_mak
|
||
|
+ echo "VITASTOR_LIBS=$vitastor_libs" >> $config_host_mak
|
||
|
+fi
|
||
|
|
||
|
echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
|
||
|
if test "$coroutine_pool" = "yes" ; then
|
||
|
Index: pve-qemu-kvm-5.2.0/meson.build
|
||
|
===================================================================
|
||
|
--- pve-qemu-kvm-5.2.0.orig/meson.build
|
||
|
+++ pve-qemu-kvm-5.2.0/meson.build
|
||
|
@@ -596,6 +596,10 @@ rbd = not_found
|
||
|
if 'CONFIG_RBD' in config_host
|
||
|
rbd = declare_dependency(link_args: config_host['RBD_LIBS'].split())
|
||
|
endif
|
||
|
+vitastor = not_found
|
||
|
+if 'CONFIG_VITASTOR' in config_host
|
||
|
+ vitastor = declare_dependency(link_args: config_host['VITASTOR_LIBS'].split())
|
||
|
+endif
|
||
|
glusterfs = not_found
|
||
|
if 'CONFIG_GLUSTERFS' in config_host
|
||
|
glusterfs = declare_dependency(compile_args: config_host['GLUSTERFS_CFLAGS'].split(),
|
||
|
@@ -2151,6 +2155,7 @@ endif
|
||
|
# TODO: add back protocol and server version
|
||
|
summary_info += {'spice support': config_host.has_key('CONFIG_SPICE')}
|
||
|
summary_info += {'rbd support': config_host.has_key('CONFIG_RBD')}
|
||
|
+summary_info += {'vitastor support': config_host.has_key('CONFIG_VITASTOR')}
|
||
|
summary_info += {'xfsctl support': config_host.has_key('CONFIG_XFS')}
|
||
|
summary_info += {'smartcard support': config_host.has_key('CONFIG_SMARTCARD')}
|
||
|
summary_info += {'U2F support': u2f.found()}
|