Kevin Wolf <kw...@redhat.com> writes: > Am 02.05.2013 um 15:41 hat Anthony Liguori geschrieben: >> Kevin Wolf <kw...@redhat.com> writes: >> >> > Am 26.04.2013 um 21:43 hat Anthony Liguori geschrieben: [...] >> >> + >> >> + if (strcmp(type, "ide-cd") == 0) { >> >> + disk_type = DT_CDROM; >> >> + } else if (strcmp(type, "isa-fdc") == 0) { >> >> + disk_type = DT_FLOPPY; >> >> + } else { >> >> + disk_type = DT_NORMAL; >> >> + } >> > >> > Same thing here, comparing against strings is a hack. Devices should >> > probably have a property that says what kind of device they are. >> >> Ack, this is nasty. I would like to eliminate this. There is a type >> field in BlockInfo but: >> >> # @type: This field is returned only for compatibility reasons, it should >> # not be used (always returns 'unknown') >> >> I vaguely remember this happening but I don't remember the specific >> reason why. I would definitely prefer that we filled out type >> correctly. >> >> I think Markus was involved in this. Markus or Luiz, do you remember >> the story here? > > The reason is that BlockInfo is about the backend and it simply doesn't > know (ever since we introduced if=none, this was buggy, so we just > abandoned it at some point). We would have to ask the device, not the > block layer.
Correct. commit d8aeeb31d53a07a0cce36c7bcf53684953c2e445 Author: Markus Armbruster <arm...@redhat.com> Date: Mon May 16 15:04:55 2011 +0200 block QMP: Deprecate query-block's "type", drop info block's "type=" query-block's specification documents response member "type" with values "hd", "cdrom", "floppy", "unknown". Its value is unreliable: a block device used as floppy has type "floppy" if created with if=floppy, but type "hd" if created with if=none. That's because with if=none, the type is at best a declaration of intent: the drive can be connected to any guest device. Its type is really the guest device's business. Reporting it here is wrong. No known user of QMP uses "type". It's unlikely that any unknown users exist, because its value is useless unless you know how the block device was created. But then you also know the true value. Fixing the broken value risks breaking (hypothetical!) clients that somehow rely on the current behavior. Not fixing the value risks breaking (hypothetical!) clients that rely on the value to be accurate. Can't entirely avoid hypothetical lossage. Change the value to be always "unknown". This makes "info block" always report "type=unknown". Pointless. Change it to not report the type. Signed-off-by: Markus Armbruster <arm...@redhat.com> Signed-off-by: Kevin Wolf <kw...@redhat.com>