You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
189 lines
7.1 KiB
Diff
189 lines
7.1 KiB
Diff
Index: pve-qemu-kvm-6.1.0/qapi/block-core.json
|
|
===================================================================
|
|
--- pve-qemu-kvm-6.1.0.orig/qapi/block-core.json
|
|
+++ pve-qemu-kvm-6.1.0/qapi/block-core.json
|
|
@@ -3084,7 +3084,7 @@
|
|
'preallocate', 'qcow', 'qcow2', 'qed', 'quorum', 'raw', 'rbd',
|
|
{ 'name': 'replication', 'if': 'defined(CONFIG_REPLICATION)' },
|
|
'pbs',
|
|
- 'ssh', 'throttle', 'vdi', 'vhdx', 'vmdk', 'vpc', 'vvfat' ] }
|
|
+ 'ssh', 'throttle', 'vdi', 'vhdx', 'vitastor', 'vmdk', 'vpc', 'vvfat' ] }
|
|
|
|
##
|
|
# @BlockdevOptionsFile:
|
|
@@ -4020,6 +4020,28 @@
|
|
'*server': ['InetSocketAddressBase'] } }
|
|
|
|
##
|
|
+# @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.
|
|
@@ -4392,6 +4414,7 @@
|
|
'throttle': 'BlockdevOptionsThrottle',
|
|
'vdi': 'BlockdevOptionsGenericFormat',
|
|
'vhdx': 'BlockdevOptionsGenericFormat',
|
|
+ 'vitastor': 'BlockdevOptionsVitastor',
|
|
'vmdk': 'BlockdevOptionsGenericCOWFormat',
|
|
'vpc': 'BlockdevOptionsGenericFormat',
|
|
'vvfat': 'BlockdevOptionsVVFAT'
|
|
@@ -4782,6 +4805,17 @@
|
|
'*encrypt' : 'RbdEncryptionCreateOptions' } }
|
|
|
|
##
|
|
+# @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
|
|
@@ -4977,6 +5011,7 @@
|
|
'ssh': 'BlockdevCreateOptionsSsh',
|
|
'vdi': 'BlockdevCreateOptionsVdi',
|
|
'vhdx': 'BlockdevCreateOptionsVhdx',
|
|
+ 'vitastor': 'BlockdevCreateOptionsVitastor',
|
|
'vmdk': 'BlockdevCreateOptionsVmdk',
|
|
'vpc': 'BlockdevCreateOptionsVpc'
|
|
} }
|
|
Index: pve-qemu-kvm-6.1.0/block/meson.build
|
|
===================================================================
|
|
--- pve-qemu-kvm-6.1.0.orig/block/meson.build
|
|
+++ pve-qemu-kvm-6.1.0/block/meson.build
|
|
@@ -91,6 +91,7 @@ foreach m : [
|
|
[libnfs, 'nfs', files('nfs.c')],
|
|
[libssh, 'ssh', files('ssh.c')],
|
|
[rbd, 'rbd', files('rbd.c')],
|
|
+ [vitastor, 'vitastor', files('vitastor.c')],
|
|
]
|
|
if m[0].found()
|
|
module_ss = ss.source_set()
|
|
Index: pve-qemu-kvm-6.1.0/configure
|
|
===================================================================
|
|
--- pve-qemu-kvm-6.1.0.orig/configure
|
|
+++ pve-qemu-kvm-6.1.0/configure
|
|
@@ -375,6 +375,7 @@ trace_file="trace"
|
|
spice="$default_feature"
|
|
spice_protocol="auto"
|
|
rbd="auto"
|
|
+vitastor="auto"
|
|
smartcard="auto"
|
|
u2f="auto"
|
|
libusb="auto"
|
|
@@ -1293,6 +1294,10 @@ for opt do
|
|
;;
|
|
--enable-rbd) rbd="enabled"
|
|
;;
|
|
+ --disable-vitastor) vitastor="disabled"
|
|
+ ;;
|
|
+ --enable-vitastor) vitastor="enabled"
|
|
+ ;;
|
|
--disable-xfsctl) xfs="no"
|
|
;;
|
|
--enable-xfsctl) xfs="yes"
|
|
@@ -1921,6 +1926,7 @@ disabled with --disable-FEATURE, default
|
|
spice spice
|
|
spice-protocol spice-protocol
|
|
rbd rados block device (rbd)
|
|
+ vitastor vitastor block device
|
|
libiscsi iscsi support
|
|
libnfs nfs support
|
|
smartcard smartcard support (libcacard)
|
|
@@ -5211,7 +5217,7 @@ if test "$skip_meson" = no; then
|
|
-Dcapstone=$capstone -Dslirp=$slirp -Dfdt=$fdt -Dbrlapi=$brlapi \
|
|
-Dcurl=$curl -Dglusterfs=$glusterfs -Dbzip2=$bzip2 -Dlibiscsi=$libiscsi \
|
|
-Dlibnfs=$libnfs -Diconv=$iconv -Dcurses=$curses -Dlibudev=$libudev\
|
|
- -Drbd=$rbd -Dlzo=$lzo -Dsnappy=$snappy -Dlzfse=$lzfse -Dlibxml2=$libxml2 \
|
|
+ -Drbd=$rbd -Dvitastor=$vitastor -Dlzo=$lzo -Dsnappy=$snappy -Dlzfse=$lzfse -Dlibxml2=$libxml2 \
|
|
-Dlibdaxctl=$libdaxctl -Dlibpmem=$libpmem -Dlinux_io_uring=$linux_io_uring \
|
|
-Dgnutls=$gnutls -Dnettle=$nettle -Dgcrypt=$gcrypt -Dauth_pam=$auth_pam \
|
|
-Dzstd=$zstd -Dseccomp=$seccomp -Dvirtfs=$virtfs -Dcap_ng=$cap_ng \
|
|
Index: pve-qemu-kvm-6.1.0/meson.build
|
|
===================================================================
|
|
--- pve-qemu-kvm-6.1.0.orig/meson.build
|
|
+++ pve-qemu-kvm-6.1.0/meson.build
|
|
@@ -729,6 +729,26 @@ if not get_option('rbd').auto() or have_
|
|
endif
|
|
endif
|
|
|
|
+vitastor = not_found
|
|
+if not get_option('vitastor').auto() or have_block
|
|
+ libvitastor_client = cc.find_library('vitastor_client', has_headers: ['vitastor_c.h'],
|
|
+ required: get_option('vitastor'), kwargs: static_kwargs)
|
|
+ if libvitastor_client.found()
|
|
+ if cc.links('''
|
|
+ #include <vitastor_c.h>
|
|
+ int main(void) {
|
|
+ vitastor_c_create_qemu(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
|
+ return 0;
|
|
+ }''', dependencies: libvitastor_client)
|
|
+ vitastor = declare_dependency(dependencies: libvitastor_client)
|
|
+ elif get_option('vitastor').enabled()
|
|
+ error('could not link libvitastor_client')
|
|
+ else
|
|
+ warning('could not link libvitastor_client, disabling')
|
|
+ endif
|
|
+ endif
|
|
+endif
|
|
+
|
|
glusterfs = not_found
|
|
glusterfs_ftruncate_has_stat = false
|
|
glusterfs_iocb_has_stat = false
|
|
@@ -1268,6 +1288,7 @@ config_host_data.set('CONFIG_LIBNFS', li
|
|
config_host_data.set('CONFIG_LINUX_IO_URING', linux_io_uring.found())
|
|
config_host_data.set('CONFIG_LIBPMEM', libpmem.found())
|
|
config_host_data.set('CONFIG_RBD', rbd.found())
|
|
+config_host_data.set('CONFIG_VITASTOR', vitastor.found())
|
|
config_host_data.set('CONFIG_SDL', sdl.found())
|
|
config_host_data.set('CONFIG_SDL_IMAGE', sdl_image.found())
|
|
config_host_data.set('CONFIG_SECCOMP', seccomp.found())
|
|
@@ -3087,6 +3108,7 @@ summary_info += {'bpf support': libbpf.f
|
|
# TODO: add back protocol and server version
|
|
summary_info += {'spice support': config_host.has_key('CONFIG_SPICE')}
|
|
summary_info += {'rbd support': rbd.found()}
|
|
+summary_info += {'vitastor support': vitastor.found()}
|
|
summary_info += {'xfsctl support': config_host.has_key('CONFIG_XFS')}
|
|
summary_info += {'smartcard support': cacard.found()}
|
|
summary_info += {'U2F support': u2f.found()}
|
|
Index: pve-qemu-kvm-6.1.0/meson_options.txt
|
|
===================================================================
|
|
--- pve-qemu-kvm-6.1.0.orig/meson_options.txt
|
|
+++ pve-qemu-kvm-6.1.0/meson_options.txt
|
|
@@ -102,6 +102,8 @@ option('lzo', type : 'feature', value :
|
|
description: 'lzo compression support')
|
|
option('rbd', type : 'feature', value : 'auto',
|
|
description: 'Ceph block device driver')
|
|
+option('vitastor', type : 'feature', value : 'auto',
|
|
+ description: 'Vitastor block device driver')
|
|
option('gtk', type : 'feature', value : 'auto',
|
|
description: 'GTK+ user interface')
|
|
option('sdl', type : 'feature', value : 'auto',
|