On Mon, Nov 23, 2020 at 17:40:58 +0000, Thanos Makatos wrote: > > > > -----Original Message----- > > From: Peter Krempa <pkrempa@xxxxxxxxxx> > > Sent: 23 November 2020 16:56 > > To: Thanos Makatos <thanos.makatos@xxxxxxxxxxx> > > Cc: Suraj Kasi <suraj.kasi@xxxxxxxxxxx>; libvirt-list@xxxxxxxxxx; John Levon > > <john.levon@xxxxxxxxxxx> > > Subject: Re: Libvirt NVME support > > > > On Mon, Nov 23, 2020 at 16:48:55 +0000, Thanos Makatos wrote: > > > > 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: > > > > > > > > > > > > > > > > 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. > > > > > > I think I've misunderstood something, I thought controller='1' in <address > > ...> > > > refers to index='1' in <controller ...>. So <address ...> should be: > > > > > > <address type='nvme' index='1' controller='1' ns='2'/> > > > > > > What's controller='1' then? > > > > What I meant by the above is that the value of "<target dev='THIS'" must > > be unique for every <disk>. I also wanted to advice to not use numbers > > for making it unique. Numbers used for it have a legacy meaning. > > > > Your suggested <address type='nvme' design looks good. > > OK, so we definitely need dev='...' in target which is something like [a-zA-Z]+ > and is unique. If this identifier is not controlled by the user, I think it > would be best not to prefix it with 'nvme' (thus resulting in strings like > 'nvmea' or 'nvmeabc'), as they can be rather confusing for people who don't > know the details. > > However, I still don't understand how index='1' and controller='1' in address > relate to index='1' in controller: > > <address type='nvme' index='1' controller='1' ns='2'/> index should not be here at all .. > > and > > <controller type='nvme' index='1' model='nvme'> > > ... then it makes sense.