All of lore.kernel.org
 help / color / mirror / Atom feed
From: Markus Armbruster <armbru@redhat.com>
To: Kevin Wolf <kwolf@redhat.com>
Cc: benoit.canet@nodalink.com, famz@redhat.com,
	qemu-devel@nongnu.org, stefanha@redhat.com, mreitz@redhat.com
Subject: Re: [Qemu-devel] [PATCH v3 18/23] blockdev: Fix blockdev-add not to create IDE drive (0, 0)
Date: Mon, 29 Sep 2014 15:05:39 +0200	[thread overview]
Message-ID: <87fvfalgpo.fsf@blackfin.pond.sub.org> (raw)
In-Reply-To: <20140929122429.GF3910@noname.str.redhat.com> (Kevin Wolf's message of "Mon, 29 Sep 2014 14:24:29 +0200")

Kevin Wolf <kwolf@redhat.com> writes:

> Am 16.09.2014 um 20:12 hat Markus Armbruster geschrieben:
>> blockdev_init() always creates a DriveInfo, but only drive_new() fills
>> it in.  qmp_blockdev_add() leaves it blank.  This results in a drive
>> with type = IF_IDE, bus = 0, unit = 0.  Screwed up in commit ee13ed1c.
>> 
>> Board initialization code looking for IDE drive (0,0) can pick up one
>> of these bogus drives.  Not sure whether getting the QMP command
>> executed early enough is likely in practice, though.
>> 
>> Fix by creating DriveInfo in drive_new().  Block backends created by
>> blockdev-add don't get one.
>> 
>> A few places assume a block backend always has a DriveInfo.  Fix them
>> up.
>> 
>> Signed-off-by: Markus Armbruster <armbru@redhat.com>
>> ---
>>  block/block-backend.c |  4 +---
>>  blockdev.c            | 10 ++--------
>>  hw/block/block.c      | 16 ++++++++++------
>>  hw/ide/qdev.c         |  2 +-
>>  hw/scsi/scsi-disk.c   |  2 +-
>>  5 files changed, 15 insertions(+), 19 deletions(-)
>> 
>> diff --git a/block/block-backend.c b/block/block-backend.c
>> index 141a31b..b55f0b4 100644
>> --- a/block/block-backend.c
>> +++ b/block/block-backend.c
>> @@ -101,9 +101,7 @@ static void drive_info_del(DriveInfo *dinfo)
>>      if (!dinfo) {
>>          return;
>>      }
>> -    if (dinfo->opts) {
>> -        qemu_opts_del(dinfo->opts);
>> -    }
>> +    qemu_opts_del(dinfo->opts);
>>      g_free(dinfo->serial);
>>      g_free(dinfo);
>>  }
>
> Doesn't look directly related?

I'll split it off.

