提交 930b7759 编写于 作者: P Peter Krempa

storage: Allow parsing of RBD backing strings when building backing chain

As we now have a common function to parse backing store string for RBD
backing store we can reuse it in the backing store walker so that we
don't fail on files backed by RBD storage.

This patch also adds a few tests to verify that the parsing works as
expected.
上级 b327df87
...@@ -2458,8 +2458,12 @@ virStorageSourceParseBackingColon(virStorageSourcePtr src, ...@@ -2458,8 +2458,12 @@ virStorageSourceParseBackingColon(virStorageSourcePtr src,
goto cleanup; goto cleanup;
break; break;
case VIR_STORAGE_NET_PROTOCOL_SHEEPDOG:
case VIR_STORAGE_NET_PROTOCOL_RBD: case VIR_STORAGE_NET_PROTOCOL_RBD:
if (virStorageSourceParseRBDColonString(path, src) < 0)
goto cleanup;
break;
case VIR_STORAGE_NET_PROTOCOL_SHEEPDOG:
case VIR_STORAGE_NET_PROTOCOL_LAST: case VIR_STORAGE_NET_PROTOCOL_LAST:
case VIR_STORAGE_NET_PROTOCOL_NONE: case VIR_STORAGE_NET_PROTOCOL_NONE:
virReportError(VIR_ERR_INTERNAL_ERROR, virReportError(VIR_ERR_INTERNAL_ERROR,
......
...@@ -972,6 +972,49 @@ mymain(void) ...@@ -972,6 +972,49 @@ mymain(void)
(&wrap, &qcow2), EXP_WARN, (&wrap, &qcow2), EXP_WARN,
(&wrap, &qcow2), ALLOW_PROBE | EXP_WARN); (&wrap, &qcow2), ALLOW_PROBE | EXP_WARN);
/* Rewrite qcow2 to use an rbd: protocol as backend */
virCommandFree(cmd);
cmd = virCommandNewArgList(qemuimg, "rebase", "-u", "-f", "qcow2",
"-F", "raw", "-b", "rbd:testshare",
"qcow2", NULL);
if (virCommandRun(cmd, NULL) < 0)
ret = -1;
qcow2.expBackingStoreRaw = "rbd:testshare";
/* Qcow2 file with backing protocol instead of file */
testFileData rbd1 = {
.path = "testshare",
.type = VIR_STORAGE_TYPE_NETWORK,
.format = VIR_STORAGE_FILE_RAW,
.protocol = VIR_STORAGE_NET_PROTOCOL_RBD,
};
TEST_CHAIN(19, absqcow2, VIR_STORAGE_FILE_QCOW2,
(&qcow2, &rbd1), EXP_PASS,
(&qcow2, &rbd1), ALLOW_PROBE | EXP_PASS);
/* Rewrite qcow2 to use an rbd: protocol as backend */
virCommandFree(cmd);
cmd = virCommandNewArgList(qemuimg, "rebase", "-u", "-f", "qcow2",
"-F", "raw", "-b", "rbd:testshare:id=asdf:mon_host=example.com",
"qcow2", NULL);
if (virCommandRun(cmd, NULL) < 0)
ret = -1;
qcow2.expBackingStoreRaw = "rbd:testshare:id=asdf:mon_host=example.com";
/* Qcow2 file with backing protocol instead of file */
testFileData rbd2 = {
.path = "testshare",
.type = VIR_STORAGE_TYPE_NETWORK,
.format = VIR_STORAGE_FILE_RAW,
.protocol = VIR_STORAGE_NET_PROTOCOL_RBD,
.secret = "asdf",
.hostname = "example.com",
};
TEST_CHAIN(20, absqcow2, VIR_STORAGE_FILE_QCOW2,
(&qcow2, &rbd2), EXP_PASS,
(&qcow2, &rbd2), ALLOW_PROBE | EXP_PASS);
/* Rewrite wrap and qcow2 back to 3-deep chain, absolute backing */ /* Rewrite wrap and qcow2 back to 3-deep chain, absolute backing */
virCommandFree(cmd); virCommandFree(cmd);
cmd = virCommandNewArgList(qemuimg, "rebase", "-u", "-f", "qcow2", cmd = virCommandNewArgList(qemuimg, "rebase", "-u", "-f", "qcow2",
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册