qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Daniel P. Berrange" <berrange@redhat.com>
To: Programmingkid <programmingkidx@gmail.com>
Cc: "Kevin Wolf" <kwolf@redhat.com>, "Jeff Cody" <jcody@redhat.com>,
	"Markus Armbruster" <armbru@redhat.com>,
	"qemu-devel qemu-devel" <qemu-devel@nongnu.org>,
	"Paolo Bonzini" <pbonzini@redhat.com>,
	jsnow@redhat.com, "Andreas Färber" <afaerber@suse.de>
Subject: Re: [Qemu-devel] Should we auto-generate IDs?
Date: Thu, 27 Aug 2015 15:06:22 +0100	[thread overview]
Message-ID: <20150827140621.GV24486@redhat.com> (raw)
In-Reply-To: <37557843-A1BA-4822-9933-B0B8AD588C90@gmail.com>

On Thu, Aug 27, 2015 at 09:56:47AM -0400, Programmingkid wrote:
> 
> On Aug 27, 2015, at 9:49 AM, Daniel P. Berrange wrote:
> 
> > On Thu, Aug 27, 2015 at 09:33:42AM -0400, Programmingkid wrote:
> >> 
> >> On Aug 27, 2015, at 8:32 AM, Jeff Cody wrote:
> >> 
> >>> 
> >>> On the generation scheme proposed above:
> >>> 
> >>> I understand that something you desire is an ID that is easier to
> >>> type.
> >>> 
> >>> If we wanted to make it shorter, perhaps we could have the number
> >>> counter be variable length:
> >>> 
> >>>           qemu#ss#D#XY
> >>>             |   | | |
> >>> qemu reserved -   | | |
> >>>                 | | |
> >>> subsystem name ---| | |
> >>>                   | |
> >>>   counter --------| |
> >>>                     |
> >>>   2-digit random ---|
> >>> 
> >>> 
> >>> The counter would just grow to however many digits are needed.  There
> >>> is another benefit to growing that number as well - we can use
> >>> whatever integer size we think is adequate in the code, without
> >>> affecting the generation scheme.
> >>> 
> >>> -Jeff
> >> 
> >> This system does seem easy to type. Do we need the "qemu" part?
> >> It seems unnecessary. Maybe we could do this:
> >> 
> >> <subsystem name><counter>
> >> 
> >> Examples:
> >> For the third block device it would look like this: bl3
> >> For the seventh USB device it would look like this: ub7
> >> 
> >> Each subsystem would receive a two character code.
> > 
> > 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.

Nope that is not sufficient. Consider an application was doing the
following

  $ qemu -device virtio-blk ....  -monitor stdio
  (qemu) device_add virtio-blk,id=ub1

Now if QEMU assigns the disk specified on the command line the
ID value 'ub1', the user later attempts to hotplug a disk
with that same ID will fail. So it will cause a regression
where something an app was doing with old QEMU will now
result in an error.

We don't know what possible naming schemes an app may already
be using with QEMU, so the only safe thing is to invent an
ID format which is currently illegal to specify manually, so
we have a completely separate namespace for auto-generated
IDs from user generated IDs.

> > We should look at what characters QEMU currently forbids users
> > from using in an explicitly passed ID, and include one or more
> > of them in the name.  eg IIUC, QEMU forbids use of a leading
> > underscore in ID names, so auto-generated names could use an
> > leading _ to avoid clashing.
> 
> I'm thinking that it might be unnecessary to do all that. ID clash
> detection is pretty easy to do. 

We really do need todo this.

Regards,
Daniel
-- 
|: 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 :|

  parent reply	other threads:[~2015-08-27 14:06 UTC|newest]

