All of lore.kernel.org
 help / color / mirror / Atom feed
From: Markus Armbruster <armbru@redhat.com>
To: qemu-devel@nongnu.org
Cc: kwolf@redhat.com, blauwirbel@gmail.com,
	stefanha@linux.vnet.ibm.com, pbonzini@redhat.com
Subject: [Qemu-devel] [PATCH v3 10/29] hd-geometry: Clean up confusing use of prior translation hint
Date: Tue, 10 Jul 2012 11:12:36 +0200	[thread overview]
Message-ID: <1341911575-7306-11-git-send-email-armbru@redhat.com> (raw)
In-Reply-To: <1341911575-7306-1-git-send-email-armbru@redhat.com>

When hd_geometry_guess() picks a geometry, it also picks the
appropriate translation, but only when the prior translation hint is
BIOS_ATA_TRANSLATION_AUTO.  Looks wrong, because such a prior
translation would be passed to the BIOS whether it's suitable for the
geometry or not.

Fortunately, that can't happen.  There are just two ways for the
translation hint to get set to something other than
BIOS_ATA_TRANSLATION_AUTO: drive_init() on behalf of -drive trans=...,
and hd_geometry_guess().  Both set it only when they also set a valid
geometry hint, i.e. one with a non-zero number of cylinders.

Since hd_geometry_guess() returns right away when it finds a valid
geometry hint, translation can only be BIOS_ATA_TRANSLATION_AUTO in
the remainder of the function.

Assert this, and simplify accordingly.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
---
 hw/hd-geometry.c |   17 +++++++----------
 1 files changed, 7 insertions(+), 10 deletions(-)

diff --git a/hw/hd-geometry.c b/hw/hd-geometry.c
index fb849a3..241aed9 100644
--- a/hw/hd-geometry.c
+++ b/hw/hd-geometry.c
@@ -132,6 +132,8 @@ void hd_geometry_guess(BlockDriverState *bs,
         return;
     }
 
