mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-22 11:22:23 +00:00
virsh: Option for overriding disk type in attach-disk
Unless --driver tap|file option was given to attach-disk, virsh would generate <disk type='block'> XML which might be fine for Xen but not for other hypervisors. This patch introduces a new option --sourcetype which can be used to explicitly set the type of disk source. The option accepts either "file" or "block" types.
This commit is contained in:
parent
690583f790
commit
dfec22cc60
@ -8116,6 +8116,7 @@ static const vshCmdOptDef opts_attach_disk[] = {
|
|||||||
{"type", VSH_OT_STRING, 0, N_("target device type")},
|
{"type", VSH_OT_STRING, 0, N_("target device type")},
|
||||||
{"mode", VSH_OT_STRING, 0, N_("mode of device reading and writing")},
|
{"mode", VSH_OT_STRING, 0, N_("mode of device reading and writing")},
|
||||||
{"persistent", VSH_OT_BOOL, 0, N_("persist disk attachment")},
|
{"persistent", VSH_OT_BOOL, 0, N_("persist disk attachment")},
|
||||||
|
{"sourcetype", VSH_OT_STRING, 0, N_("type of source (block|file)")},
|
||||||
{NULL, 0, 0, NULL}
|
{NULL, 0, 0, NULL}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -8127,6 +8128,7 @@ cmdAttachDisk(vshControl *ctl, const vshCmd *cmd)
|
|||||||
int isFile = 0, ret = FALSE;
|
int isFile = 0, ret = FALSE;
|
||||||
char *buf = NULL, *tmp = NULL;
|
char *buf = NULL, *tmp = NULL;
|
||||||
unsigned int flags;
|
unsigned int flags;
|
||||||
|
char *stype;
|
||||||
|
|
||||||
if (!vshConnectionUsability(ctl, ctl->conn))
|
if (!vshConnectionUsability(ctl, ctl->conn))
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
@ -8144,10 +8146,16 @@ cmdAttachDisk(vshControl *ctl, const vshCmd *cmd)
|
|||||||
subdriver = vshCommandOptString(cmd, "subdriver", NULL);
|
subdriver = vshCommandOptString(cmd, "subdriver", NULL);
|
||||||
type = vshCommandOptString(cmd, "type", NULL);
|
type = vshCommandOptString(cmd, "type", NULL);
|
||||||
mode = vshCommandOptString(cmd, "mode", NULL);
|
mode = vshCommandOptString(cmd, "mode", NULL);
|
||||||
|
stype = vshCommandOptString(cmd, "sourcetype", NULL);
|
||||||
|
|
||||||
if (driver) {
|
if (!stype) {
|
||||||
if (STREQ(driver, "file") || STREQ(driver, "tap"))
|
if (driver && (STREQ(driver, "file") || STREQ(driver, "tap")))
|
||||||
isFile = 1;
|
isFile = 1;
|
||||||
|
} else if (STREQ(stype, "file")) {
|
||||||
|
isFile = 1;
|
||||||
|
} else if (STRNEQ(stype, "block")) {
|
||||||
|
vshError(ctl, _("Unknown source type: '%s'"), stype);
|
||||||
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mode) {
|
if (mode) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user