[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PULL 29/31] qemu-option: clean up id vs. list->merge_lists
From: |
Markus Armbruster |
Subject: |
Re: [PULL 29/31] qemu-option: clean up id vs. list->merge_lists |
Date: |
Mon, 25 Jan 2021 08:42:13 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux) |
Paolo Bonzini <pbonzini@redhat.com> writes:
> Looking at all merge-lists QemuOptsList, here is how they access their
> QemuOpts:
>
> reopen_opts in qemu-io-cmds.c ("qemu-img reopen -o")
> qemu_opts_find(&reopen_opts, NULL)
>
> empty_opts in qemu-io.c ("qemu-io open -o")
> qemu_opts_find(&empty_opts, NULL)
>
> qemu_rtc_opts ("-rtc")
> qemu_find_opts_singleton("rtc")
>
> qemu_machine_opts ("-M")
> qemu_find_opts_singleton("machine")
>
> qemu_action_opts ("-name")
Pasto: it's "-action".
> qemu_opts_foreach->process_runstate_actions
>
> qemu_boot_opts ("-boot")
> in hw/nvram/fw_cfg.c and hw/s390x/ipl.c:
> QTAILQ_FIRST(&qemu_find_opts("bootopts")->head)
> in softmmu/vl.c:
> qemu_opts_find(qemu_find_opts("boot-opts"), NULL)
>
> qemu_name_opts ("-name")
> qemu_opts_foreach->parse_name
> parse_name does not use id
>
> qemu_mem_opts ("-m")
> qemu_find_opts_singleton("memory")
>
> qemu_icount_opts ("-icount")
> qemu_opts_foreach->do_configure_icount
> do_configure_icount->icount_configure
> icount_configure does not use id
>
> qemu_smp_opts ("-smp")
> qemu_opts_find(qemu_find_opts("smp-opts"), NULL)
>
> qemu_spice_opts ("-spice")
> QTAILQ_FIRST(&qemu_spice_opts.head)
>
> i.e. they don't need an id. Sometimes its presence is ignored
> (e.g. when using qemu_opts_foreach), sometimes all the options
> with the id are skipped, sometimes only the first option on the
Let's insert
(when using qemu_find_opts_singleton() or qemu_opts_find(list, NULL))
right after skipped, and
> command line is considered. -boot does two different things
(when using QTAILQ_FIRST)
right after considered.
> depending on who's looking at the options.
>
> With this patch we just forbid id on merge-lists QemuOptsLists; if the
> command line still works, it has the same semantics as before.
>
> qemu_opts_create's fail_if_exists parameter is now unnecessary:
>
> - it is unused if id is NULL
>
> - opts_parse only passes false if reached from qemu_opts_set_defaults,
> in which case this patch enforces that id must be NULL
>
> - other callers that can pass a non-NULL id always set it to true
>
> Assert that it is true in the only case where "fail_if_exists" matters,
> i.e. "id && !lists->merge_lists". This means that if an id is present,
> duplicates are always forbidden, which was already the status quo.
>
> Discounting the case that aborts as it's not user-controlled (it's
> "just" a matter of inspecting qemu_opts_create callers), the paths
> through qemu_opts_create can be summarized as:
>
> - merge_lists = true: singleton opts with NULL id; non-NULL id fails
>
> - merge_lists = false: always return new opts; non-NULL id fails if dup
>
> Reviewed-by: Kevin Wolf <kwolf@redhat.com>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
- [PULL 24/31] meson.build: Detect bzip2 program, (continued)
- [PULL 24/31] meson.build: Detect bzip2 program, Paolo Bonzini, 2021/01/23
- [PULL 22/31] meson: Add a section header for library dependencies, Paolo Bonzini, 2021/01/23
- [PULL 25/31] acceptance: switch to QMP change-vnc-password command, Paolo Bonzini, 2021/01/23
- [PULL 26/31] hmp: remove "change vnc TARGET" command, Paolo Bonzini, 2021/01/23
- [PULL 11/31] slirp: update to git master, Paolo Bonzini, 2021/01/23
- [PULL 20/31] meson: Display block layer information altogether, Paolo Bonzini, 2021/01/23
- [PULL 21/31] meson: Display crypto-related information altogether, Paolo Bonzini, 2021/01/23
- [PULL 23/31] meson.build: Declare global edk2_targets / install_edk2_blobs variables, Paolo Bonzini, 2021/01/23
- [PULL 27/31] qmp: remove deprecated "change" command, Paolo Bonzini, 2021/01/23
- [PULL 29/31] qemu-option: clean up id vs. list->merge_lists, Paolo Bonzini, 2021/01/23
- Re: [PULL 29/31] qemu-option: clean up id vs. list->merge_lists,
Markus Armbruster <=
- [PULL 28/31] vnc: support "-vnc help", Paolo Bonzini, 2021/01/23
- [PULL 31/31] qemu-option: warn for short-form boolean options, Paolo Bonzini, 2021/01/23
- [PULL 30/31] qemu-option: move help handling to get_opt_name_value, Paolo Bonzini, 2021/01/23
- Re: [PULL 00/31] Misc patches for 2020-01-21, no-reply, 2021/01/23
- Re: [PULL 00/31] Misc patches for 2020-01-21, Peter Maydell, 2021/01/23