[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 13/32] hd-geometry: Clean up confusing use of prior
From: |
Markus Armbruster |
Subject: |
[Qemu-devel] [PATCH 13/32] hd-geometry: Clean up confusing use of prior translation hint |
Date: |
Fri, 29 Jun 2012 17:34:35 +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 to 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 40609a1..eaccbe9 100644
--- a/hw/hd-geometry.c
+++ b/hw/hd-geometry.c
@@ -123,6 +123,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);
@@ -131,12 +133,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;
@@ -144,10 +144,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 16/32] blockdev: Save geometry in DriveInfo, (continued)
- [Qemu-devel] [PATCH 16/32] blockdev: Save geometry in DriveInfo, Markus Armbruster, 2012/06/29
- [Qemu-devel] [PATCH 11/32] hd-geometry: Factor out guess_chs_for_size(), Markus Armbruster, 2012/06/29
- [Qemu-devel] [PATCH 02/32] fdc: Move floppy geometry guessing back from block.c, Markus Armbruster, 2012/06/29
- [Qemu-devel] [PATCH 14/32] hd-geometry: Cut out block layer translation middleman, Markus Armbruster, 2012/06/29
- [Qemu-devel] [PATCH 07/32] block: Factor bdrv_read_unthrottled() out of guess_disk_lchs(), Markus Armbruster, 2012/06/29
- [Qemu-devel] [PATCH 28/32] ide pc: Put hard disk info into CMOS only for hard disks, Markus Armbruster, 2012/06/29
- [Qemu-devel] [PATCH 15/32] ide pc: Cut out the block layer geometry middleman, Markus Armbruster, 2012/06/29
- [Qemu-devel] [PATCH 06/32] qtest: Add hard disk geometry test, Markus Armbruster, 2012/06/29
- [Qemu-devel] [PATCH 13/32] hd-geometry: Clean up confusing use of prior translation hint,
Markus Armbruster <=
- [Qemu-devel] [PATCH 10/32] hd-geometry: Unnest conditional in hd_geometry_guess(), Markus Armbruster, 2012/06/29
- [Qemu-devel] [PATCH 19/32] scsi-hd: qdev properties for disk geometry, Markus Armbruster, 2012/06/29
- [Qemu-devel] [PATCH 30/32] hd-geometry: Compute BIOS CHS translation in one place, Markus Armbruster, 2012/06/29
- [Qemu-devel] [PATCH 12/32] hd-geometry: Clean up gratuitous goto in hd_geometry_guess(), Markus Armbruster, 2012/06/29
- [Qemu-devel] [PATCH 31/32] blockdev: Drop redundant CHS validation for if=ide, Markus Armbruster, 2012/06/29
- [Qemu-devel] [PATCH 20/32] virtio-blk: qdev properties for disk geometry, Markus Armbruster, 2012/06/29
- [Qemu-devel] [PATCH 17/32] qdev: Introduce block geometry properties, Markus Armbruster, 2012/06/29
- [Qemu-devel] [PATCH 27/32] block: Geometry and translation hints are now useless, purge them, Markus Armbruster, 2012/06/29
- [Qemu-devel] [PATCH 08/32] hd-geometry: Move disk geometry guessing back from block.c, Markus Armbruster, 2012/06/29