Yeah it seems this was discussed plenty of times but not accepted that 
(actually in any) way.
I tried around a bit and discussed with more people, but didn't find a good way 
to hard control it.

Note: on IRC it also came up that a hot-attach fails with the message in 
comment #23.
But on a guest reboot it would work.
Base on that the theory for now is that by default not init modern/legacy 
correctly.
The hot add will add a modern-only device that fails to initialize.
On a reboot this will be re-handshaked between guest/host and it works.
(not sure just a thought - could even be vice versa)

@admcleod - does that also imply that if the guest has the guest in it's
xml right away, that it works on a start of the domain immediately as
well?

@admcleod - that test (direct start with disk) would also help us to show the 
cmdline with the rbd device added to check if they would today use modern or 
old syntax
modern should be: -drive driver=rbd,filename=%s, ... ,password-secret
legacy should be: -drive file=%s, ... ,file.password-secret

Well the hot add will use commands instead of cmdline anyway.

virtip-pci is generic, but you never know, so I first checked if forcing modern 
exist as cmdline arg as expected.
$ qemu-system-aarch64 -machine virt-2.10,accel=kvm,gic-version=3 -device 
virtio-blk,help 2>&1 | egrep 'modern|legacy'
virtio-blk-pci.disable-modern=bool
virtio-blk-pci.disable-legacy=OnOffAuto (on/off/auto)
virtio-blk-pci.modern-pio-notify=bool (on/off)

In general we should have (see qemu include/hw/compat.h)
<=2.6 disable-modern=on,disable-legacy=off (old)
>2.6 disable-modern=off,disable-legacy=on (new)

So you should be by default using modern - without forcing anything.

I went to check the runtime info, the following gives some info, please feel 
free to look around for more differences in there:
$ virsh qemu-monitor-command --hmp <guestname> 'info qtree' | grep -A 10 
virtio-blk-pci

I already saw that on qemu2.10 x86 vs aarch64 there are differences (with basic 
discs without rbd):
arm: disable-legacy = "on", disable-modern = false
x86: disable-legacy = "off", disable-modern = false

So at least in my case x86 seems effectively to provide both, but arm ONLY the 
new one.
There might be reasons for that (bad pre 1.0 support on arm or so), so that is 
not an issue but interesting.

Note: I was trying to derive a fake-rbd from your device xml, but that
hung my host for a while - so maybe you should test the above as you
have it set up.

@admcleod - for your described lifecycle it would be interesting to query those 
attributes above.
1 after fresh guest start
2 after attaching the rbd device (that fails)
3 after reboot with rbd device attached (device now works)
4 after fresh guest start with rbd device
= all of the above comparing the same stack on x86 vs aarch64
Pick all of the devices output in qtree, and "info block" on it as well.

This list we can then compare in Y axis (1-4) and between arches (arm vs x86 on 
each step).
Hopefully that would lead to an insight that helps.

Finally by more discussions I actually found a way to control 
disable-modern/legacy via libvirt xml.
You can see an example to get to "both enabled" that works on my arm box at: 
http://paste.ubuntu.com/26534642/

@admcleod - with the config above you could also try if tweaking on that
would fixup your case as a debug-workaround.

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1664737

Title:
  [ARM]  : Unable to use Cinder volumes on ARM

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/libvirt/+bug/1664737/+subscriptions

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to