mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-05 00:33:55 -06:00
Block layer patches
-----BEGIN PGP SIGNATURE----- iQIcBAABAgAGBQJaoqOgAAoJEH8JsnLIjy/W2MMP/1gj7CJgtSG9wIzyBHjSWQMy ofXEgRJO9t/smfUMlH2NdrW8P2LvYcmqOsEBkLJzCtl48fPexwtI/cunzVjutXcf VlpqKz/8uN4C9D6m8FN/5kKf65l+tnVqnCoJgwafY5uT7jmoC8LF1xO2jo8a+lJd 0Dv6RxJUQq/tDR6OvO6aW4EzbOUcD4wkLvi/uz8+ZjV1BLSLlpdudejr6W9TnJY/ EGFedbxqjPV7fIvMbodbFp0Ie8Aw0WEL8ttERboeR4jbA/o+PZVGpPtHsr/4V6QO Pgh6vH2rGavxFzwuCWEGhlLKGx66CGqqdTknm6lNJchepCvcfoYxjOPZv9FCaMUs enC/x43xSkCmkwBwKKxpXqu1vS5nGdMebAwRjstSIplypjv2YOwS1AiU5snaDwuk t9Gjkw0Wka5nySuYi43H2RPXmlWbh4T8DfQ6pOyJGvXGjm8t+f5BTaMtSWn6Iq2W F6r1UezQJBDnUbpFgsRg4AP+htPGDHgsOg7KzCCd/lBHwbjX7dkQlAYbBZZ2OBF+ wQN5olDR6jsKIy2IlARNgNweZHW5UQa1cc+7HlVNNE5tqtkjo7aWPk/LhEzBCIHg sWG3VH2y3lQlaMzYh1v+jnGrFoq1ZJU4sbjaxvQX8czjmaQvPtbzKuZAovQ4pGwa g0SrWP6p9yLo0LXLuXBP =WDF4 -----END PGP SIGNATURE----- Merge remote-tracking branch 'remotes/kevin/tags/for-upstream' into staging Block layer patches # gpg: Signature made Fri 09 Mar 2018 15:09:20 GMT # gpg: using RSA key 7F09B272C88F2FD6 # gpg: Good signature from "Kevin Wolf <kwolf@redhat.com>" # Primary key fingerprint: DC3D EB15 9A9A F95D 3D74 56FE 7F09 B272 C88F 2FD6 * remotes/kevin/tags/for-upstream: (56 commits) qemu-iotests: fix 203 migration completion race iotests: Tweak 030 in order to trigger a race condition with parallel jobs iotests: Skip test for ENOMEM error iotests: Mark all tests executable iotests: Test creating overlay when guest running qemu-iotests: Test ssh image creation over QMP qemu-iotests: Test qcow2 over file image creation with QMP block: Fail bdrv_truncate() with negative size file-posix: Fix no-op bdrv_truncate() with falloc preallocation ssh: Support .bdrv_co_create ssh: Pass BlockdevOptionsSsh to connect_to_ssh() ssh: QAPIfy host-key-check option ssh: Use QAPI BlockdevOptionsSsh object sheepdog: Support .bdrv_co_create sheepdog: QAPIfy "redundancy" create option nfs: Support .bdrv_co_create nfs: Use QAPI options in nfs_client_open() rbd: Use qemu_rbd_connect() in qemu_rbd_do_create() rbd: Assign s->snap/image_name in qemu_rbd_open() rbd: Support .bdrv_co_create ... Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
12c06d6f96
60 changed files with 3597 additions and 987 deletions
|
@ -1007,14 +1007,23 @@ void qemu_opts_absorb_qdict(QemuOpts *opts, QDict *qdict, Error **errp)
|
|||
}
|
||||
|
||||
/*
|
||||
* Convert from QemuOpts to QDict.
|
||||
* The QDict values are of type QString.
|
||||
* Convert from QemuOpts to QDict. The QDict values are of type QString.
|
||||
*
|
||||
* If @list is given, only add those options to the QDict that are contained in
|
||||
* the list. If @del is true, any options added to the QDict are removed from
|
||||
* the QemuOpts, otherwise they remain there.
|
||||
*
|
||||
* If two options in @opts have the same name, they are processed in order
|
||||
* so that the last one wins (consistent with the reverse iteration in
|
||||
* qemu_opt_find()), but all of them are deleted if @del is true.
|
||||
*
|
||||
* TODO We'll want to use types appropriate for opt->desc->type, but
|
||||
* this is enough for now.
|
||||
*/
|
||||
QDict *qemu_opts_to_qdict(QemuOpts *opts, QDict *qdict)
|
||||
QDict *qemu_opts_to_qdict_filtered(QemuOpts *opts, QDict *qdict,
|
||||
QemuOptsList *list, bool del)
|
||||
{
|
||||
QemuOpt *opt;
|
||||
QemuOpt *opt, *next;
|
||||
|
||||
if (!qdict) {
|
||||
qdict = qdict_new();
|
||||
|
@ -1022,12 +1031,35 @@ QDict *qemu_opts_to_qdict(QemuOpts *opts, QDict *qdict)
|
|||
if (opts->id) {
|
||||
qdict_put_str(qdict, "id", opts->id);
|
||||
}
|
||||
QTAILQ_FOREACH(opt, &opts->head, next) {
|
||||
QTAILQ_FOREACH_SAFE(opt, &opts->head, next, next) {
|
||||
if (list) {
|
||||
QemuOptDesc *desc;
|
||||
bool found = false;
|
||||
for (desc = list->desc; desc->name; desc++) {
|
||||
if (!strcmp(desc->name, opt->name)) {
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!found) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
qdict_put_str(qdict, opt->name, opt->str);
|
||||
if (del) {
|
||||
qemu_opt_del(opt);
|
||||
}
|
||||
}
|
||||
return qdict;
|
||||
}
|
||||
|
||||
/* Copy all options in a QemuOpts to the given QDict. See
|
||||
* qemu_opts_to_qdict_filtered() for details. */
|
||||
QDict *qemu_opts_to_qdict(QemuOpts *opts, QDict *qdict)
|
||||
{
|
||||
return qemu_opts_to_qdict_filtered(opts, qdict, NULL, false);
|
||||
}
|
||||
|
||||
/* Validate parsed opts against descriptions where no
|
||||
* descriptions were provided in the QemuOptsList.
|
||||
*/
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue