diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 8c99f35dd2..b8f742e519 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -3728,6 +3728,12 @@ virDomainDiskDefParseXML(virCapsPtr caps, xmlStrEqual(cur->name, BAD_CAST "driver")) { driverName = virXMLPropString(cur, "name"); driverType = virXMLPropString(cur, "type"); + if (STREQ_NULLABLE(driverType, "aio")) { + /* In-place conversion to "raw", for Xen back-compat */ + driverType[0] = 'r'; + driverType[1] = 'a'; + driverType[2] = 'w'; + } cachetag = virXMLPropString(cur, "cache"); error_policy = virXMLPropString(cur, "error_policy"); rerror_policy = virXMLPropString(cur, "rerror_policy"); @@ -14844,8 +14850,6 @@ int virDomainDiskDefForeachPath(virDomainDiskDefPtr disk, if (disk->driverType) { const char *formatStr = disk->driverType; - if (STREQ(formatStr, "aio")) - formatStr = "raw"; /* Xen compat */ if ((format = virStorageFileFormatTypeFromString(formatStr)) <= 0) { virReportError(VIR_ERR_INTERNAL_ERROR, diff --git a/src/xenxs/xen_sxpr.c b/src/xenxs/xen_sxpr.c index 6ac7dffda8..38a7e137d7 100644 --- a/src/xenxs/xen_sxpr.c +++ b/src/xenxs/xen_sxpr.c @@ -443,6 +443,12 @@ xenParseSxprDisks(virDomainDefPtr def, src); goto error; } + if (STREQ(disk->driverType, "aio")) { + /* In-place conversion to "raw" */ + disk->driverType[0] = 'r'; + disk->driverType[1] = 'a'; + disk->driverType[2] = 'w'; + } src = offset + 1; /* Its possible to use blktap driver for block devs @@ -1831,9 +1837,11 @@ xenFormatSxprDisk(virDomainDiskDefPtr def, if (def->driverName) { if (STREQ(def->driverName, "tap") || STREQ(def->driverName, "tap2")) { + const char *type = def->driverType ? def->driverType : "aio"; + if (STREQ(type, "raw")) + type = "aio"; virBufferEscapeSexpr(buf, "(uname '%s:", def->driverName); - virBufferEscapeSexpr(buf, "%s:", - def->driverType ? def->driverType : "aio"); + virBufferEscapeSexpr(buf, "%s:", type); virBufferEscapeSexpr(buf, "%s')", def->src); } else { virBufferEscapeSexpr(buf, "(uname '%s:", def->driverName); diff --git a/src/xenxs/xen_xm.c b/src/xenxs/xen_xm.c index 40a99be378..c564d35fbd 100644 --- a/src/xenxs/xen_xm.c +++ b/src/xenxs/xen_xm.c @@ -566,6 +566,12 @@ xenParseXM(virConfPtr conf, int xendConfigVersion, disk->src); goto cleanup; } + if (STREQ(disk->driverType, "aio")) { + /* In-place conversion to "raw" */ + disk->driverType[0] = 'r'; + disk->driverType[1] = 'a'; + disk->driverType[2] = 'w'; + } /* Strip the prefix we found off the source file name */ memmove(disk->src, disk->src+(tmp-disk->src)+1, @@ -1203,9 +1209,12 @@ static int xenFormatXMDisk(virConfValuePtr list, if(disk->src) { if (disk->driverName) { + const char *type = disk->driverType ? disk->driverType : "aio"; + if (STREQ(type, "raw")) + type = "aio"; virBufferAsprintf(&buf, "%s:", disk->driverName); if (STREQ(disk->driverName, "tap")) - virBufferAsprintf(&buf, "%s:", disk->driverType ? disk->driverType : "aio"); + virBufferAsprintf(&buf, "%s:", type); } else { switch (disk->type) { case VIR_DOMAIN_DISK_TYPE_FILE: diff --git a/tests/sexpr2xmldata/sexpr2xml-curmem.xml b/tests/sexpr2xmldata/sexpr2xml-curmem.xml index ac5ab51303..1edc52b27b 100644 --- a/tests/sexpr2xmldata/sexpr2xml-curmem.xml +++ b/tests/sexpr2xmldata/sexpr2xml-curmem.xml @@ -17,7 +17,7 @@ restart - + diff --git a/tests/sexpr2xmldata/sexpr2xml-disk-block-shareable.xml b/tests/sexpr2xmldata/sexpr2xml-disk-block-shareable.xml index e4cd3a876f..571b349068 100644 --- a/tests/sexpr2xmldata/sexpr2xml-disk-block-shareable.xml +++ b/tests/sexpr2xmldata/sexpr2xml-disk-block-shareable.xml @@ -14,7 +14,7 @@ restart - + diff --git a/tests/sexpr2xmldata/sexpr2xml-disk-drv-blktap-raw.xml b/tests/sexpr2xmldata/sexpr2xml-disk-drv-blktap-raw.xml index 98ed5c5a8b..df8e7ecb2e 100644 --- a/tests/sexpr2xmldata/sexpr2xml-disk-drv-blktap-raw.xml +++ b/tests/sexpr2xmldata/sexpr2xml-disk-drv-blktap-raw.xml @@ -16,7 +16,7 @@ destroy - + diff --git a/tests/sexpr2xmldata/sexpr2xml-disk-drv-blktap2-raw.xml b/tests/sexpr2xmldata/sexpr2xml-disk-drv-blktap2-raw.xml index b61182ba24..ea93195c8d 100644 --- a/tests/sexpr2xmldata/sexpr2xml-disk-drv-blktap2-raw.xml +++ b/tests/sexpr2xmldata/sexpr2xml-disk-drv-blktap2-raw.xml @@ -16,7 +16,7 @@ destroy - +