From: Markus Armbruster <armbru@redhat.com>
To: arei.gonglei@huawei.com
Cc: peter.maydell@linaro.org, peter.huangpeng@huawei.com,
pbonzini@redhat.com, qemu-devel@nongnu.org, mst@redhat.com
Subject: Re: [Qemu-devel] [PATCH v2 2/5] bootdevice: add Error **errp argument for validate_bootdevices()
Date: Fri, 19 Dec 2014 18:17:55 +0100 [thread overview]
Message-ID: <878ui3y2ws.fsf@blackfin.pond.sub.org> (raw)
In-Reply-To: <1418813672-14768-3-git-send-email-arei.gonglei@huawei.com> (arei gonglei's message of "Wed, 17 Dec 2014 18:54:29 +0800")
<arei.gonglei@huawei.com> writes:
> From: Gonglei <arei.gonglei@huawei.com>
>
> We can use it for checking when we change traditional
> boot order dynamically and propagate error message
> to the monitor.
In case you need to respin for some other reason: consider replacing "We
can use it" by something like "Will be useful", to make it clearer that
we can't change boot order dynamically, yet.
>
> Signed-off-by: Gonglei <arei.gonglei@huawei.com>
> ---
> bootdevice.c | 10 +++++-----
> include/sysemu/sysemu.h | 2 +-
> vl.c | 15 +++++++++++++--
> 3 files changed, 19 insertions(+), 8 deletions(-)
>
> diff --git a/bootdevice.c b/bootdevice.c
> index aae4cac..184348e 100644
> --- a/bootdevice.c
> +++ b/bootdevice.c
> @@ -55,7 +55,7 @@ int qemu_boot_set(const char *boot_order)
> return boot_set_handler(boot_set_opaque, boot_order);
> }
>
> -void validate_bootdevices(const char *devices)
> +void validate_bootdevices(const char *devices, Error **errp)
> {
> /* We just do some generic consistency checks */
> const char *p;
> @@ -72,12 +72,12 @@ void validate_bootdevices(const char *devices)
> * features.
> */
> if (*p < 'a' || *p > 'p') {
> - fprintf(stderr, "Invalid boot device '%c'\n", *p);
> - exit(1);
> + error_setg(errp, "Invalid boot device '%c'", *p);
> + return;
> }
> if (bitmap & (1 << (*p - 'a'))) {
> - fprintf(stderr, "Boot device '%c' was given twice\n", *p);
> - exit(1);
> + error_setg(errp, "Boot device '%c' was given twice", *p);
> + return;
> }
> bitmap |= 1 << (*p - 'a');
> }
> diff --git a/include/sysemu/sysemu.h b/include/sysemu/sysemu.h
> index 84798ef..1382d63 100644
> --- a/include/sysemu/sysemu.h
> +++ b/include/sysemu/sysemu.h
> @@ -217,7 +217,7 @@ void device_add_bootindex_property(Object *obj, int32_t *bootindex,
> const char *name, const char *suffix,
> DeviceState *dev, Error **errp);
> void restore_boot_order(void *opaque);
> -void validate_bootdevices(const char *devices);
> +void validate_bootdevices(const char *devices, Error **errp);
>
> /* handler to set the boot_device order for a specific type of QEMUMachine */
> /* return 0 if success */
> diff --git a/vl.c b/vl.c
> index f665621..f0cdb63 100644
> --- a/vl.c
> +++ b/vl.c
> @@ -4087,16 +4087,27 @@ int main(int argc, char **argv, char **envp)
> if (opts) {
> char *normal_boot_order;
> const char *order, *once;
> + Error *local_err = NULL;
>
> order = qemu_opt_get(opts, "order");
> if (order) {
> - validate_bootdevices(order);
> + validate_bootdevices(order, &local_err);
> + if (local_err) {
> + error_report("%s", error_get_pretty(local_err));
> + error_free(local_err);
> + exit(1);
> + }
I wouldn't bother freeing stuff right before exit(). But it's not
wrong.
> boot_order = order;
> }
>
> once = qemu_opt_get(opts, "once");
> if (once) {
> - validate_bootdevices(once);
> + validate_bootdevices(once, &local_err);
> + if (local_err) {
> + error_report("%s", error_get_pretty(local_err));
> + error_free(local_err);
> + exit(1);
> + }
> normal_boot_order = g_strdup(boot_order);
> boot_order = once;
> qemu_register_reset(restore_boot_order, normal_boot_order);
Likewise.
next prev parent reply other threads:[~2014-12-19 17:18 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-12-17 10:54 [Qemu-devel] [PATCH v2 0/5] bootdevice: Refactor and improvement arei.gonglei
2014-12-17 10:54 ` [Qemu-devel] [PATCH v2 1/5] bootdevice: move code about bootorder from vl.c to bootdevice.c arei.gonglei
2014-12-19 17:14 ` Markus Armbruster
2014-12-17 10:54 ` [Qemu-devel] [PATCH v2 2/5] bootdevice: add Error **errp argument for validate_bootdevices() arei.gonglei
2014-12-19 17:17 ` Markus Armbruster [this message]
2014-12-20 1:50 ` Gonglei
2014-12-17 10:54 ` [Qemu-devel] [PATCH v2 3/5] bootdevice: add Error **errp argument for qemu_boot_set() arei.gonglei
2014-12-19 17:21 ` Markus Armbruster
2014-12-17 10:54 ` [Qemu-devel] [PATCH v2 4/5] bootdevice: add validate check " arei.gonglei
2014-12-17 10:54 ` [Qemu-devel] [PATCH v2 5/5] bootdevice: add Error **errp argument for QEMUBootSetHandler arei.gonglei
2014-12-19 17:24 ` Markus Armbruster
2014-12-20 1:52 ` Gonglei
2014-12-19 17:27 ` [Qemu-devel] [PATCH v2 0/5] bootdevice: Refactor and improvement Markus Armbruster
2014-12-20 1:36 ` Gonglei
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=878ui3y2ws.fsf@blackfin.pond.sub.org \
--to=armbru@redhat.com \
--cc=arei.gonglei@huawei.com \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peter.huangpeng@huawei.com \
--cc=peter.maydell@linaro.org \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.