parallels.c (92adf9dbcd3cf9cedddae995b04a99f5c42ae08c) parallels.c (af91062ee1408f7f5bb58389d355d29a5040c648)
1/*
2 * Block driver for Parallels disk image format
3 *
4 * Copyright (c) 2007 Alex Beregszaszi
5 * Copyright (c) 2015 Denis V. Lunev <den@openvz.org>
6 *
7 * This code was originally based on comparing different disk images created
8 * by Parallels. Currently it is based on opened OpenVZ sources

--- 603 unchanged lines hidden (view full) ---

612static int coroutine_fn parallels_co_create_opts(const char *filename,
613 QemuOpts *opts,
614 Error **errp)
615{
616 BlockdevCreateOptions *create_options = NULL;
617 Error *local_err = NULL;
618 BlockDriverState *bs = NULL;
619 QDict *qdict;
1/*
2 * Block driver for Parallels disk image format
3 *
4 * Copyright (c) 2007 Alex Beregszaszi
5 * Copyright (c) 2015 Denis V. Lunev <den@openvz.org>
6 *
7 * This code was originally based on comparing different disk images created
8 * by Parallels. Currently it is based on opened OpenVZ sources

--- 603 unchanged lines hidden (view full) ---

612static int coroutine_fn parallels_co_create_opts(const char *filename,
613 QemuOpts *opts,
614 Error **errp)
615{
616 BlockdevCreateOptions *create_options = NULL;
617 Error *local_err = NULL;
618 BlockDriverState *bs = NULL;
619 QDict *qdict;
620 QObject *qobj;
621 Visitor *v;
622 int ret;
623
624 static const QDictRenames opt_renames[] = {
625 { BLOCK_OPT_CLUSTER_SIZE, "cluster-size" },
626 { NULL, NULL },
627 };
628

--- 19 unchanged lines hidden (view full) ---

648 ret = -EIO;
649 goto done;
650 }
651
652 /* Now get the QAPI type BlockdevCreateOptions */
653 qdict_put_str(qdict, "driver", "parallels");
654 qdict_put_str(qdict, "file", bs->node_name);
655
620 Visitor *v;
621 int ret;
622
623 static const QDictRenames opt_renames[] = {
624 { BLOCK_OPT_CLUSTER_SIZE, "cluster-size" },
625 { NULL, NULL },
626 };
627

--- 19 unchanged lines hidden (view full) ---

647 ret = -EIO;
648 goto done;
649 }
650
651 /* Now get the QAPI type BlockdevCreateOptions */
652 qdict_put_str(qdict, "driver", "parallels");
653 qdict_put_str(qdict, "file", bs->node_name);
654
656 qobj = qdict_crumple_for_keyval_qiv(qdict, errp);
657 if (!qobj) {
655 v = qobject_input_visitor_new_flat_confused(qdict, errp);
656 if (!v) {
658 ret = -EINVAL;
659 goto done;
660 }
661
657 ret = -EINVAL;
658 goto done;
659 }
660
662 v = qobject_input_visitor_new_keyval(qobj);
663 qobject_unref(qobj);
664 visit_type_BlockdevCreateOptions(v, NULL, &create_options, &local_err);
665 visit_free(v);
666
667 if (local_err) {
668 error_propagate(errp, local_err);
669 ret = -EINVAL;
670 goto done;
671 }

--- 255 unchanged lines hidden ---
661 visit_type_BlockdevCreateOptions(v, NULL, &create_options, &local_err);
662 visit_free(v);
663
664 if (local_err) {
665 error_propagate(errp, local_err);
666 ret = -EINVAL;
667 goto done;
668 }

--- 255 unchanged lines hidden ---