mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-03 07:33:50 +00:00
Support disk caching mode config
This commit is contained in:
parent
3cb55cb51f
commit
67e7416119
14
ChangeLog
14
ChangeLog
@ -1,4 +1,16 @@
|
|||||||
Fri Jan 30 16:12:22 GMT 2009 Daniel P. Berrange <berrange@redhat.com>
|
Fri Jan 30 17:12:22 GMT 2009 Daniel P. Berrange <berrange@redhat.com>
|
||||||
|
|
||||||
|
Support <driver cache='none|writeback|writethrough'/> cache
|
||||||
|
control options
|
||||||
|
* src/domain_conf.c, src/domain_conf.h: Add supported for
|
||||||
|
disk caching mode options
|
||||||
|
* src/qemu_conf.c, src/qemu_conf.h: Detect supported cache
|
||||||
|
mode options for -drive and use them when launching QEMU
|
||||||
|
* docs/schemas/domain.rng: Document cache mode options
|
||||||
|
* tests/qemuxml2argvtest.c: Validate cache mode processing
|
||||||
|
* tests/qemuxml2argvdata/: Data files for cache mode options
|
||||||
|
|
||||||
|
Fri Jan 30 17:12:22 GMT 2009 Daniel P. Berrange <berrange@redhat.com>
|
||||||
|
|
||||||
Fix crash when using bogus arch type
|
Fix crash when using bogus arch type
|
||||||
* src/capabilities.c, src/capabilities.h: Add method to query
|
* src/capabilities.c, src/capabilities.h: Add method to query
|
||||||
|
@ -426,6 +426,25 @@
|
|||||||
-->
|
-->
|
||||||
<define name='driver'>
|
<define name='driver'>
|
||||||
<element name='driver'>
|
<element name='driver'>
|
||||||
|
<choice>
|
||||||
|
<group>
|
||||||
|
<ref name='driverFormat'/>
|
||||||
|
<optional>
|
||||||
|
<ref name='driverCache'/>
|
||||||
|
</optional>
|
||||||
|
</group>
|
||||||
|
<group>
|
||||||
|
<optional>
|
||||||
|
<ref name='driverFormat'/>
|
||||||
|
</optional>
|
||||||
|
<ref name='driverCache'/>
|
||||||
|
</group>
|
||||||
|
</choice>
|
||||||
|
<empty/>
|
||||||
|
</element>
|
||||||
|
</define>
|
||||||
|
|
||||||
|
<define name='driverFormat'>
|
||||||
<attribute name='name'>
|
<attribute name='name'>
|
||||||
<ref name='genericName'/>
|
<ref name='genericName'/>
|
||||||
</attribute>
|
</attribute>
|
||||||
@ -434,8 +453,16 @@
|
|||||||
<ref name='genericName'/>
|
<ref name='genericName'/>
|
||||||
</attribute>
|
</attribute>
|
||||||
</optional>
|
</optional>
|
||||||
<empty/>
|
</define>
|
||||||
</element>
|
|
||||||
|
<define name='driverCache'>
|
||||||
|
<attribute name='cache'>
|
||||||
|
<choice>
|
||||||
|
<value>none</value>
|
||||||
|
<value>writeback</value>
|
||||||
|
<value>writethrough</value>
|
||||||
|
</choice>
|
||||||
|
</attribute>
|
||||||
</define>
|
</define>
|
||||||
|
|
||||||
<define name='filesystem'>
|
<define name='filesystem'>
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* domain_conf.c: domain XML processing
|
* domain_conf.c: domain XML processing
|
||||||
*
|
*
|
||||||
* Copyright (C) 2006-2008 Red Hat, Inc.
|
* Copyright (C) 2006-2009 Red Hat, Inc.
|
||||||
* Copyright (C) 2006-2008 Daniel P. Berrange
|
* Copyright (C) 2006-2008 Daniel P. Berrange
|
||||||
*
|
*
|
||||||
* This library is free software; you can redistribute it and/or
|
* This library is free software; you can redistribute it and/or
|
||||||
@ -91,6 +91,12 @@ VIR_ENUM_IMPL(virDomainDiskBus, VIR_DOMAIN_DISK_BUS_LAST,
|
|||||||
"usb",
|
"usb",
|
||||||
"uml")
|
"uml")
|
||||||
|
|
||||||
|
VIR_ENUM_IMPL(virDomainDiskCache, VIR_DOMAIN_DISK_CACHE_LAST,
|
||||||
|
"default",
|
||||||
|
"none",
|
||||||
|
"writethrough",
|
||||||
|
"writeback");
|
||||||
|
|
||||||
VIR_ENUM_IMPL(virDomainFS, VIR_DOMAIN_FS_TYPE_LAST,
|
VIR_ENUM_IMPL(virDomainFS, VIR_DOMAIN_FS_TYPE_LAST,
|
||||||
"mount",
|
"mount",
|
||||||
"block",
|
"block",
|
||||||
@ -568,6 +574,7 @@ virDomainDiskDefParseXML(virConnectPtr conn,
|
|||||||
char *source = NULL;
|
char *source = NULL;
|
||||||
char *target = NULL;
|
char *target = NULL;
|
||||||
char *bus = NULL;
|
char *bus = NULL;
|
||||||
|
char *cachetag = NULL;
|
||||||
|
|
||||||
if (VIR_ALLOC(def) < 0) {
|
if (VIR_ALLOC(def) < 0) {
|
||||||
virReportOOMError(conn);
|
virReportOOMError(conn);
|
||||||
@ -617,6 +624,7 @@ virDomainDiskDefParseXML(virConnectPtr conn,
|
|||||||
(xmlStrEqual(cur->name, BAD_CAST "driver"))) {
|
(xmlStrEqual(cur->name, BAD_CAST "driver"))) {
|
||||||
driverName = virXMLPropString(cur, "name");
|
driverName = virXMLPropString(cur, "name");
|
||||||
driverType = virXMLPropString(cur, "type");
|
driverType = virXMLPropString(cur, "type");
|
||||||
|
cachetag = virXMLPropString(cur, "cache");
|
||||||
} else if (xmlStrEqual(cur->name, BAD_CAST "readonly")) {
|
} else if (xmlStrEqual(cur->name, BAD_CAST "readonly")) {
|
||||||
def->readonly = 1;
|
def->readonly = 1;
|
||||||
} else if (xmlStrEqual(cur->name, BAD_CAST "shareable")) {
|
} else if (xmlStrEqual(cur->name, BAD_CAST "shareable")) {
|
||||||
@ -713,6 +721,13 @@ virDomainDiskDefParseXML(virConnectPtr conn,
|
|||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (cachetag &&
|
||||||
|
(def->cachemode = virDomainDiskCacheTypeFromString(cachetag)) < 0) {
|
||||||
|
virDomainReportError(conn, VIR_ERR_INTERNAL_ERROR,
|
||||||
|
_("unknown disk cache mode '%s'"), cachetag);
|
||||||
|
goto error;
|
||||||
|
}
|
||||||
|
|
||||||
def->src = source;
|
def->src = source;
|
||||||
source = NULL;
|
source = NULL;
|
||||||
def->dst = target;
|
def->dst = target;
|
||||||
@ -730,6 +745,7 @@ cleanup:
|
|||||||
VIR_FREE(device);
|
VIR_FREE(device);
|
||||||
VIR_FREE(driverType);
|
VIR_FREE(driverType);
|
||||||
VIR_FREE(driverName);
|
VIR_FREE(driverName);
|
||||||
|
VIR_FREE(cachetag);
|
||||||
|
|
||||||
return def;
|
return def;
|
||||||
|
|
||||||
@ -2756,6 +2772,7 @@ virDomainDiskDefFormat(virConnectPtr conn,
|
|||||||
const char *type = virDomainDiskTypeToString(def->type);
|
const char *type = virDomainDiskTypeToString(def->type);
|
||||||
const char *device = virDomainDiskDeviceTypeToString(def->device);
|
const char *device = virDomainDiskDeviceTypeToString(def->device);
|
||||||
const char *bus = virDomainDiskBusTypeToString(def->bus);
|
const char *bus = virDomainDiskBusTypeToString(def->bus);
|
||||||
|
const char *cachemode = virDomainDiskCacheTypeToString(def->cachemode);
|
||||||
|
|
||||||
if (!type) {
|
if (!type) {
|
||||||
virDomainReportError(conn, VIR_ERR_INTERNAL_ERROR,
|
virDomainReportError(conn, VIR_ERR_INTERNAL_ERROR,
|
||||||
@ -2772,20 +2789,23 @@ virDomainDiskDefFormat(virConnectPtr conn,
|
|||||||
_("unexpected disk bus %d"), def->bus);
|
_("unexpected disk bus %d"), def->bus);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
if (!cachemode) {
|
||||||
|
virDomainReportError(conn, VIR_ERR_INTERNAL_ERROR,
|
||||||
|
_("unexpected disk cache mode %d"), def->cachemode);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
virBufferVSprintf(buf,
|
virBufferVSprintf(buf,
|
||||||
" <disk type='%s' device='%s'>\n",
|
" <disk type='%s' device='%s'>\n",
|
||||||
type, device);
|
type, device);
|
||||||
|
|
||||||
if (def->driverName) {
|
if (def->driverName) {
|
||||||
|
virBufferVSprintf(buf, " <driver name='%s'", def->driverName);
|
||||||
if (def->driverType)
|
if (def->driverType)
|
||||||
virBufferVSprintf(buf,
|
virBufferVSprintf(buf, " type='%s'", def->driverType);
|
||||||
" <driver name='%s' type='%s'/>\n",
|
if (def->cachemode)
|
||||||
def->driverName, def->driverType);
|
virBufferVSprintf(buf, " cache='%s'", cachemode);
|
||||||
else
|
virBufferVSprintf(buf, "/>\n");
|
||||||
virBufferVSprintf(buf,
|
|
||||||
" <driver name='%s'/>\n",
|
|
||||||
def->driverName);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (def->src) {
|
if (def->src) {
|
||||||
|
@ -81,6 +81,15 @@ enum virDomainDiskBus {
|
|||||||
VIR_DOMAIN_DISK_BUS_LAST
|
VIR_DOMAIN_DISK_BUS_LAST
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum virDomainDiskCache {
|
||||||
|
VIR_DOMAIN_DISK_CACHE_DEFAULT,
|
||||||
|
VIR_DOMAIN_DISK_CACHE_DISABLE,
|
||||||
|
VIR_DOMAIN_DISK_CACHE_WRITETHRU,
|
||||||
|
VIR_DOMAIN_DISK_CACHE_WRITEBACK,
|
||||||
|
|
||||||
|
VIR_DOMAIN_DISK_CACHE_LAST
|
||||||
|
};
|
||||||
|
|
||||||
/* Stores the virtual disk configuration */
|
/* Stores the virtual disk configuration */
|
||||||
typedef struct _virDomainDiskDef virDomainDiskDef;
|
typedef struct _virDomainDiskDef virDomainDiskDef;
|
||||||
typedef virDomainDiskDef *virDomainDiskDefPtr;
|
typedef virDomainDiskDef *virDomainDiskDefPtr;
|
||||||
@ -92,6 +101,7 @@ struct _virDomainDiskDef {
|
|||||||
char *dst;
|
char *dst;
|
||||||
char *driverName;
|
char *driverName;
|
||||||
char *driverType;
|
char *driverType;
|
||||||
|
int cachemode;
|
||||||
unsigned int readonly : 1;
|
unsigned int readonly : 1;
|
||||||
unsigned int shared : 1;
|
unsigned int shared : 1;
|
||||||
int slotnum; /* pci slot number for unattach */
|
int slotnum; /* pci slot number for unattach */
|
||||||
@ -615,6 +625,7 @@ VIR_ENUM_DECL(virDomainLifecycle)
|
|||||||
VIR_ENUM_DECL(virDomainDisk)
|
VIR_ENUM_DECL(virDomainDisk)
|
||||||
VIR_ENUM_DECL(virDomainDiskDevice)
|
VIR_ENUM_DECL(virDomainDiskDevice)
|
||||||
VIR_ENUM_DECL(virDomainDiskBus)
|
VIR_ENUM_DECL(virDomainDiskBus)
|
||||||
|
VIR_ENUM_DECL(virDomainDiskCache)
|
||||||
VIR_ENUM_DECL(virDomainFS)
|
VIR_ENUM_DECL(virDomainFS)
|
||||||
VIR_ENUM_DECL(virDomainNet)
|
VIR_ENUM_DECL(virDomainNet)
|
||||||
VIR_ENUM_DECL(virDomainChr)
|
VIR_ENUM_DECL(virDomainChr)
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* config.c: VM configuration management
|
* config.c: VM configuration management
|
||||||
*
|
*
|
||||||
* Copyright (C) 2006, 2007, 2008 Red Hat, Inc.
|
* Copyright (C) 2006, 2007, 2008, 2009 Red Hat, Inc.
|
||||||
* Copyright (C) 2006 Daniel P. Berrange
|
* Copyright (C) 2006 Daniel P. Berrange
|
||||||
*
|
*
|
||||||
* This library is free software; you can redistribute it and/or
|
* This library is free software; you can redistribute it and/or
|
||||||
@ -61,6 +61,22 @@ VIR_ENUM_IMPL(virDomainDiskQEMUBus, VIR_DOMAIN_DISK_BUS_LAST,
|
|||||||
"uml")
|
"uml")
|
||||||
|
|
||||||
|
|
||||||
|
VIR_ENUM_DECL(qemuDiskCacheV1)
|
||||||
|
VIR_ENUM_DECL(qemuDiskCacheV2)
|
||||||
|
|
||||||
|
VIR_ENUM_IMPL(qemuDiskCacheV1, VIR_DOMAIN_DISK_CACHE_LAST,
|
||||||
|
"default",
|
||||||
|
"off",
|
||||||
|
"off", /* writethrough not supported, so for safety, disable */
|
||||||
|
"on"); /* Old 'on' was equivalent to 'writeback' */
|
||||||
|
|
||||||
|
VIR_ENUM_IMPL(qemuDiskCacheV2, VIR_DOMAIN_DISK_CACHE_LAST,
|
||||||
|
"default",
|
||||||
|
"none",
|
||||||
|
"writethrough",
|
||||||
|
"writeback");
|
||||||
|
|
||||||
|
|
||||||
#define qemudLog(level, msg...) fprintf(stderr, msg)
|
#define qemudLog(level, msg...) fprintf(stderr, msg)
|
||||||
|
|
||||||
int qemudLoadDriverConfig(struct qemud_driver *driver,
|
int qemudLoadDriverConfig(struct qemud_driver *driver,
|
||||||
@ -398,8 +414,11 @@ int qemudExtractVersionInfo(const char *qemu,
|
|||||||
flags |= QEMUD_CMD_FLAG_UUID;
|
flags |= QEMUD_CMD_FLAG_UUID;
|
||||||
if (strstr(help, "-domid"))
|
if (strstr(help, "-domid"))
|
||||||
flags |= QEMUD_CMD_FLAG_DOMID;
|
flags |= QEMUD_CMD_FLAG_DOMID;
|
||||||
if (strstr(help, "-drive"))
|
if (strstr(help, "-drive")) {
|
||||||
flags |= QEMUD_CMD_FLAG_DRIVE;
|
flags |= QEMUD_CMD_FLAG_DRIVE;
|
||||||
|
if (strstr(help, "cache=writethrough|writeback|none"))
|
||||||
|
flags |= QEMUD_CMD_FLAG_DRIVE_CACHE_V2;
|
||||||
|
}
|
||||||
if (strstr(help, "boot=on"))
|
if (strstr(help, "boot=on"))
|
||||||
flags |= QEMUD_CMD_FLAG_DRIVE_BOOT;
|
flags |= QEMUD_CMD_FLAG_DRIVE_BOOT;
|
||||||
if (version >= 9000)
|
if (version >= 9000)
|
||||||
@ -591,6 +610,7 @@ qemudNetworkIfaceConnect(virConnectPtr conn,
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int qemudBuildCommandLineChrDevStr(virDomainChrDefPtr dev,
|
static int qemudBuildCommandLineChrDevStr(virDomainChrDefPtr dev,
|
||||||
char *buf,
|
char *buf,
|
||||||
int buflen)
|
int buflen)
|
||||||
@ -1015,11 +1035,20 @@ int qemudBuildCommandLine(virConnectPtr conn,
|
|||||||
if (bootable &&
|
if (bootable &&
|
||||||
disk->device == VIR_DOMAIN_DISK_DEVICE_DISK)
|
disk->device == VIR_DOMAIN_DISK_DEVICE_DISK)
|
||||||
virBufferAddLit(&opt, ",boot=on");
|
virBufferAddLit(&opt, ",boot=on");
|
||||||
if (disk->shared && !disk->readonly)
|
|
||||||
virBufferAddLit(&opt, ",cache=off");
|
|
||||||
if (disk->driverType)
|
if (disk->driverType)
|
||||||
virBufferVSprintf(&opt, ",fmt=%s", disk->driverType);
|
virBufferVSprintf(&opt, ",fmt=%s", disk->driverType);
|
||||||
|
|
||||||
|
if (disk->cachemode) {
|
||||||
|
const char *mode =
|
||||||
|
(qemuCmdFlags & QEMUD_CMD_FLAG_DRIVE_CACHE_V2) ?
|
||||||
|
qemuDiskCacheV2TypeToString(disk->cachemode) :
|
||||||
|
qemuDiskCacheV1TypeToString(disk->cachemode);
|
||||||
|
|
||||||
|
virBufferVSprintf(&opt, ",cache=%s", mode);
|
||||||
|
} else if (disk->shared && !disk->readonly) {
|
||||||
|
virBufferAddLit(&opt, ",cache=off");
|
||||||
|
}
|
||||||
|
|
||||||
if (virBufferError(&opt)) {
|
if (virBufferError(&opt)) {
|
||||||
virReportOOMError(conn);
|
virReportOOMError(conn);
|
||||||
goto error;
|
goto error;
|
||||||
@ -1585,4 +1614,3 @@ cleanup:
|
|||||||
VIR_FREE(xml);
|
VIR_FREE(xml);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* config.h: VM configuration management
|
* config.h: VM configuration management
|
||||||
*
|
*
|
||||||
* Copyright (C) 2006, 2007 Red Hat, Inc.
|
* Copyright (C) 2006, 2007, 2009 Red Hat, Inc.
|
||||||
* Copyright (C) 2006 Daniel P. Berrange
|
* Copyright (C) 2006 Daniel P. Berrange
|
||||||
*
|
*
|
||||||
* This library is free software; you can redistribute it and/or
|
* This library is free software; you can redistribute it and/or
|
||||||
@ -53,6 +53,7 @@ enum qemud_cmd_flags {
|
|||||||
* since it had a design bug blocking the entire monitor console */
|
* since it had a design bug blocking the entire monitor console */
|
||||||
QEMUD_CMD_FLAG_MIGRATE_QEMU_TCP = (1 << 10), /* New migration syntax after merge to QEMU with TCP transport */
|
QEMUD_CMD_FLAG_MIGRATE_QEMU_TCP = (1 << 10), /* New migration syntax after merge to QEMU with TCP transport */
|
||||||
QEMUD_CMD_FLAG_MIGRATE_QEMU_EXEC = (1 << 11), /* New migration syntax after merge to QEMU with EXEC transport */
|
QEMUD_CMD_FLAG_MIGRATE_QEMU_EXEC = (1 << 11), /* New migration syntax after merge to QEMU with EXEC transport */
|
||||||
|
QEMUD_CMD_FLAG_DRIVE_CACHE_V2 = (1 << 12), /* Is the cache= flag wanting new v2 values */
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Main driver state */
|
/* Main driver state */
|
||||||
|
@ -0,0 +1 @@
|
|||||||
|
LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test /usr/bin/qemu -S -M pc -m 214 -smp 1 -nographic -monitor pty -pidfile /nowhere/QEMUGuest1.pid -no-acpi -boot c -drive file=/dev/HostVG/QEMUGuest1,if=ide,index=0,fmt=qcow2,cache=off -drive file=/dev/HostVG/QEMUGuest2,if=ide,media=cdrom,index=2,fmt=raw -net none -serial none -parallel none -usb
|
@ -0,0 +1,29 @@
|
|||||||
|
<domain type='qemu'>
|
||||||
|
<name>QEMUGuest1</name>
|
||||||
|
<uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
|
||||||
|
<memory>219200</memory>
|
||||||
|
<currentMemory>219200</currentMemory>
|
||||||
|
<vcpu>1</vcpu>
|
||||||
|
<os>
|
||||||
|
<type arch='i686' machine='pc'>hvm</type>
|
||||||
|
<boot dev='hd'/>
|
||||||
|
</os>
|
||||||
|
<clock offset='utc'/>
|
||||||
|
<on_poweroff>destroy</on_poweroff>
|
||||||
|
<on_reboot>restart</on_reboot>
|
||||||
|
<on_crash>destroy</on_crash>
|
||||||
|
<devices>
|
||||||
|
<emulator>/usr/bin/qemu</emulator>
|
||||||
|
<disk type='block' device='disk'>
|
||||||
|
<driver name='qemu' type='qcow2' cache='none'/>
|
||||||
|
<source dev='/dev/HostVG/QEMUGuest1'/>
|
||||||
|
<target dev='hda' bus='ide'/>
|
||||||
|
</disk>
|
||||||
|
<disk type='block' device='cdrom'>
|
||||||
|
<driver name='qemu' type='raw'/>
|
||||||
|
<source dev='/dev/HostVG/QEMUGuest2'/>
|
||||||
|
<target dev='hdc' bus='ide'/>
|
||||||
|
<readonly/>
|
||||||
|
</disk>
|
||||||
|
</devices>
|
||||||
|
</domain>
|
@ -0,0 +1 @@
|
|||||||
|
LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test /usr/bin/qemu -S -M pc -m 214 -smp 1 -nographic -monitor pty -pidfile /nowhere/QEMUGuest1.pid -no-acpi -boot c -drive file=/dev/HostVG/QEMUGuest1,if=ide,index=0,fmt=qcow2,cache=on -drive file=/dev/HostVG/QEMUGuest2,if=ide,media=cdrom,index=2,fmt=raw -net none -serial none -parallel none -usb
|
@ -0,0 +1,29 @@
|
|||||||
|
<domain type='qemu'>
|
||||||
|
<name>QEMUGuest1</name>
|
||||||
|
<uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
|
||||||
|
<memory>219200</memory>
|
||||||
|
<currentMemory>219200</currentMemory>
|
||||||
|
<vcpu>1</vcpu>
|
||||||
|
<os>
|
||||||
|
<type arch='i686' machine='pc'>hvm</type>
|
||||||
|
<boot dev='hd'/>
|
||||||
|
</os>
|
||||||
|
<clock offset='utc'/>
|
||||||
|
<on_poweroff>destroy</on_poweroff>
|
||||||
|
<on_reboot>restart</on_reboot>
|
||||||
|
<on_crash>destroy</on_crash>
|
||||||
|
<devices>
|
||||||
|
<emulator>/usr/bin/qemu</emulator>
|
||||||
|
<disk type='block' device='disk'>
|
||||||
|
<driver name='qemu' type='qcow2' cache='writeback'/>
|
||||||
|
<source dev='/dev/HostVG/QEMUGuest1'/>
|
||||||
|
<target dev='hda' bus='ide'/>
|
||||||
|
</disk>
|
||||||
|
<disk type='block' device='cdrom'>
|
||||||
|
<driver name='qemu' type='raw'/>
|
||||||
|
<source dev='/dev/HostVG/QEMUGuest2'/>
|
||||||
|
<target dev='hdc' bus='ide'/>
|
||||||
|
<readonly/>
|
||||||
|
</disk>
|
||||||
|
</devices>
|
||||||
|
</domain>
|
@ -0,0 +1 @@
|
|||||||
|
LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test /usr/bin/qemu -S -M pc -m 214 -smp 1 -nographic -monitor pty -pidfile /nowhere/QEMUGuest1.pid -no-acpi -boot c -drive file=/dev/HostVG/QEMUGuest1,if=ide,index=0,fmt=qcow2,cache=off -drive file=/dev/HostVG/QEMUGuest2,if=ide,media=cdrom,index=2,fmt=raw -net none -serial none -parallel none -usb
|
@ -0,0 +1,29 @@
|
|||||||
|
<domain type='qemu'>
|
||||||
|
<name>QEMUGuest1</name>
|
||||||
|
<uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
|
||||||
|
<memory>219200</memory>
|
||||||
|
<currentMemory>219200</currentMemory>
|
||||||
|
<vcpu>1</vcpu>
|
||||||
|
<os>
|
||||||
|
<type arch='i686' machine='pc'>hvm</type>
|
||||||
|
<boot dev='hd'/>
|
||||||
|
</os>
|
||||||
|
<clock offset='utc'/>
|
||||||
|
<on_poweroff>destroy</on_poweroff>
|
||||||
|
<on_reboot>restart</on_reboot>
|
||||||
|
<on_crash>destroy</on_crash>
|
||||||
|
<devices>
|
||||||
|
<emulator>/usr/bin/qemu</emulator>
|
||||||
|
<disk type='block' device='disk'>
|
||||||
|
<driver name='qemu' type='qcow2' cache='writethrough'/>
|
||||||
|
<source dev='/dev/HostVG/QEMUGuest1'/>
|
||||||
|
<target dev='hda' bus='ide'/>
|
||||||
|
</disk>
|
||||||
|
<disk type='block' device='cdrom'>
|
||||||
|
<driver name='qemu' type='raw'/>
|
||||||
|
<source dev='/dev/HostVG/QEMUGuest2'/>
|
||||||
|
<target dev='hdc' bus='ide'/>
|
||||||
|
<readonly/>
|
||||||
|
</disk>
|
||||||
|
</devices>
|
||||||
|
</domain>
|
@ -0,0 +1 @@
|
|||||||
|
LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test /usr/bin/qemu -S -M pc -m 214 -smp 1 -nographic -monitor pty -pidfile /nowhere/QEMUGuest1.pid -no-acpi -boot c -drive file=/dev/HostVG/QEMUGuest1,if=ide,index=0,fmt=qcow2,cache=none -drive file=/dev/HostVG/QEMUGuest2,if=ide,media=cdrom,index=2,fmt=raw -net none -serial none -parallel none -usb
|
@ -0,0 +1,29 @@
|
|||||||
|
<domain type='qemu'>
|
||||||
|
<name>QEMUGuest1</name>
|
||||||
|
<uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
|
||||||
|
<memory>219200</memory>
|
||||||
|
<currentMemory>219200</currentMemory>
|
||||||
|
<vcpu>1</vcpu>
|
||||||
|
<os>
|
||||||
|
<type arch='i686' machine='pc'>hvm</type>
|
||||||
|
<boot dev='hd'/>
|
||||||
|
</os>
|
||||||
|
<clock offset='utc'/>
|
||||||
|
<on_poweroff>destroy</on_poweroff>
|
||||||
|
<on_reboot>restart</on_reboot>
|
||||||
|
<on_crash>destroy</on_crash>
|
||||||
|
<devices>
|
||||||
|
<emulator>/usr/bin/qemu</emulator>
|
||||||
|
<disk type='block' device='disk'>
|
||||||
|
<driver name='qemu' type='qcow2' cache='none'/>
|
||||||
|
<source dev='/dev/HostVG/QEMUGuest1'/>
|
||||||
|
<target dev='hda' bus='ide'/>
|
||||||
|
</disk>
|
||||||
|
<disk type='block' device='cdrom'>
|
||||||
|
<driver name='qemu' type='raw'/>
|
||||||
|
<source dev='/dev/HostVG/QEMUGuest2'/>
|
||||||
|
<target dev='hdc' bus='ide'/>
|
||||||
|
<readonly/>
|
||||||
|
</disk>
|
||||||
|
</devices>
|
||||||
|
</domain>
|
@ -0,0 +1 @@
|
|||||||
|
LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test /usr/bin/qemu -S -M pc -m 214 -smp 1 -nographic -monitor pty -pidfile /nowhere/QEMUGuest1.pid -no-acpi -boot c -drive file=/dev/HostVG/QEMUGuest1,if=ide,index=0,fmt=qcow2,cache=writeback -drive file=/dev/HostVG/QEMUGuest2,if=ide,media=cdrom,index=2,fmt=raw -net none -serial none -parallel none -usb
|
@ -0,0 +1,29 @@
|
|||||||
|
<domain type='qemu'>
|
||||||
|
<name>QEMUGuest1</name>
|
||||||
|
<uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
|
||||||
|
<memory>219200</memory>
|
||||||
|
<currentMemory>219200</currentMemory>
|
||||||
|
<vcpu>1</vcpu>
|
||||||
|
<os>
|
||||||
|
<type arch='i686' machine='pc'>hvm</type>
|
||||||
|
<boot dev='hd'/>
|
||||||
|
</os>
|
||||||
|
<clock offset='utc'/>
|
||||||
|
<on_poweroff>destroy</on_poweroff>
|
||||||
|
<on_reboot>restart</on_reboot>
|
||||||
|
<on_crash>destroy</on_crash>
|
||||||
|
<devices>
|
||||||
|
<emulator>/usr/bin/qemu</emulator>
|
||||||
|
<disk type='block' device='disk'>
|
||||||
|
<driver name='qemu' type='qcow2' cache='writeback'/>
|
||||||
|
<source dev='/dev/HostVG/QEMUGuest1'/>
|
||||||
|
<target dev='hda' bus='ide'/>
|
||||||
|
</disk>
|
||||||
|
<disk type='block' device='cdrom'>
|
||||||
|
<driver name='qemu' type='raw'/>
|
||||||
|
<source dev='/dev/HostVG/QEMUGuest2'/>
|
||||||
|
<target dev='hdc' bus='ide'/>
|
||||||
|
<readonly/>
|
||||||
|
</disk>
|
||||||
|
</devices>
|
||||||
|
</domain>
|
@ -0,0 +1 @@
|
|||||||
|
LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test /usr/bin/qemu -S -M pc -m 214 -smp 1 -nographic -monitor pty -pidfile /nowhere/QEMUGuest1.pid -no-acpi -boot c -drive file=/dev/HostVG/QEMUGuest1,if=ide,index=0,fmt=qcow2,cache=writethrough -drive file=/dev/HostVG/QEMUGuest2,if=ide,media=cdrom,index=2,fmt=raw -net none -serial none -parallel none -usb
|
@ -0,0 +1,29 @@
|
|||||||
|
<domain type='qemu'>
|
||||||
|
<name>QEMUGuest1</name>
|
||||||
|
<uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
|
||||||
|
<memory>219200</memory>
|
||||||
|
<currentMemory>219200</currentMemory>
|
||||||
|
<vcpu>1</vcpu>
|
||||||
|
<os>
|
||||||
|
<type arch='i686' machine='pc'>hvm</type>
|
||||||
|
<boot dev='hd'/>
|
||||||
|
</os>
|
||||||
|
<clock offset='utc'/>
|
||||||
|
<on_poweroff>destroy</on_poweroff>
|
||||||
|
<on_reboot>restart</on_reboot>
|
||||||
|
<on_crash>destroy</on_crash>
|
||||||
|
<devices>
|
||||||
|
<emulator>/usr/bin/qemu</emulator>
|
||||||
|
<disk type='block' device='disk'>
|
||||||
|
<driver name='qemu' type='qcow2' cache='writethrough'/>
|
||||||
|
<source dev='/dev/HostVG/QEMUGuest1'/>
|
||||||
|
<target dev='hda' bus='ide'/>
|
||||||
|
</disk>
|
||||||
|
<disk type='block' device='cdrom'>
|
||||||
|
<driver name='qemu' type='raw'/>
|
||||||
|
<source dev='/dev/HostVG/QEMUGuest2'/>
|
||||||
|
<target dev='hdc' bus='ide'/>
|
||||||
|
<readonly/>
|
||||||
|
</disk>
|
||||||
|
</devices>
|
||||||
|
</domain>
|
@ -201,6 +201,16 @@ mymain(int argc, char **argv)
|
|||||||
QEMUD_CMD_FLAG_DRIVE_BOOT);
|
QEMUD_CMD_FLAG_DRIVE_BOOT);
|
||||||
DO_TEST("disk-drive-fmt-qcow", QEMUD_CMD_FLAG_DRIVE |
|
DO_TEST("disk-drive-fmt-qcow", QEMUD_CMD_FLAG_DRIVE |
|
||||||
QEMUD_CMD_FLAG_DRIVE_BOOT);
|
QEMUD_CMD_FLAG_DRIVE_BOOT);
|
||||||
|
DO_TEST("disk-drive-shared", QEMUD_CMD_FLAG_DRIVE);
|
||||||
|
DO_TEST("disk-drive-cache-v1-wt", QEMUD_CMD_FLAG_DRIVE);
|
||||||
|
DO_TEST("disk-drive-cache-v1-wb", QEMUD_CMD_FLAG_DRIVE);
|
||||||
|
DO_TEST("disk-drive-cache-v1-none", QEMUD_CMD_FLAG_DRIVE);
|
||||||
|
DO_TEST("disk-drive-cache-v2-wt", QEMUD_CMD_FLAG_DRIVE |
|
||||||
|
QEMUD_CMD_FLAG_DRIVE_CACHE_V2);
|
||||||
|
DO_TEST("disk-drive-cache-v2-wb", QEMUD_CMD_FLAG_DRIVE |
|
||||||
|
QEMUD_CMD_FLAG_DRIVE_CACHE_V2);
|
||||||
|
DO_TEST("disk-drive-cache-v2-none", QEMUD_CMD_FLAG_DRIVE |
|
||||||
|
QEMUD_CMD_FLAG_DRIVE_CACHE_V2);
|
||||||
DO_TEST("disk-usb", 0);
|
DO_TEST("disk-usb", 0);
|
||||||
DO_TEST("graphics-vnc", 0);
|
DO_TEST("graphics-vnc", 0);
|
||||||
DO_TEST("graphics-sdl", 0);
|
DO_TEST("graphics-sdl", 0);
|
||||||
|
@ -98,6 +98,9 @@ mymain(int argc, char **argv)
|
|||||||
DO_TEST("disk-xenvbd");
|
DO_TEST("disk-xenvbd");
|
||||||
DO_TEST("disk-usb");
|
DO_TEST("disk-usb");
|
||||||
DO_TEST("disk-drive-fmt-qcow");
|
DO_TEST("disk-drive-fmt-qcow");
|
||||||
|
DO_TEST("disk-drive-cache-v1-wt");
|
||||||
|
DO_TEST("disk-drive-cache-v1-wb");
|
||||||
|
DO_TEST("disk-drive-cache-v1-none");
|
||||||
DO_TEST("graphics-vnc");
|
DO_TEST("graphics-vnc");
|
||||||
DO_TEST("graphics-sdl");
|
DO_TEST("graphics-sdl");
|
||||||
DO_TEST("graphics-sdl-fullscreen");
|
DO_TEST("graphics-sdl-fullscreen");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user