Ceph Nautilus supports separate image namespaces within a pool for
tenant isolation and QEMU added it as a rbd blockdev options from 5.0.0.
This optional attribute is used to access a image with namespace.
Add unit tests for this attribute.
https://bugzilla.redhat.com/show_bug.cgi?id=1816909
Signed-off-by: Han Han <hhan@redhat.com>
---
src/qemu/qemu_block.c | 1 +
src/qemu/qemu_command.c | 7 +++-
...k-network-rbd-namespace.x86_64-latest.args | 41 +++++++++++++++++++
.../disk-network-rbd-namespace.xml | 33 +++++++++++++++
tests/qemuxml2argvtest.c | 1 +
...sk-network-rbd-namespace.x86_64-latest.xml | 41 +++++++++++++++++++
tests/qemuxml2xmltest.c | 1 +
7 files changed, 124 insertions(+), 1 deletion(-)
create mode 100644 tests/qemuxml2argvdata/disk-network-rbd-namespace.x86_64-latest.args
create mode 100644 tests/qemuxml2argvdata/disk-network-rbd-namespace.xml
create mode 100644 tests/qemuxml2xmloutdata/disk-network-rbd-namespace.x86_64-latest.xml
diff --git a/src/qemu/qemu_block.c b/src/qemu/qemu_block.c
index 26c1b42428..beb5639707 100644
--- a/src/qemu/qemu_block.c
+++ b/src/qemu/qemu_block.c
@@ -872,6 +872,7 @@ qemuBlockStorageSourceGetRBDProps(virStorageSourcePtr src,
"s:pool", src->volume,
"s:image", src->path,
"S:snapshot", src->snapshot,
+ "S:namespace", src->namespace,
"S:conf", src->configFile,
"A:server", &servers,
"S:user", username,
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index 01812cd39b..b6288d1308 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -980,7 +980,12 @@ qemuBuildNetworkDriveStr(virStorageSourcePtr src,
return NULL;
}
- virBufferStrcat(&buf, "rbd:", src->volume, "/", src->path, NULL);
+ virBufferStrcat(&buf, "rbd:", src->volume, "/", NULL);
+ /* The filename of image with namespace: rbd:POOL/NAMESPACE/IMAGE... */
+ if (src->namespace)
+ virBufferStrcat(&buf, src->namespace, "/", NULL);
+
+ virBufferStrcat(&buf, src->path, NULL);
if (src->snapshot)
virBufferEscape(&buf, '\\', ":", "@%s", src->snapshot);
diff --git a/tests/qemuxml2argvdata/disk-network-rbd-namespace.x86_64-latest.args b/tests/qemuxml2argvdata/disk-network-rbd-namespace.x86_64-latest.args
new file mode 100644
index 0000000000..a744805d74
--- /dev/null
+++ b/tests/qemuxml2argvdata/disk-network-rbd-namespace.x86_64-latest.args
@@ -0,0 +1,41 @@
+LC_ALL=C \
+PATH=/bin \
+HOME=/tmp/lib/domain--1-QEMUGuest1 \
+USER=test \
+LOGNAME=test \
+XDG_DATA_HOME=/tmp/lib/domain--1-QEMUGuest1/.local/share \
+XDG_CACHE_HOME=/tmp/lib/domain--1-QEMUGuest1/.cache \
+XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \
+QEMU_AUDIO_DRV=none \
+/usr/bin/qemu-system-x86_64 \
+-name guest=QEMUGuest1,debug-threads=on \
+-S \
+-object secret,id=masterKey0,format=raw,\
+file=/tmp/lib/domain--1-QEMUGuest1/master-key.aes \
+-machine pc,accel=tcg,usb=off,dump-guest-core=off \
+-cpu qemu64 \
+-m 214 \
+-overcommit mem-lock=off \
+-smp 1,sockets=1,cores=1,threads=1 \
+-uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \
+-display none \
+-no-user-config \
+-nodefaults \
+-chardev socket,id=charmonitor,fd=1729,server,nowait \
+-mon chardev=charmonitor,id=monitor,mode=control \
+-rtc base=utc \
+-no-shutdown \
+-no-acpi \
+-boot strict=on \
+-device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 \
+-blockdev '{"driver":"rbd","pool":"pool","image":"image","namespace":"ns",\
+"server":[{"host":"mon1.example.org","port":"6321"},{"host":"mon2.example.org",\
+"port":"6322"},{"host":"mon3.example.org","port":"6322"}],\
+"node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \
+-blockdev '{"node-name":"libvirt-1-format","read-only":false,"driver":"raw",\
+"file":"libvirt-1-storage"}' \
+-device virtio-blk-pci,bus=pci.0,addr=0x2,drive=libvirt-1-format,\
+id=virtio-disk0,bootindex=1 \
+-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,\
+resourcecontrol=deny \
+-msg timestamp=on
diff --git a/tests/qemuxml2argvdata/disk-network-rbd-namespace.xml b/tests/qemuxml2argvdata/disk-network-rbd-namespace.xml
new file mode 100644
index 0000000000..8b526c4a20
--- /dev/null
+++ b/tests/qemuxml2argvdata/disk-network-rbd-namespace.xml
@@ -0,0 +1,33 @@
+<domain type='qemu'>
+ <name>QEMUGuest1</name>
+ <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
+ <memory unit='KiB'>219136</memory>
+ <currentMemory unit='KiB'>219136</currentMemory>
+ <vcpu placement='static'>1</vcpu>
+ <os>
+ <type arch='x86_64' machine='pc'>hvm</type>
+ <boot dev='hd'/>
+ </os>
+ <clock offset='utc'/>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>destroy</on_crash>
+ <devices>
+ <emulator>/usr/bin/qemu-system-x86_64</emulator>
+ <disk type='network' device='disk'>
+ <driver name='qemu' type='raw'/>
+ <source protocol='rbd' name='pool/image' namespace='ns'>
+ <host name='mon1.example.org' port='6321'/>
+ <host name='mon2.example.org' port='6322'/>
+ <host name='mon3.example.org' port='6322'/>
+ </source>
+ <target dev='vda' bus='virtio'/>
+ </disk>
+ <controller type='usb' index='0'/>
+ <controller type='ide' index='0'/>
+ <controller type='pci' index='0' model='pci-root'/>
+ <input type='mouse' bus='ps2'/>
+ <input type='keyboard' bus='ps2'/>
+ <memballoon model='none'/>
+ </devices>
+</domain>
diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c
index 01839cb88c..c6c18c4335 100644
--- a/tests/qemuxml2argvtest.c
+++ b/tests/qemuxml2argvtest.c
@@ -1174,6 +1174,7 @@ mymain(void)
DO_TEST_CAPS_VER("disk-network-rbd", "2.5.0");
DO_TEST_CAPS_VER("disk-network-rbd", "2.12.0");
DO_TEST_CAPS_LATEST("disk-network-rbd");
+ DO_TEST_CAPS_LATEST("disk-network-rbd-namespace");
DO_TEST_FAILURE("disk-network-rbd-no-colon", NONE);
DO_TEST("disk-network-sheepdog", NONE);
DO_TEST_CAPS_VER("disk-network-sheepdog", "2.12.0");
diff --git a/tests/qemuxml2xmloutdata/disk-network-rbd-namespace.x86_64-latest.xml b/tests/qemuxml2xmloutdata/disk-network-rbd-namespace.x86_64-latest.xml
new file mode 100644
index 0000000000..2166696ca8
--- /dev/null
+++ b/tests/qemuxml2xmloutdata/disk-network-rbd-namespace.x86_64-latest.xml
@@ -0,0 +1,41 @@
+<domain type='qemu'>
+ <name>QEMUGuest1</name>
+ <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
+ <memory unit='KiB'>219136</memory>
+ <currentMemory unit='KiB'>219136</currentMemory>
+ <vcpu placement='static'>1</vcpu>
+ <os>
+ <type arch='x86_64' machine='pc'>hvm</type>
+ <boot dev='hd'/>
+ </os>
+ <cpu mode='custom' match='exact' check='none'>
+ <model fallback='forbid'>qemu64</model>
+ </cpu>
+ <clock offset='utc'/>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>destroy</on_crash>
+ <devices>
+ <emulator>/usr/bin/qemu-system-x86_64</emulator>
+ <disk type='network' device='disk'>
+ <driver name='qemu' type='raw'/>
+ <source protocol='rbd' name='pool/image' namespace='ns'>
+ <host name='mon1.example.org' port='6321'/>
+ <host name='mon2.example.org' port='6322'/>
+ <host name='mon3.example.org' port='6322'/>
+ </source>
+ <target dev='vda' bus='virtio'/>
+ <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
+ </disk>
+ <controller type='usb' index='0' model='piix3-uhci'>
+ <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
+ </controller>
+ <controller type='ide' index='0'>
+ <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
+ </controller>
+ <controller type='pci' index='0' model='pci-root'/>
+ <input type='mouse' bus='ps2'/>
+ <input type='keyboard' bus='ps2'/>
+ <memballoon model='none'/>
+ </devices>
+</domain>
diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c
index a07e2b7553..653e5caa86 100644
--- a/tests/qemuxml2xmltest.c
+++ b/tests/qemuxml2xmltest.c
@@ -344,6 +344,7 @@ mymain(void)
DO_TEST("disk-network-iscsi", QEMU_CAPS_VIRTIO_SCSI);
DO_TEST("disk-network-gluster", NONE);
DO_TEST("disk-network-rbd", NONE);
+ DO_TEST_CAPS_LATEST("disk-network-rbd-namespace");
DO_TEST("disk-network-source-auth", NONE);
DO_TEST("disk-network-sheepdog", NONE);
DO_TEST("disk-network-vxhs", NONE);
--
2.27.0
On Thu, Aug 06, 2020 at 19:41:44 +0800, Han Han wrote: > Ceph Nautilus supports separate image namespaces within a pool for > tenant isolation and QEMU added it as a rbd blockdev options from 5.0.0. > This optional attribute is used to access a image with namespace. > > Add unit tests for this attribute. > > https://bugzilla.redhat.com/show_bug.cgi?id=1816909 > > Signed-off-by: Han Han <hhan@redhat.com> > --- > src/qemu/qemu_block.c | 1 + > src/qemu/qemu_command.c | 7 +++- > ...k-network-rbd-namespace.x86_64-latest.args | 41 +++++++++++++++++++ > .../disk-network-rbd-namespace.xml | 33 +++++++++++++++ > tests/qemuxml2argvtest.c | 1 + > ...sk-network-rbd-namespace.x86_64-latest.xml | 41 +++++++++++++++++++ > tests/qemuxml2xmltest.c | 1 + > 7 files changed, 124 insertions(+), 1 deletion(-) > create mode 100644 tests/qemuxml2argvdata/disk-network-rbd-namespace.x86_64-latest.args > create mode 100644 tests/qemuxml2argvdata/disk-network-rbd-namespace.xml > create mode 100644 tests/qemuxml2xmloutdata/disk-network-rbd-namespace.x86_64-latest.xml [...] > diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c > index 01812cd39b..b6288d1308 100644 > --- a/src/qemu/qemu_command.c > +++ b/src/qemu/qemu_command.c > @@ -980,7 +980,12 @@ qemuBuildNetworkDriveStr(virStorageSourcePtr src, > return NULL; > } > > - virBufferStrcat(&buf, "rbd:", src->volume, "/", src->path, NULL); > + virBufferStrcat(&buf, "rbd:", src->volume, "/", NULL); > + /* The filename of image with namespace: rbd:POOL/NAMESPACE/IMAGE... */ > + if (src->namespace) > + virBufferStrcat(&buf, src->namespace, "/", NULL); > + > + virBufferStrcat(&buf, src->path, NULL); > This is dead code now. qemu-5.0 will be started with -blockdev only. > if (src->snapshot) > virBufferEscape(&buf, '\\', ":", "@%s", src->snapshot); [...] > diff --git a/tests/qemuxml2argvdata/disk-network-rbd-namespace.xml b/tests/qemuxml2argvdata/disk-network-rbd-namespace.xml > new file mode 100644 > index 0000000000..8b526c4a20 > --- /dev/null > +++ b/tests/qemuxml2argvdata/disk-network-rbd-namespace.xml > @@ -0,0 +1,33 @@ > +<domain type='qemu'> > + <name>QEMUGuest1</name> > + <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid> > + <memory unit='KiB'>219136</memory> > + <currentMemory unit='KiB'>219136</currentMemory> > + <vcpu placement='static'>1</vcpu> > + <os> > + <type arch='x86_64' machine='pc'>hvm</type> > + <boot dev='hd'/> > + </os> > + <clock offset='utc'/> > + <on_poweroff>destroy</on_poweroff> > + <on_reboot>restart</on_reboot> > + <on_crash>destroy</on_crash> > + <devices> > + <emulator>/usr/bin/qemu-system-x86_64</emulator> > + <disk type='network' device='disk'> > + <driver name='qemu' type='raw'/> > + <source protocol='rbd' name='pool/image' namespace='ns'> > + <host name='mon1.example.org' port='6321'/> > + <host name='mon2.example.org' port='6322'/> > + <host name='mon3.example.org' port='6322'/> > + </source> > + <target dev='vda' bus='virtio'/> > + </disk> > + <controller type='usb' index='0'/> > + <controller type='ide' index='0'/> > + <controller type='pci' index='0' model='pci-root'/> > + <input type='mouse' bus='ps2'/> > + <input type='keyboard' bus='ps2'/> > + <memballoon model='none'/> > + </devices> > +</domain> virschematest fails after adding this file in this patch. You must add the RNG schema prior to any file using it as we invoke the schema test on all example files.
On Thu, Aug 6, 2020 at 7:58 PM Peter Krempa <pkrempa@redhat.com> wrote: > On Thu, Aug 06, 2020 at 19:41:44 +0800, Han Han wrote: > > Ceph Nautilus supports separate image namespaces within a pool for > > tenant isolation and QEMU added it as a rbd blockdev options from 5.0.0. > > This optional attribute is used to access a image with namespace. > > > > Add unit tests for this attribute. > > > > https://bugzilla.redhat.com/show_bug.cgi?id=1816909 > > > > Signed-off-by: Han Han <hhan@redhat.com> > > --- > > src/qemu/qemu_block.c | 1 + > > src/qemu/qemu_command.c | 7 +++- > > ...k-network-rbd-namespace.x86_64-latest.args | 41 +++++++++++++++++++ > > .../disk-network-rbd-namespace.xml | 33 +++++++++++++++ > > tests/qemuxml2argvtest.c | 1 + > > ...sk-network-rbd-namespace.x86_64-latest.xml | 41 +++++++++++++++++++ > > tests/qemuxml2xmltest.c | 1 + > > 7 files changed, 124 insertions(+), 1 deletion(-) > > create mode 100644 > tests/qemuxml2argvdata/disk-network-rbd-namespace.x86_64-latest.args > > create mode 100644 tests/qemuxml2argvdata/disk-network-rbd-namespace.xml > > create mode 100644 > tests/qemuxml2xmloutdata/disk-network-rbd-namespace.x86_64-latest.xml > > [...] > > > diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c > > index 01812cd39b..b6288d1308 100644 > > --- a/src/qemu/qemu_command.c > > +++ b/src/qemu/qemu_command.c > > @@ -980,7 +980,12 @@ qemuBuildNetworkDriveStr(virStorageSourcePtr src, > > return NULL; > > } > > > > - virBufferStrcat(&buf, "rbd:", src->volume, "/", src->path, > NULL); > > + virBufferStrcat(&buf, "rbd:", src->volume, "/", NULL); > > + /* The filename of image with namespace: > rbd:POOL/NAMESPACE/IMAGE... */ > > + if (src->namespace) > > + virBufferStrcat(&buf, src->namespace, "/", NULL); > > + > > + virBufferStrcat(&buf, src->path, NULL); > > > > This is dead code now. qemu-5.0 will be started with -blockdev only. > > So libvirt will not confirm the functional correctness when -blockdev is disabled by <qemu:commandline> in qemu 5.0 or after, right? > > > if (src->snapshot) > > virBufferEscape(&buf, '\\', ":", "@%s", src->snapshot); > > [...] > > > diff --git a/tests/qemuxml2argvdata/disk-network-rbd-namespace.xml > b/tests/qemuxml2argvdata/disk-network-rbd-namespace.xml > > new file mode 100644 > > index 0000000000..8b526c4a20 > > --- /dev/null > > +++ b/tests/qemuxml2argvdata/disk-network-rbd-namespace.xml > > @@ -0,0 +1,33 @@ > > +<domain type='qemu'> > > + <name>QEMUGuest1</name> > > + <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid> > > + <memory unit='KiB'>219136</memory> > > + <currentMemory unit='KiB'>219136</currentMemory> > > + <vcpu placement='static'>1</vcpu> > > + <os> > > + <type arch='x86_64' machine='pc'>hvm</type> > > + <boot dev='hd'/> > > + </os> > > + <clock offset='utc'/> > > + <on_poweroff>destroy</on_poweroff> > > + <on_reboot>restart</on_reboot> > > + <on_crash>destroy</on_crash> > > + <devices> > > + <emulator>/usr/bin/qemu-system-x86_64</emulator> > > + <disk type='network' device='disk'> > > + <driver name='qemu' type='raw'/> > > + <source protocol='rbd' name='pool/image' namespace='ns'> > > + <host name='mon1.example.org' port='6321'/> > > + <host name='mon2.example.org' port='6322'/> > > + <host name='mon3.example.org' port='6322'/> > > + </source> > > + <target dev='vda' bus='virtio'/> > > + </disk> > > + <controller type='usb' index='0'/> > > + <controller type='ide' index='0'/> > > + <controller type='pci' index='0' model='pci-root'/> > > + <input type='mouse' bus='ps2'/> > > + <input type='keyboard' bus='ps2'/> > > + <memballoon model='none'/> > > + </devices> > > +</domain> > > virschematest fails after adding this file in this patch. You must add > the RNG schema prior to any file using it as we invoke the schema test > on all example files. > > -- Best regards, ----------------------------------- Han Han Senior Quality Engineer Redhat. Email: hhan@redhat.com Phone: +861065339333
On Fri, Aug 07, 2020 at 17:11:25 +0800, Han Han wrote: > On Thu, Aug 6, 2020 at 7:58 PM Peter Krempa <pkrempa@redhat.com> wrote: > > > On Thu, Aug 06, 2020 at 19:41:44 +0800, Han Han wrote: > > > Ceph Nautilus supports separate image namespaces within a pool for > > > tenant isolation and QEMU added it as a rbd blockdev options from 5.0.0. > > > This optional attribute is used to access a image with namespace. > > > > > > Add unit tests for this attribute. > > > > > > https://bugzilla.redhat.com/show_bug.cgi?id=1816909 > > > > > > Signed-off-by: Han Han <hhan@redhat.com> > > > --- > > > src/qemu/qemu_block.c | 1 + > > > src/qemu/qemu_command.c | 7 +++- > > > ...k-network-rbd-namespace.x86_64-latest.args | 41 +++++++++++++++++++ > > > .../disk-network-rbd-namespace.xml | 33 +++++++++++++++ > > > tests/qemuxml2argvtest.c | 1 + > > > ...sk-network-rbd-namespace.x86_64-latest.xml | 41 +++++++++++++++++++ > > > tests/qemuxml2xmltest.c | 1 + > > > 7 files changed, 124 insertions(+), 1 deletion(-) > > > create mode 100644 > > tests/qemuxml2argvdata/disk-network-rbd-namespace.x86_64-latest.args > > > create mode 100644 tests/qemuxml2argvdata/disk-network-rbd-namespace.xml > > > create mode 100644 > > tests/qemuxml2xmloutdata/disk-network-rbd-namespace.x86_64-latest.xml > > > > [...] > > > > > diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c > > > index 01812cd39b..b6288d1308 100644 > > > --- a/src/qemu/qemu_command.c > > > +++ b/src/qemu/qemu_command.c > > > @@ -980,7 +980,12 @@ qemuBuildNetworkDriveStr(virStorageSourcePtr src, > > > return NULL; > > > } > > > > > > - virBufferStrcat(&buf, "rbd:", src->volume, "/", src->path, > > NULL); > > > + virBufferStrcat(&buf, "rbd:", src->volume, "/", NULL); > > > + /* The filename of image with namespace: > > rbd:POOL/NAMESPACE/IMAGE... */ > > > + if (src->namespace) > > > + virBufferStrcat(&buf, src->namespace, "/", NULL); > > > + > > > + virBufferStrcat(&buf, src->path, NULL); > > > > > > > This is dead code now. qemu-5.0 will be started with -blockdev only. > > > > So libvirt will not confirm the functional correctness when -blockdev is > disabled by <qemu:commandline> > in qemu 5.0 or after, right? No. <qemu:capabilities> are specifically described [1] as for experiments and workarounds only and we don't strive to support anything which is not obtainable by standard qemu. [1]: In some cases e.g. when developing a new feature or for testing it may be required to control a given qemu feature (or qemu capability) to test it before it's complete or disable it for debugging purposes. Since 5.5.0 it's possible to use the same special qemu namespace as above (http://libvirt.org/schemas/domain/qemu/1.0) and use <qemu:capabilities> element to add (<qemu:add capability="capname"/>) or remove (<qemu:del capability="capname"/>) capability bits. The naming of the feature bits is the same libvirt uses in the status XML. Note that this feature is meant for experiments only and should _not_ be used in production.
On Fri, Aug 7, 2020 at 5:17 PM Peter Krempa <pkrempa@redhat.com> wrote: > On Fri, Aug 07, 2020 at 17:11:25 +0800, Han Han wrote: > > On Thu, Aug 6, 2020 at 7:58 PM Peter Krempa <pkrempa@redhat.com> wrote: > > > > > On Thu, Aug 06, 2020 at 19:41:44 +0800, Han Han wrote: > > > > Ceph Nautilus supports separate image namespaces within a pool for > > > > tenant isolation and QEMU added it as a rbd blockdev options from > 5.0.0. > > > > This optional attribute is used to access a image with namespace. > > > > > > > > Add unit tests for this attribute. > > > > > > > > https://bugzilla.redhat.com/show_bug.cgi?id=1816909 > > > > > > > > Signed-off-by: Han Han <hhan@redhat.com> > > > > --- > > > > src/qemu/qemu_block.c | 1 + > > > > src/qemu/qemu_command.c | 7 +++- > > > > ...k-network-rbd-namespace.x86_64-latest.args | 41 > +++++++++++++++++++ > > > > .../disk-network-rbd-namespace.xml | 33 +++++++++++++++ > > > > tests/qemuxml2argvtest.c | 1 + > > > > ...sk-network-rbd-namespace.x86_64-latest.xml | 41 > +++++++++++++++++++ > > > > tests/qemuxml2xmltest.c | 1 + > > > > 7 files changed, 124 insertions(+), 1 deletion(-) > > > > create mode 100644 > > > tests/qemuxml2argvdata/disk-network-rbd-namespace.x86_64-latest.args > > > > create mode 100644 > tests/qemuxml2argvdata/disk-network-rbd-namespace.xml > > > > create mode 100644 > > > tests/qemuxml2xmloutdata/disk-network-rbd-namespace.x86_64-latest.xml > > > > > > [...] > > > > > > > diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c > > > > index 01812cd39b..b6288d1308 100644 > > > > --- a/src/qemu/qemu_command.c > > > > +++ b/src/qemu/qemu_command.c > > > > @@ -980,7 +980,12 @@ qemuBuildNetworkDriveStr(virStorageSourcePtr > src, > > > > return NULL; > > > > } > > > > > > > > - virBufferStrcat(&buf, "rbd:", src->volume, "/", > src->path, > > > NULL); > > > > + virBufferStrcat(&buf, "rbd:", src->volume, "/", NULL); > > > > + /* The filename of image with namespace: > > > rbd:POOL/NAMESPACE/IMAGE... */ > > > > + if (src->namespace) > > > > + virBufferStrcat(&buf, src->namespace, "/", NULL); > > > > + > > > > + virBufferStrcat(&buf, src->path, NULL); > > > > > > > > > > This is dead code now. qemu-5.0 will be started with -blockdev only. > > > > > > So libvirt will not confirm the functional correctness when -blockdev > is > > disabled by <qemu:commandline> > > in qemu 5.0 or after, right? > > No. <qemu:capabilities> are specifically described [1] as for > experiments and workarounds only and we don't strive to support anything > which is not obtainable by standard qemu. > > Thanks for your reviewing and explanation. I will update these in v4 > > [1]: > > In some cases e.g. when developing a new feature or for testing it may > be required to control a given qemu feature (or qemu capability) to test > it before it's complete or disable it for debugging purposes. Since > 5.5.0 it's possible to use the same special qemu namespace as above > (http://libvirt.org/schemas/domain/qemu/1.0) and use <qemu:capabilities> > element to add (<qemu:add capability="capname"/>) or remove (<qemu:del > capability="capname"/>) capability bits. The naming of the feature bits > is the same libvirt uses in the status XML. Note that this feature is > meant for experiments only and should _not_ be used in production. > > -- Best regards, ----------------------------------- Han Han Senior Quality Engineer Redhat. Email: hhan@redhat.com Phone: +861065339333
© 2016 - 2026 Red Hat, Inc.