All of lore.kernel.org
 help / color / mirror / Atom feed
From: Eric Blake <eblake@redhat.com>
To: John Snow <jsnow@redhat.com>, qemu-block@nongnu.org
Cc: kwolf@redhat.com, armbru@redhat.com, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH v4 05/12] fdc: Throw an assertion on misconfigured fd_formats table
Date: Wed, 20 Jan 2016 14:23:51 -0700	[thread overview]
Message-ID: <569FFAE7.7020900@redhat.com> (raw)
In-Reply-To: <1453272694-17106-6-git-send-email-jsnow@redhat.com>

[-- Attachment #1: Type: text/plain, Size: 2991 bytes --]

On 01/19/2016 11:51 PM, John Snow wrote:
> pick_geometry is a convoluted function that makes it difficult to tell
> at a glance what QEMU's current behavior for choosing a floppy drive
> type is when it can't quite identify the diskette.
> 
> If drive type is NONE, it considers all drive types in the candidate
> geometry table to be a match, and saves the first such one as
> "first_match." If drive_type is not NONE, first_match is set to the first
> candidate geometry in the table that matched our specific drive type.

That seems subtly different than how I read the code (it is possible to
exit the for loop with match == 0 but first_match == -1, if nb_sectors
is right for the very first entry; but your statement implies that
"first_match" will always be non-negative after the loop). Maybe a
better wording would be:

The code starts iterating over all entries in the table, and if our
specific drive type matches a row in the table, then either "match" is
set to that entry (an exact match) and the loop exits, or "first_match"
will be non-negative (the first such entry that shares the same drive
type), and the loop continues.  If our specific drive type is NONE, then
all drive types in the candidate geometry table are considered.  After
iteration, if "match" was not set, we fall back to "first_match".

> 
> This means:

This means that either "match" was set, or we exited the loop without an
exact match, in which case:

> 
> - If drive type is NONE, the default is truly fd_formats[0], a 1.44MB
>   type, because first_match will always get set to the first item.

- If drive type is NONE, the default is truly fd_formats[0], a 1.44MB
type, because "first_match" will always get set to the first item.

> 
> - If drive type is not NONE, pick_geometry gets fussier and attempts to
>   only pick a geometry if it matches our drive type. In this case,
>   first_match must always be set because all known drive types have
>   candidate geometries listed in the table.

- If drive type is not NONE, pick_geometry() was fussier and only looked
at rows that match our drive type.  However, since all possible drive
types are represented in the table, we still know that "first_match" was
set.

> 
> - If drive type is not NONE and the fd_formats table lists no options for
>   our drive type, we choose fd_formats[1], an incomprehensibly bizarre
>   choice that can never happen anyway.
> 
> 
> Correct this: If first_match is -1, it can ONLY mean we didn't edit our
> fd_formats table correctly. Throw an assertion instead.

But this part is right.

> 
> Signed-off-by: John Snow <jsnow@redhat.com>
> ---
>  hw/block/fdc.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)

The code change itself is correct, so with an improved commit message,
Reviewed-by: Eric Blake <eblake@redhat.com>

-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 604 bytes --]

  reply	other threads:[~2016-01-20 21:24 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-01-20  6:51 [Qemu-devel] [PATCH v4 00/12] fdc: fix 2.88mb floppy diskette support John Snow
2016-01-20  6:51 ` [Qemu-devel] [PATCH v4 01/12] fdc: move pick_geometry John Snow
2016-01-20  6:51 ` [Qemu-devel] [PATCH v4 02/12] fdc: reduce number of pick_geometry arguments John Snow
2016-01-20 20:30   ` Eric Blake
2016-01-20  6:51 ` [Qemu-devel] [PATCH v4 03/12] fdc: add drive type qapi enum John Snow
2016-01-20 20:33   ` Eric Blake
2016-01-20 20:49     ` John Snow
2016-01-20  6:51 ` [Qemu-devel] [PATCH v4 04/12] fdc: add disk field John Snow
2016-01-20 20:35   ` Eric Blake
2016-01-20 20:59     ` John Snow
2016-01-20  6:51 ` [Qemu-devel] [PATCH v4 05/12] fdc: Throw an assertion on misconfigured fd_formats table John Snow
2016-01-20 21:23   ` Eric Blake [this message]
2016-01-20 21:33     ` John Snow
2016-01-20  6:51 ` [Qemu-devel] [PATCH v4 06/12] fdc: add pick_drive John Snow
2016-01-20 22:30   ` Eric Blake
2016-01-20  6:51 ` [Qemu-devel] [PATCH v4 07/12] fdc: Add fallback option John Snow
2016-01-20 22:36   ` Eric Blake
2016-01-20  6:51 ` [Qemu-devel] [PATCH v4 08/12] fdc: add drive type option John Snow
2016-01-20 22:43   ` Eric Blake
2016-01-20 23:04     ` John Snow
2016-01-20  6:51 ` [Qemu-devel] [PATCH v4 09/12] fdc: add physical disk sizes John Snow
2016-01-20 22:48   ` Eric Blake
2016-01-20 23:06     ` John Snow
2016-01-20  6:51 ` [Qemu-devel] [PATCH v4 10/12] fdc: rework pick_geometry John Snow
2016-01-20 23:45   ` Eric Blake
2016-01-21 20:14     ` John Snow
2016-01-21 20:58       ` Eric Blake
2016-01-20  6:51 ` [Qemu-devel] [PATCH v4 11/12] qtest/fdc: Support for 2.88MB drives John Snow
2016-01-21 17:40   ` Eric Blake
2016-01-20  6:51 ` [Qemu-devel] [PATCH v4 12/12] fdc: change auto fallback drive for ISA FDC to 288 John Snow
2016-01-21 17:41   ` Eric Blake
2016-01-20  7:55 ` [Qemu-devel] [Qemu-block] [PATCH v4 00/12] fdc: fix 2.88mb floppy diskette support Denis V. Lunev
2016-01-20 19:40   ` John Snow
2016-01-20 19:43     ` Denis V. Lunev
2016-01-21 10:53     ` Roman Kagan
2016-01-21 14:59       ` John Snow
2016-01-21 15:37         ` Roman Kagan

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=569FFAE7.7020900@redhat.com \
    --to=eblake@redhat.com \
    --cc=armbru@redhat.com \
    --cc=jsnow@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=qemu-block@nongnu.org \
    --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 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.