On Sat, Oct 13, 2012 at 4:59 PM, Eric Blake <eblake@xxxxxxxxxx> wrote: > We have historically allowed 'aio' as a synonym for 'raw' for > back-compat to xen, but since a future patch will move to using > an enum value, we have to pick one to be our preferred output > name. This is a slight change in the XML, but the sexpr and > xm outputs should still be identical. > > * src/conf/domain_conf.c (virDomainDiskDefForeachPath): Move aio > back-compat... > (virDomainDiskDefParseXML): ...to parse time. > * src/xenxs/xen_sxpr.c (xenParseSxprDisks, xenFormatSxprDisk): ...and > to output time. > * src/xenxs/xen_xm.c (xenParseXM, xenFormatXMDisk): Likewise. > * tests/sexpr2xmldata/sexpr2xml-*.xml: Update tests. > --- > src/conf/domain_conf.c | 4 ++-- > src/xenxs/xen_sxpr.c | 8 ++++++-- > src/xenxs/xen_xm.c | 7 ++++++- > tests/sexpr2xmldata/sexpr2xml-curmem.xml | 2 +- > tests/sexpr2xmldata/sexpr2xml-disk-block-shareable.xml | 2 +- > tests/sexpr2xmldata/sexpr2xml-disk-drv-blktap-raw.xml | 2 +- > tests/sexpr2xmldata/sexpr2xml-disk-drv-blktap2-raw.xml | 2 +- > 7 files changed, 18 insertions(+), 9 deletions(-) > > diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c > index 460a57c..52e8f6c 100644 > --- a/src/conf/domain_conf.c > +++ b/src/conf/domain_conf.c > @@ -3700,6 +3700,8 @@ virDomainDiskDefParseXML(virCapsPtr caps, > xmlStrEqual(cur->name, BAD_CAST "driver")) { > driverName = virXMLPropString(cur, "name"); > driverType = virXMLPropString(cur, "type"); > + if (STREQ_NULLABLE(driverType, "aio")) > + memcpy(driverType, "raw", strlen("raw")); Two nits here that don't really have to be applied. First is that the string has to be specified twice so I'd almost prefer there to be a macro for this that's like: #define STRREPLACE(dest, src) memcpy((dest), (src), strlen((src)) The second would be to potentially use sizeof() on a buffer that's really a const ro data string. Just cause strlen() is a runtime check. Obviously this appears throughout this whole commit. > cachetag = virXMLPropString(cur, "cache"); > error_policy = virXMLPropString(cur, "error_policy"); > rerror_policy = virXMLPropString(cur, "rerror_policy"); > @@ -14645,8 +14647,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 6ac7dff..3d20350 100644 > --- a/src/xenxs/xen_sxpr.c > +++ b/src/xenxs/xen_sxpr.c > @@ -443,6 +443,8 @@ xenParseSxprDisks(virDomainDefPtr def, > src); > goto error; > } > + if (STREQ(disk->driverType, "aio")) > + memcpy(disk->driverType, "raw", strlen("raw")); > > src = offset + 1; > /* Its possible to use blktap driver for block devs > @@ -1831,9 +1833,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 40a99be..41e6744 100644 > --- a/src/xenxs/xen_xm.c > +++ b/src/xenxs/xen_xm.c > @@ -566,6 +566,8 @@ xenParseXM(virConfPtr conf, int xendConfigVersion, > disk->src); > goto cleanup; > } > + if (STREQ(disk->driverType, "aio")) > + memcpy(disk->driverType, "raw", strlen("raw")); > > /* Strip the prefix we found off the source file name */ > memmove(disk->src, disk->src+(tmp-disk->src)+1, > @@ -1203,9 +1205,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 ac5ab51..1edc52b 100644 > --- a/tests/sexpr2xmldata/sexpr2xml-curmem.xml > +++ b/tests/sexpr2xmldata/sexpr2xml-curmem.xml > @@ -17,7 +17,7 @@ > <on_crash>restart</on_crash> > <devices> > <disk type='file' device='disk'> > - <driver name='tap' type='aio'/> > + <driver name='tap' type='raw'/> > <source file='/xen/rhel5.img'/> > <target dev='xvda' bus='xen'/> > </disk> > diff --git a/tests/sexpr2xmldata/sexpr2xml-disk-block-shareable.xml b/tests/sexpr2xmldata/sexpr2xml-disk-block-shareable.xml > index e4cd3a8..571b349 100644 > --- a/tests/sexpr2xmldata/sexpr2xml-disk-block-shareable.xml > +++ b/tests/sexpr2xmldata/sexpr2xml-disk-block-shareable.xml > @@ -14,7 +14,7 @@ > <on_crash>restart</on_crash> > <devices> > <disk type='file' device='disk'> > - <driver name='tap' type='aio'/> > + <driver name='tap' type='raw'/> > <source file='/var/lib/xen/images/rhel5pv.img'/> > <target dev='xvda' bus='xen'/> > <shareable/> > diff --git a/tests/sexpr2xmldata/sexpr2xml-disk-drv-blktap-raw.xml b/tests/sexpr2xmldata/sexpr2xml-disk-drv-blktap-raw.xml > index 98ed5c5..df8e7ec 100644 > --- a/tests/sexpr2xmldata/sexpr2xml-disk-drv-blktap-raw.xml > +++ b/tests/sexpr2xmldata/sexpr2xml-disk-drv-blktap-raw.xml > @@ -16,7 +16,7 @@ > <on_crash>destroy</on_crash> > <devices> > <disk type='file' device='disk'> > - <driver name='tap' type='aio'/> > + <driver name='tap' type='raw'/> > <source file='/root/some.img'/> > <target dev='xvda' bus='xen'/> > </disk> > diff --git a/tests/sexpr2xmldata/sexpr2xml-disk-drv-blktap2-raw.xml b/tests/sexpr2xmldata/sexpr2xml-disk-drv-blktap2-raw.xml > index b61182b..ea93195 100644 > --- a/tests/sexpr2xmldata/sexpr2xml-disk-drv-blktap2-raw.xml > +++ b/tests/sexpr2xmldata/sexpr2xml-disk-drv-blktap2-raw.xml > @@ -16,7 +16,7 @@ > <on_crash>destroy</on_crash> > <devices> > <disk type='file' device='disk'> > - <driver name='tap2' type='aio'/> > + <driver name='tap2' type='raw'/> > <source file='/root/some.img'/> > <target dev='xvda' bus='xen'/> > </disk> > -- Past the nits above. Visual ACK as well. -- Doug Goldstein -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list