>> diff --git a/blockdev.c b/blockdev.c
>> index 2def256..0d99be0 100644
>> --- a/blockdev.c
>> +++ b/blockdev.c
>> @@ -285,7 +285,6 @@ static BlockBackend *blockdev_init(const char *file, QDict *bs_opts,
>>      int on_read_error, on_write_error;
>>      BlockBackend *blk;
>>      BlockDriverState *bs;
>> -    DriveInfo *dinfo;
>>      ThrottleConfig cfg;
>>      int snapshot = 0;
>>      bool copy_on_read;
>> @@ -457,9 +456,6 @@ static BlockBackend *blockdev_init(const char *file, QDict *bs_opts,
>>          bdrv_set_io_limits(bs, &cfg);
>>      }
>>  
>> -    dinfo = g_malloc0(sizeof(*dinfo));
>> -    blk_set_legacy_dinfo(blk, dinfo);
>> -
>>      if (!file || !*file) {
>>          if (has_driver_specific_opts) {
>>              file = NULL;
>> @@ -903,21 +899,19 @@ DriveInfo *drive_new(QemuOpts *all_opts, BlockInterfaceType block_default_type)
>>      }
>>  
>>      /* Set legacy DriveInfo fields */
>> -    dinfo = blk_legacy_dinfo(blk);
>> +    dinfo = g_malloc0(sizeof(*dinfo));
>>      dinfo->enable_auto_del = true;
>>      dinfo->opts = all_opts;
>> -
>>      dinfo->cyls = cyls;
>>      dinfo->heads = heads;
>>      dinfo->secs = secs;
>>      dinfo->trans = translation;
>> -
>>      dinfo->type = type;
>>      dinfo->bus = bus_id;
>>      dinfo->unit = unit_id;
>>      dinfo->devaddr = devaddr;
>> -
>>      dinfo->serial = g_strdup(serial);
>> +    blk_set_legacy_dinfo(blk, dinfo);
>
> You don't like the grouping?

No, because the comment appears as if it applied only to the first
group.

This is how this spot looks at the end of the series:

    /* Set legacy DriveInfo fields */
    dinfo = g_malloc0(sizeof(*dinfo));
    dinfo->opts = all_opts;
    dinfo->cyls = cyls;
    dinfo->heads = heads;
    dinfo->secs = secs;
    dinfo->trans = translation;
    dinfo->type = type;
    dinfo->bus = bus_id;
    dinfo->unit = unit_id;
    dinfo->devaddr = devaddr;
    dinfo->serial = g_strdup(serial);
    blk_set_legacy_dinfo(blk, dinfo);

Could do this instead:

    dinfo = g_malloc0(sizeof(*dinfo));
    dinfo->opts = all_opts;

    dinfo->cyls = cyls;
    dinfo->heads = heads;
    dinfo->secs = secs;
    dinfo->trans = translation;

    dinfo->type = type;
    dinfo->bus = bus_id;
    dinfo->unit = unit_id;
    dinfo->devaddr = devaddr;
    dinfo->serial = g_strdup(serial);

    blk_set_legacy_dinfo(blk, dinfo);

The comment is next to useless anyway.  Got a preference?

>>      switch(type) {
>>      case IF_IDE:

  reply	other threads:[~2014-09-29 13:06 UTC|newest]

Thread overview: 110+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-09-16 18:12 [Qemu-devel] [PATCH v3 00/23] Split BlockBackend off BDS with an axe Markus Armbruster
2014-09-16 18:12 ` [Qemu-devel] [PATCH v3 01/23] block: Split bdrv_new_root() off bdrv_new() Markus Armbruster
2014-09-18 14:44   ` Kevin Wolf
2014-09-16 18:12 ` [Qemu-devel] [PATCH v3 02/23] block: New BlockBackend Markus Armbruster
2014-09-19 16:17   ` Kevin Wolf
2014-09-19 17:13     ` Markus Armbruster
2014-09-20 19:04   ` Max Reitz
2014-09-22  6:56     ` Markus Armbruster
2014-09-16 18:12 ` [Qemu-devel] [PATCH v3 03/23] block: Connect BlockBackend to BlockDriverState Markus Armbruster
2014-09-20 19:08   ` Max Reitz
2014-09-22 14:59   ` Kevin Wolf
2014-09-22 16:34     ` Markus Armbruster
2014-09-23 11:45       ` Kevin Wolf
2014-09-23 12:52         ` Markus Armbruster
2014-09-23 13:36           ` Kevin Wolf
2014-09-23 15:29             ` Markus Armbruster
2014-09-25 21:54             ` Benoît Canet
2014-09-30 10:40   ` Kevin Wolf
2014-09-30 10:56     ` Markus Armbruster
2014-09-30 11:10       ` Kevin Wolf
2014-09-30 12:03         ` Markus Armbruster
2014-09-16 18:12 ` [Qemu-devel] [PATCH v3 04/23] block: Connect BlockBackend and DriveInfo Markus Armbruster
2014-09-20 19:38   ` Max Reitz
2014-09-22  7:33     ` Markus Armbruster
2014-09-22 17:15   ` Kevin Wolf
2014-09-23 10:57     ` Markus Armbruster
2014-09-16 18:12 ` [Qemu-devel] [PATCH v3 05/23] block: Code motion to get rid of stubs/blockdev.c Markus Armbruster
2014-09-20 19:46   ` Max Reitz
2014-09-23 12:15   ` Kevin Wolf
2014-09-16 18:12 ` [Qemu-devel] [PATCH v3 06/23] block: Make BlockBackend own its BlockDriverState Markus Armbruster
2014-09-20 20:10   ` Max Reitz
2014-09-23 13:12   ` Kevin Wolf
2014-09-23 16:24     ` Markus Armbruster
2014-09-16 18:12 ` [Qemu-devel] [PATCH v3 07/23] block: Eliminate bdrv_iterate(), use bdrv_next() Markus Armbruster
2014-09-20 20:29   ` Max Reitz
2014-09-25 11:25   ` Kevin Wolf
2014-09-16 18:12 ` [Qemu-devel] [PATCH v3 08/23] block: Eliminate BlockDriverState member device_name[] Markus Armbruster
2014-09-20 20:49   ` Max Reitz
2014-09-25 11:37   ` Kevin Wolf
2014-09-16 18:12 ` [Qemu-devel] [PATCH v3 09/23] block: Merge BlockBackend and BlockDriverState name spaces Markus Armbruster
2014-09-20 20:52   ` Max Reitz
2014-09-25 12:57   ` Kevin Wolf
2014-09-16 18:12 ` [Qemu-devel] [PATCH v3 10/23] block: Eliminate DriveInfo member bdrv, use blk_by_legacy_dinfo() Markus Armbruster
2014-09-17 11:24   ` Benoît Canet
2014-09-18  7:11     ` Markus Armbruster
2014-09-20 21:09   ` Max Reitz
2014-09-25 13:06   ` Kevin Wolf
2014-09-16 18:12 ` [Qemu-devel] [PATCH v3 11/23] block: Rename BlockDriverAIOCB* to BlockAIOCB* Markus Armbruster
2014-09-20 21:16   ` Max Reitz
2014-09-25 13:15   ` Kevin Wolf
2014-09-16 18:12 ` [Qemu-devel] [PATCH v3 12/23] virtio-blk: Drop redundant VirtIOBlock member conf Markus Armbruster
2014-09-17 11:31   ` Benoît Canet
2014-09-20 21:22   ` Max Reitz
2014-09-22  7:34     ` Markus Armbruster
2014-09-25 13:18   ` Kevin Wolf
2014-09-16 18:12 ` [Qemu-devel] [PATCH v3 13/23] virtio-blk: Rename VirtIOBlkConf variables to conf Markus Armbruster
2014-09-17 11:35   ` Benoît Canet
2014-09-18  7:17     ` Markus Armbruster
2014-09-20 21:25   ` Max Reitz
2014-09-26 13:22   ` Kevin Wolf
2014-09-16 18:12 ` [Qemu-devel] [PATCH v3 14/23] hw: Convert from BlockDriverState to BlockBackend, mostly Markus Armbruster
2014-09-20 22:01   ` Max Reitz
2014-09-22  7:42     ` Markus Armbruster
2014-09-26 14:26   ` Kevin Wolf
2014-09-26 15:00     ` Markus Armbruster
2014-09-16 18:12 ` [Qemu-devel] [PATCH v3 15/23] ide: Complete conversion from BlockDriverState to BlockBackend Markus Armbruster
2014-09-20 22:05   ` Max Reitz
2014-09-29 12:07   ` Kevin Wolf
2014-09-16 18:12 ` [Qemu-devel] [PATCH v3 16/23] pc87312: Drop unused members of PC87312State Markus Armbruster
2014-09-17 11:44   ` Benoît Canet
2014-09-20 22:07   ` Max Reitz
2014-09-29 12:08   ` Kevin Wolf
2014-09-16 18:12 ` [Qemu-devel] [PATCH v3 17/23] blockdev: Drop superfluous DriveInfo member id Markus Armbruster
2014-09-17 11:43   ` Benoît Canet
2014-09-22 12:58   ` Max Reitz
2014-09-29 12:13   ` Kevin Wolf
2014-09-16 18:12 ` [Qemu-devel] [PATCH v3 18/23] blockdev: Fix blockdev-add not to create IDE drive (0, 0) Markus Armbruster
2014-09-17 12:09   ` Benoît Canet
2014-09-22 13:05   ` Max Reitz
2014-09-29 12:24   ` Kevin Wolf
2014-09-29 13:05     ` Markus Armbruster [this message]
2014-09-29 15:34       ` Kevin Wolf
2014-09-30  6:21         ` Markus Armbruster
2014-09-29 13:12   ` Kevin Wolf
2014-09-29 14:04     ` Markus Armbruster
2014-09-16 18:12 ` [Qemu-devel] [PATCH v3 19/23] blockdev: Drop DriveInfo member enable_auto_del Markus Armbruster
2014-09-17 12:12   ` Benoît Canet
2014-09-22 13:16   ` Max Reitz
2014-09-22 15:06     ` Markus Armbruster
2014-09-22 15:12       ` Max Reitz
2014-09-16 18:12 ` [Qemu-devel] [PATCH v3 20/23] block/qapi: Convert qmp_query_block() to BlockBackend Markus Armbruster
2014-09-22 12:05   ` Benoît Canet
2014-09-22 13:22   ` Max Reitz
2014-09-29 13:26   ` Kevin Wolf
2014-09-16 18:12 ` [Qemu-devel] [PATCH v3 21/23] blockdev: Convert qmp_eject(), qmp_change_blockdev() " Markus Armbruster
2014-09-22 12:08   ` Benoît Canet
2014-09-22 13:26   ` Max Reitz
2014-09-22 15:07     ` Markus Armbruster
2014-09-30  9:55   ` Kevin Wolf
2014-09-16 18:12 ` [Qemu-devel] [PATCH v3 22/23] block: Lift device model API into BlockBackend Markus Armbruster
2014-09-22 12:13   ` Benoît Canet
2014-09-22 12:54     ` Markus Armbruster
2014-09-22 13:58   ` Max Reitz
2014-09-30 10:49   ` Kevin Wolf
2014-09-16 18:12 ` [Qemu-devel] [PATCH v3 23/23] block: Make device model's references to BlockBackend strong Markus Armbruster
2014-09-22 12:06   ` Benoît Canet
2014-09-22 14:06   ` Max Reitz
2014-09-22 15:08     ` Markus Armbruster
2014-09-30 11:01   ` Kevin Wolf
2014-09-30 12:04     ` Markus Armbruster

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=87fvfalgpo.fsf@blackfin.pond.sub.org \
    --to=armbru@redhat.com \
    --cc=benoit.canet@nodalink.com \
    --cc=famz@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=mreitz@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.