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>
> >
> > The 'drive' address here maps the disk to the controller. This example
IIUC we need a way to associate storage (this XML snippet) with the controller
you defined earlier (<controller type='nvme' index='1'
model='nvme'>). So
shouldn't we only require associating this piece of storage with the controller
based on the index?
> > uses unit= as the way to specify the namespace ID. Both
'bus' and 'target'
> > must be 0.
I think 'namespace' or 'ns' would be more suitable instead of
'unit'.
What are 'bus' and 'target' here? And why do they have to be 0?
Do we really need dev='nvme0' in <target ...>? Specifying the controller
index
should be enough, no?
Wouldn't this contain the minimum amount of information to unambiguously map
this piece of storage to the controller?
<disk type='file' device='disk'>
<source dev='/Host/QEMUGuest2.qcow2'/>
<target dev='sdb' bus='nvme'/>
<address controller='1' ns='1'/>
</disk>