Thread overview: 79+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-08-24 18:53 [Qemu-devel] [PATCH] qdev-monitor.c: Add device id generation Programmingkid
2015-08-24 22:21 ` Eric Blake
2015-08-25 12:42   ` Markus Armbruster
2015-08-25 15:25     ` Programmingkid
2015-08-25 15:33       ` Peter Maydell
2015-08-25 15:50         ` Programmingkid
2015-08-25 18:30           ` Markus Armbruster
2015-08-25 19:05             ` Programmingkid
2015-08-25 14:33   ` Programmingkid
2015-08-25 12:38 ` [Qemu-devel] Should we auto-generate IDs? (was: [PATCH] qdev-monitor.c: Add device id generation) Markus Armbruster
2015-08-25 15:15   ` Programmingkid
2015-08-26 14:52   ` Programmingkid
2015-08-26 16:31     ` [Qemu-devel] Should we auto-generate IDs? Markus Armbruster
2015-08-26 17:16       ` Programmingkid
2015-08-26 18:45         ` Peter Maydell
2015-08-26 21:48           ` Programmingkid
2015-08-26 22:08             ` John Snow
2015-08-27  3:40               ` Programmingkid
2015-08-27  5:39                 ` Markus Armbruster
2015-08-27 15:39                   ` Programmingkid
2015-08-26 17:25       ` Jeff Cody
2015-08-26 17:29         ` Programmingkid
2015-08-26 18:08           ` Jeff Cody
2015-08-26 18:17             ` Programmingkid
2015-08-26 22:01               ` Jeff Cody
2015-08-26 22:04                 ` John Snow
2015-08-27  3:26                   ` Programmingkid
2015-08-27  3:22                 ` Programmingkid
2015-08-27 12:32                   ` Jeff Cody
2015-08-27 13:00                     ` Eric Blake
2015-08-27 13:39                       ` Programmingkid
2015-08-27 13:51                         ` Daniel P. Berrange
2015-08-27 14:01                           ` Eric Blake
2015-08-27 14:18                             ` Jeff Cody
2015-08-27 14:19                             ` Programmingkid
2015-08-27 14:01                           ` Programmingkid
2015-08-27 18:59                       ` John Snow
2015-08-27 19:20                         ` Eric Blake
2015-08-27 13:33                     ` Programmingkid
2015-08-27 13:49                       ` Daniel P. Berrange
2015-08-27 13:56                         ` Programmingkid
2015-08-27 14:02                           ` Eric Blake
2015-08-27 14:34                             ` Programmingkid
2015-08-27 14:42                               ` Daniel P. Berrange
2015-08-27 15:20                                 ` Programmingkid
2015-08-27 15:40                                   ` Jeff Cody
2015-08-27 15:58                                     ` Programmingkid
2015-08-27 16:02                                       ` Daniel P. Berrange
2015-08-27 16:08                                         ` Programmingkid
2015-08-27 16:22                                           ` Daniel P. Berrange
2015-08-27 16:49                                             ` Programmingkid
2015-08-27 20:15                                             ` Programmingkid
2015-08-27 19:08                                         ` Jeff Cody
2015-08-27 19:27                                           ` Eric Blake
2015-08-27 20:37                                             ` Jeff Cody
2015-08-27 14:06                           ` Daniel P. Berrange [this message]
2015-08-27 14:54                             ` Programmingkid
2015-08-27 14:07                       ` Jeff Cody
2015-08-27 15:13                         ` Programmingkid
2015-08-27 15:19                           ` Daniel P. Berrange
2015-08-27 15:22                             ` Programmingkid
2015-08-27 15:55                               ` Daniel P. Berrange
2015-08-27 16:03                                 ` Programmingkid
2015-08-27 16:06                                   ` Daniel P. Berrange
2015-08-27 16:08                                     ` Eric Blake
2015-09-01 12:34                     ` Kevin Wolf
2015-09-01 14:18                       ` Programmingkid
2015-09-01 14:43                         ` Kevin Wolf
2015-09-01 15:55                           ` Programmingkid
2015-09-03 14:34       ` Programmingkid
2015-09-03 14:43         ` Jeff Cody
2015-09-03 15:55           ` Programmingkid
2015-09-03 16:12           ` [Qemu-devel] [PATCH v3] qdev-monitor.c: Add device id generation Programmingkid
2015-08-26 17:28   ` [Qemu-devel] Should we auto-generate IDs? (was: [PATCH] qdev-monitor.c: Add device id generation) Daniel P. Berrange
2015-08-26 17:46     ` Programmingkid
2015-08-26 17:53       ` Daniel P. Berrange
2015-08-26 18:01         ` Programmingkid
2015-08-27 13:54           ` Daniel P. Berrange
2015-08-27 14:03             ` Programmingkid

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20150827140621.GV24486@redhat.com \
    --to=berrange@redhat.com \
    --cc=afaerber@suse.de \
    --cc=armbru@redhat.com \
    --cc=jcody@redhat.com \
    --cc=jsnow@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=programmingkidx@gmail.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).