mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-07-06 09:55:46 +00:00
util: storage: add JSON backing volume parser 'raw' block driver
The 'raw' block driver in Qemu is not directly interesting from libvirt's perspective, but it can be layered above some other block drivers and this may be interesting for the user. The patch adds support for the 'raw' block driver. The driver is treated simply as a pass-through and child driver in JSON is queried to get the necessary information. Signed-off-by: Tomáš Golembiovský <tgolembi@redhat.com>
This commit is contained in:
parent
cb4adb43d6
commit
e4c6d4ae55
@ -2647,6 +2647,11 @@ virStorageSourceParseBackingColon(virStorageSourcePtr src,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static int
|
||||||
|
virStorageSourceParseBackingJSONInternal(virStorageSourcePtr src,
|
||||||
|
virJSONValuePtr json);
|
||||||
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
virStorageSourceParseBackingJSONPath(virStorageSourcePtr src,
|
virStorageSourceParseBackingJSONPath(virStorageSourcePtr src,
|
||||||
virJSONValuePtr json,
|
virJSONValuePtr json,
|
||||||
@ -2963,6 +2968,16 @@ virStorageSourceParseBackingJSONRBD(virStorageSourcePtr src,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
virStorageSourceParseBackingJSONRaw(virStorageSourcePtr src,
|
||||||
|
virJSONValuePtr json,
|
||||||
|
int opaque ATTRIBUTE_UNUSED)
|
||||||
|
{
|
||||||
|
/* There are no interesting attributes in raw driver.
|
||||||
|
* Treat it as pass-through.
|
||||||
|
*/
|
||||||
|
return virStorageSourceParseBackingJSONInternal(src, json);
|
||||||
|
}
|
||||||
|
|
||||||
struct virStorageSourceJSONDriverParser {
|
struct virStorageSourceJSONDriverParser {
|
||||||
const char *drvname;
|
const char *drvname;
|
||||||
@ -2985,6 +3000,7 @@ static const struct virStorageSourceJSONDriverParser jsonParsers[] = {
|
|||||||
{"sheepdog", virStorageSourceParseBackingJSONSheepdog, 0},
|
{"sheepdog", virStorageSourceParseBackingJSONSheepdog, 0},
|
||||||
{"ssh", virStorageSourceParseBackingJSONSSH, 0},
|
{"ssh", virStorageSourceParseBackingJSONSSH, 0},
|
||||||
{"rbd", virStorageSourceParseBackingJSONRBD, 0},
|
{"rbd", virStorageSourceParseBackingJSONRBD, 0},
|
||||||
|
{"raw", virStorageSourceParseBackingJSONRaw, 0},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -1496,6 +1496,12 @@ mymain(void)
|
|||||||
"<source protocol='rbd' name='testshare'>\n"
|
"<source protocol='rbd' name='testshare'>\n"
|
||||||
" <host name='example.com'/>\n"
|
" <host name='example.com'/>\n"
|
||||||
"</source>\n");
|
"</source>\n");
|
||||||
|
TEST_BACKING_PARSE("json:{ \"file\": { "
|
||||||
|
"\"driver\": \"raw\","
|
||||||
|
"\"file\": {"
|
||||||
|
"\"driver\": \"file\","
|
||||||
|
"\"filename\": \"/path/to/file\" } } }",
|
||||||
|
"<source file='/path/to/file'/>\n");
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
/* Final cleanup */
|
/* Final cleanup */
|
||||||
|
Loading…
Reference in New Issue
Block a user