Message ID | 1278419869-26126-5-git-send-email-armbru@redhat.com |
---|---|
State | New |
Headers | show |
Am 06.07.2010 14:37, schrieb Markus Armbruster: > 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. > > Signed-off-by: Markus Armbruster <armbru@redhat.com> Dan, I'd like to have your Acked-by for this patch before applying it. Can libvirt handle such a change in the monitor output, or does it even use info block? Kevin > --- > block.c | 20 +++----------------- > qemu-monitor.hx | 6 ------ > 2 files changed, 3 insertions(+), 23 deletions(-) > > diff --git a/block.c b/block.c > index 65cf4dc..6d419b9 100644 > --- a/block.c > +++ b/block.c > @@ -1533,9 +1533,8 @@ static void bdrv_print_dict(QObject *obj, void *opaque) > > bs_dict = qobject_to_qdict(obj); > > - monitor_printf(mon, "%s: type=%s removable=%d", > + monitor_printf(mon, "%s: removable=%d", > qdict_get_str(bs_dict, "device"), > - qdict_get_str(bs_dict, "type"), > qdict_get_bool(bs_dict, "removable")); > > if (qdict_get_bool(bs_dict, "removable")) { > @@ -1576,23 +1575,10 @@ void bdrv_info(Monitor *mon, QObject **ret_data) > > QTAILQ_FOREACH(bs, &bdrv_states, list) { > QObject *bs_obj; > - const char *type = "unknown"; > - > - switch(bs->type) { > - case BDRV_TYPE_HD: > - type = "hd"; > - break; > - case BDRV_TYPE_CDROM: > - type = "cdrom"; > - break; > - case BDRV_TYPE_FLOPPY: > - type = "floppy"; > - break; > - } > > - bs_obj = qobject_from_jsonf("{ 'device': %s, 'type': %s, " > + bs_obj = qobject_from_jsonf("{ 'device': %s, " > "'removable': %i, 'locked': %i }", > - bs->device_name, type, bs->removable, > + bs->device_name, bs->removable, > bs->locked); > > if (bs->drv) { > diff --git a/qemu-monitor.hx b/qemu-monitor.hx > index 9f62b94..6ba8abc 100644 > --- a/qemu-monitor.hx > +++ b/qemu-monitor.hx > @@ -1723,8 +1723,6 @@ is a json-array of all devices. > Each json-object contain the following: > > - "device": device name (json-string) > -- "type": device type (json-string) > - - Possible values: "hd", "cdrom", "floppy", "unknown" > - "removable": true if the device is removable, false otherwise (json-bool) > - "locked": true if the device is locked, false otherwise (json-bool) > - "inserted": only present if the device is inserted, it is a json-object > @@ -1755,25 +1753,21 @@ Example: > "encrypted":false, > "file":"disks/test.img" > }, > - "type":"hd" > }, > { > "device":"ide1-cd0", > "locked":false, > "removable":true, > - "type":"cdrom" > }, > { > "device":"floppy0", > "locked":false, > "removable":true, > - "type": "floppy" > }, > { > "device":"sd0", > "locked":false, > "removable":true, > - "type":"floppy" > } > ] > }
On Tue, Jul 06, 2010 at 06:39:53PM +0200, Kevin Wolf wrote: > Am 06.07.2010 14:37, schrieb Markus Armbruster: > > 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. > > > > Signed-off-by: Markus Armbruster <armbru@redhat.com> > > Dan, I'd like to have your Acked-by for this patch before applying it. > Can libvirt handle such a change in the monitor output, or does it even > use info block? We don't use the 'info block' or query-block commands at this point in time, only 'info blockstats'/'query-blockstats'. So it should be fine to drop this field from libvirt's POV. Regards, Daniel
Looks correct to me,
Reviewed-by: Christoph Hellwig <hch@lst.de>
diff --git a/block.c b/block.c index 65cf4dc..6d419b9 100644 --- a/block.c +++ b/block.c @@ -1533,9 +1533,8 @@ static void bdrv_print_dict(QObject *obj, void *opaque) bs_dict = qobject_to_qdict(obj); - monitor_printf(mon, "%s: type=%s removable=%d", + monitor_printf(mon, "%s: removable=%d", qdict_get_str(bs_dict, "device"), - qdict_get_str(bs_dict, "type"), qdict_get_bool(bs_dict, "removable")); if (qdict_get_bool(bs_dict, "removable")) { @@ -1576,23 +1575,10 @@ void bdrv_info(Monitor *mon, QObject **ret_data) QTAILQ_FOREACH(bs, &bdrv_states, list) { QObject *bs_obj; - const char *type = "unknown"; - - switch(bs->type) { - case BDRV_TYPE_HD: - type = "hd"; - break; - case BDRV_TYPE_CDROM: - type = "cdrom"; - break; - case BDRV_TYPE_FLOPPY: - type = "floppy"; - break; - } - bs_obj = qobject_from_jsonf("{ 'device': %s, 'type': %s, " + bs_obj = qobject_from_jsonf("{ 'device': %s, " "'removable': %i, 'locked': %i }", - bs->device_name, type, bs->removable, + bs->device_name, bs->removable, bs->locked); if (bs->drv) { diff --git a/qemu-monitor.hx b/qemu-monitor.hx index 9f62b94..6ba8abc 100644 --- a/qemu-monitor.hx +++ b/qemu-monitor.hx @@ -1723,8 +1723,6 @@ is a json-array of all devices. Each json-object contain the following: - "device": device name (json-string) -- "type": device type (json-string) - - Possible values: "hd", "cdrom", "floppy", "unknown" - "removable": true if the device is removable, false otherwise (json-bool) - "locked": true if the device is locked, false otherwise (json-bool) - "inserted": only present if the device is inserted, it is a json-object @@ -1755,25 +1753,21 @@ Example: "encrypted":false, "file":"disks/test.img" }, - "type":"hd" }, { "device":"ide1-cd0", "locked":false, "removable":true, - "type":"cdrom" }, { "device":"floppy0", "locked":false, "removable":true, - "type": "floppy" }, { "device":"sd0", "locked":false, "removable":true, - "type":"floppy" } ] }
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. Signed-off-by: Markus Armbruster <armbru@redhat.com> --- block.c | 20 +++----------------- qemu-monitor.hx | 6 ------ 2 files changed, 3 insertions(+), 23 deletions(-)