[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v3 10/29] hd-geometry: Clean up confusing use of pri
From: |
Markus Armbruster |
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 |
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 <address@hidden>
---
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
- [Qemu-devel] [PATCH v3 00/29] Disk geometry cleanup, Markus Armbruster, 2012/07/10
- [Qemu-devel] [PATCH v3 04/29] qtest: Add hard disk geometry test, Markus Armbruster, 2012/07/10
- [Qemu-devel] [PATCH v3 09/29] hd-geometry: Clean up gratuitous goto in hd_geometry_guess(), Markus Armbruster, 2012/07/10
- [Qemu-devel] [PATCH v3 06/29] hd-geometry: Add tracepoints, Markus Armbruster, 2012/07/10
- [Qemu-devel] [PATCH v3 02/29] vvfat: Fix partition table, Markus Armbruster, 2012/07/10
- [Qemu-devel] [PATCH v3 08/29] hd-geometry: Factor out guess_chs_for_size(), Markus Armbruster, 2012/07/10
- [Qemu-devel] [PATCH v3 01/29] fdc: Move floppy geometry guessing back from block.c, Markus Armbruster, 2012/07/10
- [Qemu-devel] [PATCH v3 11/29] hd-geometry: Cut out block layer translation middleman, Markus Armbruster, 2012/07/10
- [Qemu-devel] [PATCH v3 10/29] hd-geometry: Clean up confusing use of prior translation hint,
Markus Armbruster <=
- [Qemu-devel] [PATCH v3 03/29] vvfat: Do not clobber the user's geometry, Markus Armbruster, 2012/07/10
- [Qemu-devel] [PATCH v3 07/29] hd-geometry: Unnest conditional in hd_geometry_guess(), Markus Armbruster, 2012/07/10
- [Qemu-devel] [PATCH v3 14/29] qdev: Introduce block geometry properties, Markus Armbruster, 2012/07/10
- [Qemu-devel] [PATCH v3 15/29] hd-geometry: Switch to uint32_t to match BlockConf, Markus Armbruster, 2012/07/10
- [Qemu-devel] [PATCH v3 12/29] ide pc: Cut out the block layer geometry middleman, Markus Armbruster, 2012/07/10
- [Qemu-devel] [PATCH v3 21/29] qdev: New property type chs-translation, Markus Armbruster, 2012/07/10
- [Qemu-devel] [PATCH v3 13/29] blockdev: Save geometry in DriveInfo, Markus Armbruster, 2012/07/10
- [Qemu-devel] [PATCH v3 18/29] ide: qdev properties for disk geometry, Markus Armbruster, 2012/07/10
- [Qemu-devel] [PATCH v3 16/29] scsi-hd: qdev properties for disk geometry, Markus Armbruster, 2012/07/10
- [Qemu-devel] [PATCH v3 17/29] virtio-blk: qdev properties for disk geometry, Markus Armbruster, 2012/07/10