[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 45/48] block: Handle "rechs" and "large" translation
From: |
Andreas Färber |
Subject: |
[Qemu-devel] [PULL 45/48] block: Handle "rechs" and "large" translation options |
Date: |
Mon, 10 Feb 2014 19:37:02 +0100 |
From: Paolo Bonzini <address@hidden>
Sure, CHS translation is an obscure topic, and legacy options for
hard-disk geometries are obscure as well. But since QEMU does nothing
with it except telling the BIOS, and since there "large" and "rechs"
are listed in the enums, parsing them seems to be the bare minimum.
Acked-by: Stefan Hajnoczi <address@hidden>
Reviewed-by: Igor Mammedov <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>
Signed-off-by: Andreas Färber <address@hidden>
---
blockdev.c | 4 ++++
hw/core/qdev-properties.c | 8 +++++---
vl.c | 22 ++++++++++++++++------
3 files changed, 25 insertions(+), 9 deletions(-)
diff --git a/blockdev.c b/blockdev.c
index 36ceece..d71f815 100644
--- a/blockdev.c
+++ b/blockdev.c
@@ -776,6 +776,10 @@ DriveInfo *drive_init(QemuOpts *all_opts,
BlockInterfaceType block_default_type)
translation = BIOS_ATA_TRANSLATION_NONE;
} else if (!strcmp(value, "lba")) {
translation = BIOS_ATA_TRANSLATION_LBA;
+ } else if (!strcmp(value, "large")) {
+ translation = BIOS_ATA_TRANSLATION_LARGE;
+ } else if (!strcmp(value, "rechs")) {
+ translation = BIOS_ATA_TRANSLATION_RECHS;
} else if (!strcmp(value, "auto")) {
translation = BIOS_ATA_TRANSLATION_AUTO;
} else {
diff --git a/hw/core/qdev-properties.c b/hw/core/qdev-properties.c
index 2c3a756..76a0c4d 100644
--- a/hw/core/qdev-properties.c
+++ b/hw/core/qdev-properties.c
@@ -469,9 +469,11 @@ PropertyInfo qdev_prop_losttickpolicy = {
/* --- BIOS CHS translation */
static const char *bios_chs_trans_table[] = {
- [BIOS_ATA_TRANSLATION_AUTO] = "auto",
- [BIOS_ATA_TRANSLATION_NONE] = "none",
- [BIOS_ATA_TRANSLATION_LBA] = "lba",
+ [BIOS_ATA_TRANSLATION_AUTO] = "auto",
+ [BIOS_ATA_TRANSLATION_NONE] = "none",
+ [BIOS_ATA_TRANSLATION_LBA] = "lba",
+ [BIOS_ATA_TRANSLATION_LARGE] = "large",
+ [BIOS_ATA_TRANSLATION_RECHS] = "rechs",
};
PropertyInfo qdev_prop_bios_chs_trans = {
diff --git a/vl.c b/vl.c
index 0f7d31f..071372d 100644
--- a/vl.c
+++ b/vl.c
@@ -3073,14 +3073,19 @@ int main(int argc, char **argv, char **envp)
goto chs_fail;
if (*p == ',') {
p++;
- if (!strcmp(p, "none"))
+ if (!strcmp(p, "large")) {
+ translation = BIOS_ATA_TRANSLATION_LARGE;
+ } else if (!strcmp(p, "rechs")) {
+ translation = BIOS_ATA_TRANSLATION_RECHS;
+ } else if (!strcmp(p, "none")) {
translation = BIOS_ATA_TRANSLATION_NONE;
- else if (!strcmp(p, "lba"))
+ } else if (!strcmp(p, "lba")) {
translation = BIOS_ATA_TRANSLATION_LBA;
- else if (!strcmp(p, "auto"))
+ } else if (!strcmp(p, "auto")) {
translation = BIOS_ATA_TRANSLATION_AUTO;
- else
+ } else {
goto chs_fail;
+ }
} else if (*p != '\0') {
chs_fail:
fprintf(stderr, "qemu: invalid physical CHS format\n");
@@ -3094,10 +3099,15 @@ int main(int argc, char **argv, char **envp)
qemu_opt_set(hda_opts, "heads", num);
snprintf(num, sizeof(num), "%d", secs);
qemu_opt_set(hda_opts, "secs", num);
- if (translation == BIOS_ATA_TRANSLATION_LBA)
+ if (translation == BIOS_ATA_TRANSLATION_LARGE) {
+ qemu_opt_set(hda_opts, "trans", "large");
+ } else if (translation == BIOS_ATA_TRANSLATION_RECHS) {
+ qemu_opt_set(hda_opts, "trans", "rechs");
+ } else if (translation == BIOS_ATA_TRANSLATION_LBA) {
qemu_opt_set(hda_opts, "trans", "lba");
- if (translation == BIOS_ATA_TRANSLATION_NONE)
+ } else if (translation == BIOS_ATA_TRANSLATION_NONE) {
qemu_opt_set(hda_opts, "trans", "none");
+ }
}
}
break;
--
1.8.4.5
- [Qemu-devel] [PULL 34/48] qtest: Don't segfault with invalid -qtest option, (continued)
- [Qemu-devel] [PULL 34/48] qtest: Don't segfault with invalid -qtest option, Andreas Färber, 2014/02/10
- [Qemu-devel] [PULL 35/48] qapi: Add size parser to StringInputVisitor, Andreas Färber, 2014/02/10
- [Qemu-devel] [PULL 39/48] qdev: Legacy properties are just strings, Andreas Färber, 2014/02/10
- [Qemu-devel] [PULL 36/48] qdev: Sizes are now parsed by StringInputVisitor, Andreas Färber, 2014/02/10
- [Qemu-devel] [PULL 37/48] qdev: Remove legacy parsers for hex8/32/64, Andreas Färber, 2014/02/10
- [Qemu-devel] [PULL 46/48] qdev: Add enum property types to QAPI schema, Andreas Färber, 2014/02/10
- [Qemu-devel] [PULL 43/48] qdev: Remove most legacy printers, Andreas Färber, 2014/02/10
- [Qemu-devel] [PULL 42/48] qdev: Use human mode in "info qtree", Andreas Färber, 2014/02/10
- [Qemu-devel] [PULL 48/48] qapi: Refine human printing of sizes, Andreas Färber, 2014/02/10
- [Qemu-devel] [PULL 41/48] qapi: Add human mode to StringOutputVisitor, Andreas Färber, 2014/02/10
- [Qemu-devel] [PULL 45/48] block: Handle "rechs" and "large" translation options,
Andreas Färber <=
- [Qemu-devel] [PULL 38/48] qdev: Legacy properties are now read-only, Andreas Färber, 2014/02/10
- [Qemu-devel] [PULL 47/48] qdev: Use QAPI type names for properties, Andreas Färber, 2014/02/10
- [Qemu-devel] [PULL 40/48] qdev: Inline qdev_prop_parse(), Andreas Färber, 2014/02/10
- [Qemu-devel] [PULL 44/48] qdev: Remove hex8/32/64 property types, Andreas Färber, 2014/02/10
- Re: [Qemu-devel] [PULL 00/48] QOM devices patch queue 2014-02-10, Peter Maydell, 2014/02/15