
On Mon, Nov 23, 2020 at 13:07:51 +0000, Thanos Makatos wrote:
On Mon, Nov 23, 2020 at 09:47:23 +0000, Thanos Makatos wrote:
On Thu, Nov 19, 2020 at 10:17:56 +0000, Thanos Makatos wrote:
As a starting point a trivial way to model this in the XML will be:
<controller type='nvme' index='1' model='nvme'>
And then add the storage into it as:
<disk type='file' device='disk'> <source dev='/Host/QEMUGuest1.qcow2'/> <target dev='sda' bus='nvme'/>
'target dev' is how the device appears in the guest, right? It should be something like 'nvme0n1'. I'm not sure though this is something that we can put here anyway, I think the guest driver can number controllers arbitrarily.
Well, it was supposed to be like that but really is not. Even with other buses the kernel can name the device arbitrarily, so it doesn't really matter.
Maybe we should specify something like BDF? Or is this something QEMU will have to figure out how to do?
<address type='drive' controller='1' bus='0' target='0' unit='0'/> </disk>
<disk type='file' device='disk'> <source dev='/Host/QEMUGuest2.qcow2'/> <target dev='sdb' bus='nvme'/> <address type='drive' controller='1' bus='0' target='0' unit='1'/> </disk>
Revistiting your initial suggestion, it should be something like this (s/sdb/nvme0):
<disk type='file' device='disk'> <source dev='/Host/QEMUGuest2.qcow2'/> <target dev='nvme0' bus='nvme'/> <address type='drive' controller='1' bus='0' target='0' unit='1'/> </disk>
Note that the parser for 'dev' is a bit quirky, old, and used in many places besides the qemu driver. It's also used with numbers in non-qemu cases. Extending that to parse numbers for nvme but not for sda might become ugly very quickly. Sticking with a letter at the end ('nvmea' might be a more straightforward approach.
Then I think we should just stick with 'nvme'.
You still need a way to "index" it somehow. The target must be unique for each disk. [...]
That certainly is correct if you include the "type='nvme'" attribute.
Great, so the following would be a good place for us to start?
<controller type='nvme' index='1' model='nvme'>
<disk type='file' device='disk'> <source dev='/Host/QEMUGuest2.qcow1'/> <target dev='nvme' bus='nvme'/> <address type='nvme' controller='1' ns='1'/> </disk>
<disk type='file' device='disk'> <source dev='/Host/QEMUGuest2.qcow2'/> <target dev='nvme' bus='nvme'/> <address type='nvme' controller='1' ns='2'/> </disk>
The address is reasonable this way.