mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 08:13:54 -06:00
block: auto-generated node-names
If a node-name is not specified, automatically generate the node-name. Generated node-names will use the "block" sub-system identifier. Signed-off-by: Jeff Cody <jcody@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
a0f1913637
commit
15489c769b
9 changed files with 32 additions and 14 deletions
19
block.c
19
block.c
|
@ -763,12 +763,15 @@ static void bdrv_assign_node_name(BlockDriverState *bs,
|
|||
const char *node_name,
|
||||
Error **errp)
|
||||
{
|
||||
if (!node_name) {
|
||||
return;
|
||||
}
|
||||
char *gen_node_name = NULL;
|
||||
|
||||
/* Check for empty string or invalid characters */
|
||||
if (!id_wellformed(node_name)) {
|
||||
if (!node_name) {
|
||||
node_name = gen_node_name = id_generate(ID_BLOCK);
|
||||
} else if (!id_wellformed(node_name)) {
|
||||
/*
|
||||
* Check for empty string or invalid characters, but not if it is
|
||||
* generated (generated names use characters not available to the user)
|
||||
*/
|
||||
error_setg(errp, "Invalid node name");
|
||||
return;
|
||||
}
|
||||
|
@ -777,18 +780,20 @@ static void bdrv_assign_node_name(BlockDriverState *bs,
|
|||
if (blk_by_name(node_name)) {
|
||||
error_setg(errp, "node-name=%s is conflicting with a device id",
|
||||
node_name);
|
||||
return;
|
||||
goto out;
|
||||
}
|
||||
|
||||
/* takes care of avoiding duplicates node names */
|
||||
if (bdrv_find_node(node_name)) {
|
||||
error_setg(errp, "Duplicate node name");
|
||||
return;
|
||||
goto out;
|
||||
}
|
||||
|
||||
/* copy node name into the bs and insert it into the graph list */
|
||||
pstrcpy(bs->node_name, sizeof(bs->node_name), node_name);
|
||||
QTAILQ_INSERT_TAIL(&graph_bdrv_states, bs, node_list);
|
||||
out:
|
||||
g_free(gen_node_name);
|
||||
}
|
||||
|
||||
static QemuOptsList bdrv_runtime_opts = {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue