[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v7 02/10] vl: fix -hdachs/-hda argument order parsin
From: |
Matthew Ogilvie |
Subject: |
[Qemu-devel] [PATCH v7 02/10] vl: fix -hdachs/-hda argument order parsing issues |
Date: |
Sun, 25 Nov 2012 14:51:38 -0700 |
Without this patch, the -hdachs argument had to occur either
BEFORE the corresponding "-hda" option, or AFTER the plain
disk image name (if neither -hda nor -drive is used). Otherwise
it would effectively be ignored.
Option -hdachs still has no effect on -drive, but that seems best.
Signed-off-by: Matthew Ogilvie <address@hidden>
---
vl.c | 39 ++++++++++++++++++---------------------
1 file changed, 18 insertions(+), 21 deletions(-)
diff --git a/vl.c b/vl.c
index c8e9c78..c6c7d95 100644
--- a/vl.c
+++ b/vl.c
@@ -2533,8 +2533,9 @@ int main(int argc, char **argv, char **envp)
const char *kernel_filename, *kernel_cmdline;
char boot_devices[33] = "cad"; /* default to HD->floppy->CD-ROM */
DisplayState *ds;
- int cyls, heads, secs, translation;
- QemuOpts *hda_opts = NULL, *opts, *machine_opts;
+ char hdachs_params[512]; /* save -hdachs to apply to later -hda */
+ QemuOpts *hda_opts = NULL; /* save -hda to be modified by later -hdachs */
+ QemuOpts *opts, *machine_opts;
QemuOptsList *olist;
int optind;
const char *optarg;
@@ -2589,8 +2590,7 @@ int main(int argc, char **argv, char **envp)
cpu_model = NULL;
ram_size = 0;
snapshot = 0;
- cyls = heads = secs = 0;
- translation = BIOS_ATA_TRANSLATION_AUTO;
+ snprintf(hdachs_params, sizeof(hdachs_params), "%s", HD_OPTS);
for (i = 0; i < MAX_NODES; i++) {
node_mem[i] = 0;
@@ -2638,7 +2638,7 @@ int main(int argc, char **argv, char **envp)
if (optind >= argc)
break;
if (argv[optind][0] != '-') {
- hda_opts = drive_add(IF_DEFAULT, 0, argv[optind++], HD_OPTS);
+ hda_opts = drive_add(IF_DEFAULT, 0, argv[optind++], hdachs_params);
} else {
const QEMUOption *popt;
@@ -2661,21 +2661,8 @@ int main(int argc, char **argv, char **envp)
cpu_model = optarg;
break;
case QEMU_OPTION_hda:
- {
- char buf[256];
- if (cyls == 0)
- snprintf(buf, sizeof(buf), "%s", HD_OPTS);
- else
- snprintf(buf, sizeof(buf),
- "%s,cyls=%d,heads=%d,secs=%d%s",
- HD_OPTS , cyls, heads, secs,
- translation == BIOS_ATA_TRANSLATION_LBA ?
- ",trans=lba" :
- translation == BIOS_ATA_TRANSLATION_NONE ?
- ",trans=none" : "");
- drive_add(IF_DEFAULT, 0, optarg, buf);
- break;
- }
+ hda_opts = drive_add(IF_DEFAULT, 0, optarg, hdachs_params);
+ break;
case QEMU_OPTION_hdb:
case QEMU_OPTION_hdc:
case QEMU_OPTION_hdd:
@@ -2709,7 +2696,10 @@ int main(int argc, char **argv, char **envp)
break;
case QEMU_OPTION_hdachs:
{
+ int cyls, heads, secs, translation;
const char *p;
+ cyls = heads = secs = 0;
+ translation = BIOS_ATA_TRANSLATION_AUTO;
p = optarg;
cyls = strtol(p, (char **)&p, 0);
if (cyls < 1 || cyls > 16383)
@@ -2741,7 +2731,14 @@ int main(int argc, char **argv, char **envp)
fprintf(stderr, "qemu: invalid physical CHS format\n");
exit(1);
}
- if (hda_opts != NULL) {
+ snprintf(hdachs_params, sizeof(hdachs_params),
+ "%s,cyls=%d,heads=%d,secs=%d%s",
+ HD_OPTS , cyls, heads, secs,
+ translation == BIOS_ATA_TRANSLATION_LBA ?
+ ",trans=lba" :
+ translation == BIOS_ATA_TRANSLATION_NONE ?
+ ",trans=none" : "");
+ if (hda_opts != NULL) {
char num[16];
snprintf(num, sizeof(num), "%d", cyls);
qemu_opt_set(hda_opts, "cyls", num);
--
1.7.10.2.484.gcd07cc5
- [Qemu-devel] [PATCH v7 00/10] i8254, i8259 and running Microport UNIX (ca 1987), Matthew Ogilvie, 2012/11/25
- [Qemu-devel] [PATCH v7 01/10] fix some debug printf format strings, Matthew Ogilvie, 2012/11/25
- [Qemu-devel] [PATCH v7 05/10] i8259: fix so that dropping IRQ level always clears the interrupt request, Matthew Ogilvie, 2012/11/25
- [Qemu-devel] [PATCH v7 07/10] i8254/i8259: workaround to make IRQ0 work like before, Matthew Ogilvie, 2012/11/25
- [Qemu-devel] [PATCH v7 02/10] vl: fix -hdachs/-hda argument order parsing issues,
Matthew Ogilvie <=
- [Qemu-devel] [PATCH v7 08/10] i8254: add comments about fixing timings, Matthew Ogilvie, 2012/11/25
- [Qemu-devel] [PATCH v7 03/10] qemu-options.hx: mention retrace= VGA option, Matthew Ogilvie, 2012/11/25
- [Qemu-devel] [PATCH v7 04/10] vga: add some optional CGA compatibility hacks, Matthew Ogilvie, 2012/11/25
- [Qemu-devel] [PATCH v7 06/10] i8259: refactor pic_set_irq level logic, Matthew Ogilvie, 2012/11/25
- [Qemu-devel] [PATCH v7 09/10] i8254: prepare for migration compatibility with future fixes, Matthew Ogilvie, 2012/11/25
- [Qemu-devel] [PATCH v7 10/10] FOR FUTURE: fix i8254/i8259 IRQ0 line logic, Matthew Ogilvie, 2012/11/25