+    assert(translation == BIOS_ATA_TRANSLATION_AUTO);
+
     if (guess_disk_lchs(bs, &cylinders, &heads, &secs) < 0) {
         /* no LCHS guess: use a standard physical disk geometry  */
         guess_chs_for_size(bs, pcyls, pheads, psecs);
@@ -140,12 +142,10 @@ void hd_geometry_guess(BlockDriverState *bs,
            translation was active, so a standard physical disk
            geometry is OK */
         guess_chs_for_size(bs, pcyls, pheads, psecs);
-        if (translation == BIOS_ATA_TRANSLATION_AUTO) {
-            bdrv_set_translation_hint(bs,
-                                      *pcyls * *pheads <= 131072
-                                      ? BIOS_ATA_TRANSLATION_LARGE
-                                      : BIOS_ATA_TRANSLATION_LBA);
-        }
+        bdrv_set_translation_hint(bs,
+                                  *pcyls * *pheads <= 131072
+                                  ? BIOS_ATA_TRANSLATION_LARGE
+                                  : BIOS_ATA_TRANSLATION_LBA);
     } else {
         /* LCHS guess with heads <= 16: use as physical geometry */
         *pcyls = cylinders;
@@ -153,10 +153,7 @@ void hd_geometry_guess(BlockDriverState *bs,
         *psecs = secs;
         /* disable any translation to be in sync with
            the logical geometry */
-        if (translation == BIOS_ATA_TRANSLATION_AUTO) {
-            bdrv_set_translation_hint(bs,
-                                      BIOS_ATA_TRANSLATION_NONE);
-        }
+        bdrv_set_translation_hint(bs, BIOS_ATA_TRANSLATION_NONE);
     }
     bdrv_set_geometry_hint(bs, *pcyls, *pheads, *psecs);
     trace_hd_geometry_guess(bs, *pcyls, *pheads, *psecs, translation);
-- 
1.7.6.5

  parent reply	other threads:[~2012-07-10  9:13 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-07-10  9:12 [Qemu-devel] [PATCH v3 00/29] Disk geometry cleanup Markus Armbruster
2012-07-10  9:12 ` [Qemu-devel] [PATCH v3 01/29] fdc: Move floppy geometry guessing back from block.c Markus Armbruster
2012-07-10  9:12 ` [Qemu-devel] [PATCH v3 02/29] vvfat: Fix partition table Markus Armbruster
2012-07-10  9:12 ` [Qemu-devel] [PATCH v3 03/29] vvfat: Do not clobber the user's geometry Markus Armbruster
2012-07-10  9:12 ` [Qemu-devel] [PATCH v3 04/29] qtest: Add hard disk geometry test Markus Armbruster
2012-07-10  9:12 ` [Qemu-devel] [PATCH v3 05/29] hd-geometry: Move disk geometry guessing back from block.c Markus Armbruster
2012-07-11 13:54   ` Kevin Wolf
2012-07-11 14:35     ` Markus Armbruster
2012-07-10  9:12 ` [Qemu-devel] [PATCH v3 06/29] hd-geometry: Add tracepoints Markus Armbruster
2012-07-10  9:12 ` [Qemu-devel] [PATCH v3 07/29] hd-geometry: Unnest conditional in hd_geometry_guess() Markus Armbruster
2012-07-10  9:12 ` [Qemu-devel] [PATCH v3 08/29] hd-geometry: Factor out guess_chs_for_size() Markus Armbruster
2012-07-10  9:12 ` [Qemu-devel] [PATCH v3 09/29] hd-geometry: Clean up gratuitous goto in hd_geometry_guess() Markus Armbruster
2012-07-10  9:12 ` Markus Armbruster [this message]
2012-07-10  9:12 ` [Qemu-devel] [PATCH v3 11/29] hd-geometry: Cut out block layer translation middleman Markus Armbruster
2012-07-10  9:12 ` [Qemu-devel] [PATCH v3 12/29] ide pc: Cut out the block layer geometry middleman Markus Armbruster
2012-07-10  9:12 ` [Qemu-devel] [PATCH v3 13/29] blockdev: Save geometry in DriveInfo Markus Armbruster
2012-07-10  9:12 ` [Qemu-devel] [PATCH v3 14/29] qdev: Introduce block geometry properties Markus Armbruster
2012-07-10  9:12 ` [Qemu-devel] [PATCH v3 15/29] hd-geometry: Switch to uint32_t to match BlockConf Markus Armbruster
2012-07-10  9:12 ` [Qemu-devel] [PATCH v3 16/29] scsi-hd: qdev properties for disk geometry Markus Armbruster
2012-07-10  9:12 ` [Qemu-devel] [PATCH v3 17/29] virtio-blk: " Markus Armbruster
2012-07-10  9:12 ` [Qemu-devel] [PATCH v3 18/29] ide: " Markus Armbruster
2012-07-10  9:12 ` [Qemu-devel] [PATCH v3 19/29] qtest: Cover " Markus Armbruster
2012-07-10  9:12 ` [Qemu-devel] [PATCH v3 20/29] qdev: Collect private helpers in one place Markus Armbruster
2012-07-10  9:12 ` [Qemu-devel] [PATCH v3 21/29] qdev: New property type chs-translation Markus Armbruster
2012-07-10  9:12 ` [Qemu-devel] [PATCH v3 22/29] ide: qdev property for BIOS CHS translation Markus Armbruster
2012-07-10  9:12 ` [Qemu-devel] [PATCH v3 23/29] qtest: Cover " Markus Armbruster
2012-07-10  9:12 ` [Qemu-devel] [PATCH v3 24/29] block: Geometry and translation hints are now useless, purge them Markus Armbruster
2012-07-10  9:12 ` [Qemu-devel] [PATCH v3 25/29] ide pc: Put hard disk info into CMOS only for hard disks Markus Armbruster
2012-07-10  9:12 ` [Qemu-devel] [PATCH v3 26/29] qtest: Test we don't put hard disk info into CMOS for a CD-ROM Markus Armbruster
2012-07-10  9:12 ` [Qemu-devel] [PATCH v3 27/29] hd-geometry: Compute BIOS CHS translation in one place Markus Armbruster
2012-07-10  9:12 ` [Qemu-devel] [PATCH v3 28/29] blockdev: Drop redundant CHS validation for if=ide Markus Armbruster
2012-07-10  9:12 ` [Qemu-devel] [PATCH v3 29/29] Relax IDE CHS limits from 16383, 16, 63 to 65535, 16, 255 Markus Armbruster
2012-07-11 15:40 ` [Qemu-devel] [PATCH v3 00/29] Disk geometry cleanup Kevin Wolf

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=1341911575-7306-11-git-send-email-armbru@redhat.com \
    --to=armbru@redhat.com \
    --cc=blauwirbel@gmail.com \
    --cc=kwolf@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@linux.vnet.ibm.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.