From: Matthew Ogilvie <mmogilvi_qemu@miniinfo.net>
To: qemu-devel@nongnu.org
Cc: Matthew Ogilvie <mmogilvi_qemu@miniinfo.net>,
Markus Armbruster <armbru@redhat.com>
Subject: [Qemu-devel] [PATCH v2 3/6] vl: fix -hdachs/-hda argument order parsing issues
Date: Thu, 23 Aug 2012 00:24:40 -0600 [thread overview]
Message-ID: <1345703083-25322-4-git-send-email-mmogilvi_qemu@miniinfo.net> (raw)
In-Reply-To: <1345703083-25322-1-git-send-email-mmogilvi_qemu@miniinfo.net>
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 <mmogilvi_qemu@miniinfo.net>
---
Version 1 of this patch had the confusing subject
"Re: [Qemu-devel] [PATCH 0/3] Attempting to run Microport UNIX (ca 1987)".
This version reworks things a little to avoid duplicated code between
the "-hda" and "just a file" cases, based on Markus Armbruster's
comments.
An alternative approach would be to just get rid of the -hdachs
option, and require the use of -drive for anything that -hda can't
handle by itself.
================
vl.c | 39 ++++++++++++++++++---------------------
1 file changed, 18 insertions(+), 21 deletions(-)
diff --git a/vl.c b/vl.c
index 7c577fa..febfd62 100644
--- a/vl.c
+++ b/vl.c
@@ -2352,8 +2352,9 @@ int main(int argc, char **argv, char **envp)
char boot_devices[33] = "cad"; /* default to HD->floppy->CD-ROM */
DisplayState *ds;
DisplayChangeListener *dcl;
- 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;
@@ -2408,8 +2409,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;
@@ -2457,7 +2457,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;
@@ -2475,21 +2475,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:
@@ -2523,7 +2510,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)
@@ -2555,7 +2545,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
next prev parent reply other threads:[~2012-08-23 6:25 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-08-23 6:24 [Qemu-devel] [PATCH v2 0/6] Running Microport UNIX (ca 1987) Matthew Ogilvie
2012-08-23 6:24 ` [Qemu-devel] [PATCH v2 1/6] fix some debug printf format strings Matthew Ogilvie
2012-08-23 11:50 ` Andreas Färber
2012-08-23 6:24 ` [Qemu-devel] [PATCH v2 2/6] target-i386/translate.c: mov to/from crN/drN: ignore mod bits Matthew Ogilvie
2012-08-23 6:24 ` Matthew Ogilvie [this message]
2012-08-23 6:24 ` [Qemu-devel] [PATCH v2 4/6] qemu-options.hx: mention retrace= VGA option Matthew Ogilvie
2012-08-23 6:24 ` [Qemu-devel] [PATCH v2 5/6] vga: add some optional CGA compatibility hacks Matthew Ogilvie
2012-08-23 6:24 ` [Qemu-devel] [PATCH v2 6/6] i8259: add -no-spurious-interrupt-hack option Matthew Ogilvie
2012-08-24 5:40 ` Jan Kiszka
2012-08-24 8:05 ` Matthew Ogilvie
2012-08-24 8:16 ` Jan Kiszka
2012-08-27 13:55 ` Anthony Liguori
2012-08-27 14:23 ` Paolo Bonzini
2012-08-27 15:50 ` Anthony Liguori
2012-08-24 3:58 ` [Qemu-devel] [PATCH v2 0/6] Running Microport UNIX (ca 1987) malc
2012-08-24 5:44 ` Jan Kiszka
2012-08-24 7:19 ` Peter Maydell
2012-08-24 13:39 ` Paolo Bonzini
2012-08-24 13:46 ` Peter Maydell
2012-08-24 9:13 ` [Qemu-devel] [PATCH v3 0/3] Microport UNIX series (was: [PATCH v2 0/6] ...) Matthew Ogilvie
2012-08-24 9:13 ` [Qemu-devel] [PATCH 1/3] debug printf (cirrus_vga): fixup unintended format change Matthew Ogilvie
2012-08-24 9:13 ` [Qemu-devel] [PATCH 2/3] vga cga_hack=palette_blanking: narrower conditions for hack Matthew Ogilvie
2012-08-24 9:13 ` [Qemu-devel] [PATCH 3/3] doc: mention that -no-spurious-interrupt-hack doesn't work with KVM Matthew Ogilvie
2012-08-24 12:02 ` [Qemu-devel] [PATCH v2 0/6] Running Microport UNIX (ca 1987) malc
2012-08-24 12:10 ` Jan Kiszka
2012-08-24 12:18 ` malc
2012-08-27 13:50 ` Anthony Liguori
2012-08-27 14:09 ` malc
2012-08-27 14:17 ` Anthony Liguori
2012-08-27 14:38 ` malc
2012-08-27 15:11 ` Anthony Liguori
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=1345703083-25322-4-git-send-email-mmogilvi_qemu@miniinfo.net \
--to=mmogilvi_qemu@miniinfo.net \
--cc=armbru@redhat.com \
--cc=qemu-devel@nongnu.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).