mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-07 17:28:15 +00:00
Add blktap2 support to xend driver
Xen4.0 includes a new blktap2 implementation, which is specified with 'tap2' prefix. AFAICT it's configuration syntax is identical to blktap, with exception of 'tap2' vs 'tap' prefix. This patch takes the simple approach of accepting and generating sexp containing 'tap2' prefix.
This commit is contained in:
parent
4aad5fbb96
commit
2b3109e2bd
@ -1386,7 +1386,8 @@ xenDaemonParseSxprDisks(virDomainDefPtr def,
|
||||
but blktap disks ended up in a differently named
|
||||
(device (tap ....)) block.... */
|
||||
if (sexpr_lookup(node, "device/vbd") ||
|
||||
sexpr_lookup(node, "device/tap")) {
|
||||
sexpr_lookup(node, "device/tap") ||
|
||||
sexpr_lookup(node, "device/tap2")) {
|
||||
char *offset;
|
||||
const char *src = NULL;
|
||||
const char *dst = NULL;
|
||||
@ -1397,6 +1398,10 @@ xenDaemonParseSxprDisks(virDomainDefPtr def,
|
||||
src = sexpr_node(node, "device/vbd/uname");
|
||||
dst = sexpr_node(node, "device/vbd/dev");
|
||||
mode = sexpr_node(node, "device/vbd/mode");
|
||||
} else if (sexpr_lookup(node, "device/tap2")) {
|
||||
src = sexpr_node(node, "device/tap2/uname");
|
||||
dst = sexpr_node(node, "device/tap2/dev");
|
||||
mode = sexpr_node(node, "device/tap2/mode");
|
||||
} else {
|
||||
src = sexpr_node(node, "device/tap/uname");
|
||||
dst = sexpr_node(node, "device/tap/dev");
|
||||
@ -1444,7 +1449,8 @@ xenDaemonParseSxprDisks(virDomainDefPtr def,
|
||||
|
||||
src = offset + 1;
|
||||
|
||||
if (STREQ (disk->driverName, "tap")) {
|
||||
if (STREQ (disk->driverName, "tap") ||
|
||||
STREQ (disk->driverName, "tap2")) {
|
||||
offset = strchr(src, ':');
|
||||
if (!offset) {
|
||||
virXendError(VIR_ERR_INTERNAL_ERROR,
|
||||
@ -5306,9 +5312,10 @@ xenDaemonFormatSxprDisk(virConnectPtr conn ATTRIBUTE_UNUSED,
|
||||
/* Normally disks are in a (device (vbd ...)) block
|
||||
* but blktap disks ended up in a differently named
|
||||
* (device (tap ....)) block.... */
|
||||
if (def->driverName &&
|
||||
STREQ(def->driverName, "tap")) {
|
||||
if (def->driverName && STREQ(def->driverName, "tap")) {
|
||||
virBufferAddLit(buf, "(tap ");
|
||||
} else if (def->driverName && STREQ(def->driverName, "tap2")) {
|
||||
virBufferAddLit(buf, "(tap2 ");
|
||||
} else {
|
||||
virBufferAddLit(buf, "(vbd ");
|
||||
}
|
||||
@ -5329,7 +5336,8 @@ xenDaemonFormatSxprDisk(virConnectPtr conn ATTRIBUTE_UNUSED,
|
||||
|
||||
if (def->src) {
|
||||
if (def->driverName) {
|
||||
if (STREQ(def->driverName, "tap")) {
|
||||
if (STREQ(def->driverName, "tap") ||
|
||||
STREQ(def->driverName, "tap2")) {
|
||||
virBufferVSprintf(buf, "(uname '%s:%s:%s')",
|
||||
def->driverName,
|
||||
def->driverType ? def->driverType : "aio",
|
||||
@ -5928,6 +5936,9 @@ virDomainXMLDevID(virDomainPtr domain,
|
||||
if (dev->data.disk->driverName &&
|
||||
STREQ(dev->data.disk->driverName, "tap"))
|
||||
strcpy(class, "tap");
|
||||
else if (dev->data.disk->driverName &&
|
||||
STREQ(dev->data.disk->driverName, "tap2"))
|
||||
strcpy(class, "tap2");
|
||||
else
|
||||
strcpy(class, "vbd");
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user