numa: split out NumaOptions parsing into set_numa_options()
it will allow to reuse set_numa_options() for parsing configuration commands received via QMP interface Signed-off-by: Igor Mammedov <imammedo@redhat.com> Message-Id: <1525423069-61903-3-git-send-email-imammedo@redhat.com> Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
This commit is contained in:
parent
7a3099fc9c
commit
3319b4efc2
@ -22,6 +22,7 @@ struct NumaNodeMem {
|
|||||||
};
|
};
|
||||||
|
|
||||||
extern NodeInfo numa_info[MAX_NODES];
|
extern NodeInfo numa_info[MAX_NODES];
|
||||||
|
int parse_numa(void *opaque, QemuOpts *opts, Error **errp);
|
||||||
void parse_numa_opts(MachineState *ms);
|
void parse_numa_opts(MachineState *ms);
|
||||||
void numa_complete_configuration(MachineState *ms);
|
void numa_complete_configuration(MachineState *ms);
|
||||||
void query_numa_node_mem(NumaNodeMem node_mem[]);
|
void query_numa_node_mem(NumaNodeMem node_mem[]);
|
||||||
|
46
numa.c
46
numa.c
@ -169,28 +169,11 @@ static void parse_numa_distance(NumaDistOptions *dist, Error **errp)
|
|||||||
have_numa_distance = true;
|
have_numa_distance = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int parse_numa(void *opaque, QemuOpts *opts, Error **errp)
|
static
|
||||||
|
void set_numa_options(MachineState *ms, NumaOptions *object, Error **errp)
|
||||||
{
|
{
|
||||||
NumaOptions *object = NULL;
|
|
||||||
MachineState *ms = opaque;
|
|
||||||
Error *err = NULL;
|
Error *err = NULL;
|
||||||
|
|
||||||
{
|
|
||||||
Visitor *v = opts_visitor_new(opts);
|
|
||||||
visit_type_NumaOptions(v, NULL, &object, &err);
|
|
||||||
visit_free(v);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (err) {
|
|
||||||
goto end;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Fix up legacy suffix-less format */
|
|
||||||
if ((object->type == NUMA_OPTIONS_TYPE_NODE) && object->u.node.has_mem) {
|
|
||||||
const char *mem_str = qemu_opt_get(opts, "mem");
|
|
||||||
qemu_strtosz_MiB(mem_str, NULL, &object->u.node.mem);
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (object->type) {
|
switch (object->type) {
|
||||||
case NUMA_OPTIONS_TYPE_NODE:
|
case NUMA_OPTIONS_TYPE_NODE:
|
||||||
parse_numa_node(ms, &object->u.node, &err);
|
parse_numa_node(ms, &object->u.node, &err);
|
||||||
@ -223,6 +206,31 @@ static int parse_numa(void *opaque, QemuOpts *opts, Error **errp)
|
|||||||
abort();
|
abort();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
end:
|
||||||
|
error_propagate(errp, err);
|
||||||
|
}
|
||||||
|
|
||||||
|
int parse_numa(void *opaque, QemuOpts *opts, Error **errp)
|
||||||
|
{
|
||||||
|
NumaOptions *object = NULL;
|
||||||
|
MachineState *ms = MACHINE(opaque);
|
||||||
|
Error *err = NULL;
|
||||||
|
Visitor *v = opts_visitor_new(opts);
|
||||||
|
|
||||||
|
visit_type_NumaOptions(v, NULL, &object, &err);
|
||||||
|
visit_free(v);
|
||||||
|
if (err) {
|
||||||
|
goto end;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Fix up legacy suffix-less format */
|
||||||
|
if ((object->type == NUMA_OPTIONS_TYPE_NODE) && object->u.node.has_mem) {
|
||||||
|
const char *mem_str = qemu_opt_get(opts, "mem");
|
||||||
|
qemu_strtosz_MiB(mem_str, NULL, &object->u.node.mem);
|
||||||
|
}
|
||||||
|
|
||||||
|
set_numa_options(ms, object, &err);
|
||||||
|
|
||||||
end:
|
end:
|
||||||
qapi_free_NumaOptions(object);
|
qapi_free_NumaOptions(object);
|
||||||
if (err) {
|
if (err) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user