Commit 15489c76 authored by Jeff Cody's avatar Jeff Cody Committed by Kevin Wolf
Browse files

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: default avatarJeff Cody <jcody@redhat.com>
Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
parent a0f19136
Loading
Loading
Loading
Loading
+12 −7
Original line number Diff line number Diff line
@@ -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 = {
+2 −2
Original line number Diff line number Diff line
@@ -780,7 +780,7 @@ class TestRepairQuorum(iotests.QMPTestCase):
        # here we check that the last registered quorum file has not been
        # swapped out and unref
        result = self.vm.qmp('query-named-block-nodes')
        self.assert_qmp(result, 'return[0]/file', quorum_img3)
        self.assert_qmp(result, 'return[1]/file', quorum_img3)
        self.vm.shutdown()

    def test_cancel_after_ready(self):
@@ -799,7 +799,7 @@ class TestRepairQuorum(iotests.QMPTestCase):
        result = self.vm.qmp('query-named-block-nodes')
        # here we check that the last registered quorum file has not been
        # swapped out and unref
        self.assert_qmp(result, 'return[0]/file', quorum_img3)
        self.assert_qmp(result, 'return[1]/file', quorum_img3)
        self.vm.shutdown()
        self.assertTrue(iotests.compare_images(quorum_img2, quorum_repair_img),
                        'target image does not match source after mirroring')
+2 −1
Original line number Diff line number Diff line
@@ -108,7 +108,8 @@ echo
echo === Overriding backing file ===
echo

echo "info block" | run_qemu -drive file="$TEST_IMG",driver=qcow2,backing.file.filename="$TEST_IMG.orig" -nodefaults
echo "info block" | run_qemu -drive file="$TEST_IMG",driver=qcow2,backing.file.filename="$TEST_IMG.orig" -nodefaults\
                  | _filter_generated_node_ids

# Drivers that don't support backing files
run_qemu -drive file="$TEST_IMG",driver=raw,backing.file.filename="$TEST_IMG.orig"
+1 −1
Original line number Diff line number Diff line
@@ -59,7 +59,7 @@ QEMU X.Y.Z monitor - type 'help' for more information
Testing: -drive file=TEST_DIR/t.qcow2,driver=qcow2,backing.file.filename=TEST_DIR/t.qcow2.orig -nodefaults
QEMU X.Y.Z monitor - type 'help' for more information
(qemu) iininfinfoinfo info binfo blinfo bloinfo blocinfo block
ide0-hd0: TEST_DIR/t.qcow2 (qcow2)
ide0-hd0 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2)
    Cache mode:       writeback
    Backing file:     TEST_DIR/t.qcow2.orig (chain depth: 1)
(qemu) qququiquit
+2 −1
Original line number Diff line number Diff line
@@ -48,7 +48,8 @@ function do_run_qemu()
function run_qemu()
{
    do_run_qemu "$@" 2>&1 | _filter_testdir | _filter_qmp | _filter_qemu \
                          | sed -e 's/\("actual-size":\s*\)[0-9]\+/\1SIZE/g'
                          | sed -e 's/\("actual-size":\s*\)[0-9]\+/\1SIZE/g' \
                          | _filter_generated_node_ids
}

size=128M
Loading