qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] Should we auto-generate IDs?


From: Daniel P. Berrange
Subject: Re: [Qemu-devel] Should we auto-generate IDs?
Date: Thu, 27 Aug 2015 17:02:17 +0100
User-agent: Mutt/1.5.23 (2014-03-12)

On Thu, Aug 27, 2015 at 11:58:22AM -0400, Programmingkid wrote:
> 
> On Aug 27, 2015, at 11:40 AM, Jeff Cody wrote:
> 
> > On Thu, Aug 27, 2015 at 11:20:20AM -0400, Programmingkid wrote:
> >> 
> >> On Aug 27, 2015, at 10:42 AM, Daniel P. Berrange wrote:
> >> 
> >>> On Thu, Aug 27, 2015 at 10:34:05AM -0400, Programmingkid wrote:
> >>>> 
> >>>> On Aug 27, 2015, at 10:02 AM, Eric Blake wrote:
> >>>> 
> >>>>> On 08/27/2015 07:56 AM, Programmingkid wrote:
> >>>>> 
> >>>>>>> If we did have auto-generated names, we would need to come up with a
> >>>>>>> scheme that is not going to clash with any existing naming that users
> >>>>>>> of QEMU may already be doing, otherwise we risk causing a regression.
> >>>>>>> Something as simple as what you suggest has non-trivial chance of
> >>>>>>> clashing.
> >>>>>> 
> >>>>>> Actually there is a way to prevent clashing. When QEMU auto-generates a
> >>>>>> name, it could scan all the ID's to see if there is a clash. If the ID 
> >>>>>> is already
> >>>>>> taken, just increment the ID until it is detected to be unique. The 
> >>>>>> previous
> >>>>>> threads on this subject has patches that did just that. This means 
> >>>>>> that a
> >>>>>> ID scheme that is just a single number would work without clashes. 
> >>>>> 
> >>>>> No, because you cannot predict what FUTURE names the user will request.
> >>>>> The name generated by qemu must be IMPOSSIBLE to request manually, and
> >>>>> not just one that happens not to clash at the current moment.
> >>>> 
> >>>> If I add a device with an ID that is taken, QEMU can just say sorry that 
> >>>> ID is already
> >>>> taken. I could just increment the ID myself until I find one that is 
> >>>> unique. It is a
> >>>> simple algorithm. Maybe you are talking about some program that has hard 
> >>>> coded
> >>>> ID's it depends on. If that is the case, perhaps this management program 
> >>>> could be
> >>>> made to be a little flexible. Or use a 160-bit SHA-1 generated ID that 
> >>>> is virtually
> >>>> guaranteed to always be unique.
> >>> 
> >>> If breaking existing apps was OK, we would just mandate that users always
> >>> provide an ID which trivially avoids the problem of not having an ID to
> >>> use when deleting the object. We want to /avoid/ breaking existing apps
> >>> though, so saying an app should change the way it works in order to cope
> >>> with QEMU's ID generation is not appropriate. Hence any use of 
> >>> auto-generated
> >>> IDs, must use a separate namespace to avoid such clashes.
> >> 
> >> This is making the assumption that an auto-generated ID system would break 
> >> any existing
> >> application. We don't know this. In fact, I predict a future patch would 
> >> allow existing
> >> applications to continue running without modification. The patch would be 
> >> a win-win
> >> for both users and any management application.
> >> 
> > 
> > Daniel's assumption is spot on.  The idea of "QEMU can just say sorry
> > that ID is already taken" will break existing applications.
> > 
> > But we are all striving to make your prediction true, with this very
> > conversation.
> 
> Ok, it sounds like some are concerned that Libvirt would not be able to work 
> with this
> feature. Let me ask you this: does Libvirt interact with QEMU before the user 
> has a
> chance to do so? If the answer is yes, then that means Libvirt will have 
> finished 
> creating all its devices with their ID's long before the user has a chance to 
> enter
> his own devices.

Just to be clear - libvirt will *never* use an auto-generated device
IDs feature. It is way more complicated to let QEMU assign device IDs
and then auto-detect them from some 'info device-list' output, than
to just specify IDs upfront at device/object creation time which
it already does[1]. There is simply no benefit to auto-generating device
IDs for a mgmt app like libvirt, and plenty of downside.  Auto-generated
IDs will only be of interest to humans talking to the monitor directly
without a mgmt app involved.

Regards,
Daniel

[1] we don't provide IDs for qcow2 image backing file chain, but that's
    part of a bigger story that's being dealt with in this area.
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|



reply via email to

[Prev in Thread] Current Thread [Next in Thread]