Part of a series of cleanups to use new accessor methods.
* src/vbox/vbox_tmpl.c (vboxDomainGetXMLDesc, vboxAttachDrives)
(vboxDomainAttachDeviceImpl, vboxDomainDetachDevice): Use
accessors.
Signed-off-by: Eric Blake <eblake(a)redhat.com>
---
src/vbox/vbox_tmpl.c | 137 +++++++++++++++++++++++++++++----------------------
1 file changed, 77 insertions(+), 60 deletions(-)
diff --git a/src/vbox/vbox_tmpl.c b/src/vbox/vbox_tmpl.c
index 2aeddd0..9df25c5 100644
--- a/src/vbox/vbox_tmpl.c
+++ b/src/vbox/vbox_tmpl.c
@@ -2738,7 +2738,8 @@ static char *vboxDomainGetXMLDesc(virDomainPtr dom, unsigned int
flags) {
if (VIR_ALLOC(def->disks[i]) >= 0) {
def->disks[i]->device = VIR_DOMAIN_DISK_DEVICE_DISK;
def->disks[i]->bus = VIR_DOMAIN_DISK_BUS_IDE;
- def->disks[i]->type = VIR_DOMAIN_DISK_TYPE_FILE;
+ virDomainDiskSetType(def->disks[i],
+ VIR_DOMAIN_DISK_TYPE_FILE);
}
}
}
@@ -2755,7 +2756,8 @@ static char *vboxDomainGetXMLDesc(virDomainPtr dom, unsigned int
flags) {
if (hddType == HardDiskType_Immutable)
def->disks[hddNum]->readonly = true;
- ignore_value(VIR_STRDUP(def->disks[hddNum]->src, hddlocation));
+ ignore_value(virDomainDiskSetSource(def->disks[hddNum],
+ hddlocation));
ignore_value(VIR_STRDUP(def->disks[hddNum]->dst,
"hda"));
hddNum++;
@@ -2776,7 +2778,8 @@ static char *vboxDomainGetXMLDesc(virDomainPtr dom, unsigned int
flags) {
if (hddType == HardDiskType_Immutable)
def->disks[hddNum]->readonly = true;
- ignore_value(VIR_STRDUP(def->disks[hddNum]->src, hddlocation));
+ ignore_value(virDomainDiskSetSource(def->disks[hddNum],
+ hddlocation));
ignore_value(VIR_STRDUP(def->disks[hddNum]->dst,
"hdb"));
hddNum++;
@@ -2797,7 +2800,8 @@ static char *vboxDomainGetXMLDesc(virDomainPtr dom, unsigned int
flags) {
if (hddType == HardDiskType_Immutable)
def->disks[hddNum]->readonly = true;
- ignore_value(VIR_STRDUP(def->disks[hddNum]->src, hddlocation));
+ ignore_value(virDomainDiskSetSource(def->disks[hddNum],
+ hddlocation));
ignore_value(VIR_STRDUP(def->disks[hddNum]->dst,
"hdd"));
hddNum++;
@@ -2884,10 +2888,11 @@ static char *vboxDomainGetXMLDesc(virDomainPtr dom, unsigned int
flags) {
medium->vtbl->GetLocation(medium, &mediumLocUtf16);
VBOX_UTF16_TO_UTF8(mediumLocUtf16, &mediumLocUtf8);
VBOX_UTF16_FREE(mediumLocUtf16);
- ignore_value(VIR_STRDUP(def->disks[diskCount]->src,
mediumLocUtf8));
+ ignore_value(virDomainDiskSetSource(def->disks[diskCount],
+ mediumLocUtf8));
VBOX_UTF8_FREE(mediumLocUtf8);
- if (!(def->disks[diskCount]->src)) {
+ if (!virDomainDiskGetSource(def->disks[diskCount])) {
VBOX_RELEASE(medium);
VBOX_RELEASE(storageController);
error = true;
@@ -2936,7 +2941,8 @@ static char *vboxDomainGetXMLDesc(virDomainPtr dom, unsigned int
flags) {
if (readOnly == PR_TRUE)
def->disks[diskCount]->readonly = true;
- def->disks[diskCount]->type = VIR_DOMAIN_DISK_TYPE_FILE;
+ virDomainDiskSetType(def->disks[diskCount],
+ VIR_DOMAIN_DISK_TYPE_FILE);
VBOX_RELEASE(medium);
VBOX_RELEASE(storageController);
@@ -3211,9 +3217,10 @@ sharedFoldersCleanup:
if (VIR_ALLOC(def->disks[def->ndisks - 1]) >= 0) {
def->disks[def->ndisks - 1]->device =
VIR_DOMAIN_DISK_DEVICE_CDROM;
def->disks[def->ndisks - 1]->bus =
VIR_DOMAIN_DISK_BUS_IDE;
- def->disks[def->ndisks - 1]->type =
VIR_DOMAIN_DISK_TYPE_FILE;
+ virDomainDiskSetType(def->disks[def->ndisks - 1],
+ VIR_DOMAIN_DISK_TYPE_FILE);
def->disks[def->ndisks - 1]->readonly = true;
- ignore_value(VIR_STRDUP(def->disks[def->ndisks -
1]->src, location));
+
ignore_value(virDomainDiskSetSource(def->disks[def->ndisks - 1], location));
ignore_value(VIR_STRDUP(def->disks[def->ndisks -
1]->dst, "hdc"));
def->ndisks--;
} else {
@@ -3257,9 +3264,10 @@ sharedFoldersCleanup:
if (VIR_ALLOC(def->disks[def->ndisks - 1]) >= 0)
{
def->disks[def->ndisks - 1]->device =
VIR_DOMAIN_DISK_DEVICE_FLOPPY;
def->disks[def->ndisks - 1]->bus =
VIR_DOMAIN_DISK_BUS_FDC;
- def->disks[def->ndisks - 1]->type =
VIR_DOMAIN_DISK_TYPE_FILE;
+ virDomainDiskSetType(def->disks[def->ndisks -
1],
+ VIR_DOMAIN_DISK_TYPE_FILE);
def->disks[def->ndisks - 1]->readonly =
false;
- ignore_value(VIR_STRDUP(def->disks[def->ndisks
- 1]->src, location));
+
ignore_value(virDomainDiskSetSource(def->disks[def->ndisks - 1], location));
ignore_value(VIR_STRDUP(def->disks[def->ndisks
- 1]->dst, "fda"));
def->ndisks--;
} else {
@@ -3847,14 +3855,19 @@ vboxAttachDrives(virDomainDefPtr def, vboxGlobalData *data,
IMachine *machine)
return;
for (i = 0; i < def->ndisks; i++) {
- VIR_DEBUG("disk(%zu) type: %d", i, def->disks[i]->type);
+ const char *src = virDomainDiskGetSource(def->disks[i]);
+ int type = virDomainDiskGetType(def->disks[i]);
+ int format = virDomainDiskGetFormat(def->disks[i]);
+
+ VIR_DEBUG("disk(%zu) type: %d", i, type);
VIR_DEBUG("disk(%zu) device: %d", i, def->disks[i]->device);
VIR_DEBUG("disk(%zu) bus: %d", i, def->disks[i]->bus);
- VIR_DEBUG("disk(%zu) src: %s", i, def->disks[i]->src);
+ VIR_DEBUG("disk(%zu) src: %s", i, src);
VIR_DEBUG("disk(%zu) dst: %s", i, def->disks[i]->dst);
- VIR_DEBUG("disk(%zu) driverName: %s", i,
def->disks[i]->driverName);
+ VIR_DEBUG("disk(%zu) driverName: %s", i,
+ virDomainDiskGetDriver(def->disks[i]));
VIR_DEBUG("disk(%zu) driverType: %s", i,
- virStorageFileFormatTypeToString(def->disks[i]->format));
+ virStorageFileFormatTypeToString(format));
VIR_DEBUG("disk(%zu) cachemode: %d", i,
def->disks[i]->cachemode);
VIR_DEBUG("disk(%zu) readonly: %s", i,
(def->disks[i]->readonly
? "True" : "False"));
@@ -3862,8 +3875,7 @@ vboxAttachDrives(virDomainDefPtr def, vboxGlobalData *data, IMachine
*machine)
? "True" : "False"));
if (def->disks[i]->device == VIR_DOMAIN_DISK_DEVICE_CDROM) {
- if (def->disks[i]->type == VIR_DOMAIN_DISK_TYPE_FILE &&
- def->disks[i]->src != NULL) {
+ if (type == VIR_DOMAIN_DISK_TYPE_FILE && src) {
IDVDDrive *dvdDrive = NULL;
/* Currently CDROM/DVD Drive is always IDE
* Secondary Master so neglecting the following
@@ -3879,7 +3891,7 @@ vboxAttachDrives(virDomainDefPtr def, vboxGlobalData *data, IMachine
*machine)
vboxIID dvduuid = VBOX_IID_INITIALIZER;
vboxIID dvdemptyuuid = VBOX_IID_INITIALIZER;
- VBOX_UTF8_TO_UTF16(def->disks[i]->src, &dvdfileUtf16);
+ VBOX_UTF8_TO_UTF16(src, &dvdfileUtf16);
data->vboxObj->vtbl->FindDVDImage(data->vboxObj,
dvdfileUtf16, &dvdImage);
@@ -3896,13 +3908,13 @@ vboxAttachDrives(virDomainDefPtr def, vboxGlobalData *data,
IMachine *machine)
virReportError(VIR_ERR_INTERNAL_ERROR,
_("can't get the uuid of the file to
"
"be attached to cdrom: %s,
rc=%08x"),
- def->disks[i]->src, (unsigned)rc);
+ src, (unsigned)rc);
} else {
rc = dvdDrive->vtbl->MountImage(dvdDrive,
dvduuid.value);
if (NS_FAILED(rc)) {
virReportError(VIR_ERR_INTERNAL_ERROR,
_("could not attach the file to
cdrom: %s, rc=%08x"),
- def->disks[i]->src, (unsigned)rc);
+ src, (unsigned)rc);
} else {
DEBUGIID("CD/DVDImage UUID:", dvduuid.value);
}
@@ -3914,11 +3926,10 @@ vboxAttachDrives(virDomainDefPtr def, vboxGlobalData *data,
IMachine *machine)
VBOX_UTF16_FREE(dvdfileUtf16);
VBOX_RELEASE(dvdDrive);
}
- } else if (def->disks[i]->type == VIR_DOMAIN_DISK_TYPE_BLOCK) {
+ } else if (type == VIR_DOMAIN_DISK_TYPE_BLOCK) {
}
} else if (def->disks[i]->device == VIR_DOMAIN_DISK_DEVICE_DISK) {
- if (def->disks[i]->type == VIR_DOMAIN_DISK_TYPE_FILE &&
- def->disks[i]->src != NULL) {
+ if (type == VIR_DOMAIN_DISK_TYPE_FILE && src) {
IHardDisk *hardDisk = NULL;
PRUnichar *hddfileUtf16 = NULL;
vboxIID hdduuid = VBOX_IID_INITIALIZER;
@@ -3929,7 +3940,7 @@ vboxAttachDrives(virDomainDefPtr def, vboxGlobalData *data, IMachine
*machine)
* is requested to be connected to Secondary master
*/
- VBOX_UTF8_TO_UTF16(def->disks[i]->src, &hddfileUtf16);
+ VBOX_UTF8_TO_UTF16(src, &hddfileUtf16);
VBOX_UTF8_TO_UTF16("", &hddEmpty);
data->vboxObj->vtbl->FindHardDisk(data->vboxObj,
hddfileUtf16,
@@ -3960,7 +3971,7 @@ vboxAttachDrives(virDomainDefPtr def, vboxGlobalData *data, IMachine
*machine)
virReportError(VIR_ERR_INTERNAL_ERROR,
_("can't get the uuid of the file to be
"
"attached as harddisk: %s, rc=%08x"),
- def->disks[i]->src, (unsigned)rc);
+ src, (unsigned)rc);
} else {
if (def->disks[i]->readonly) {
hardDisk->vtbl->SetType(hardDisk,
@@ -4007,7 +4018,7 @@ vboxAttachDrives(virDomainDefPtr def, vboxGlobalData *data, IMachine
*machine)
virReportError(VIR_ERR_INTERNAL_ERROR,
_("could not attach the file as
"
"harddisk: %s, rc=%08x"),
- def->disks[i]->src,
(unsigned)rc);
+ src, (unsigned)rc);
} else {
DEBUGIID("Attached HDD with UUID",
hdduuid.value);
}
@@ -4019,11 +4030,10 @@ vboxAttachDrives(virDomainDefPtr def, vboxGlobalData *data,
IMachine *machine)
vboxIIDUnalloc(&hdduuid);
VBOX_UTF16_FREE(hddEmpty);
VBOX_UTF16_FREE(hddfileUtf16);
- } else if (def->disks[i]->type == VIR_DOMAIN_DISK_TYPE_BLOCK) {
+ } else if (type == VIR_DOMAIN_DISK_TYPE_BLOCK) {
}
} else if (def->disks[i]->device == VIR_DOMAIN_DISK_DEVICE_FLOPPY) {
- if (def->disks[i]->type == VIR_DOMAIN_DISK_TYPE_FILE &&
- def->disks[i]->src != NULL) {
+ if (type == VIR_DOMAIN_DISK_TYPE_FILE && src) {
IFloppyDrive *floppyDrive;
machine->vtbl->GetFloppyDrive(machine, &floppyDrive);
if (floppyDrive) {
@@ -4034,7 +4044,7 @@ vboxAttachDrives(virDomainDefPtr def, vboxGlobalData *data, IMachine
*machine)
vboxIID fduuid = VBOX_IID_INITIALIZER;
vboxIID fdemptyuuid = VBOX_IID_INITIALIZER;
- VBOX_UTF8_TO_UTF16(def->disks[i]->src, &fdfileUtf16);
+ VBOX_UTF8_TO_UTF16(src, &fdfileUtf16);
rc =
data->vboxObj->vtbl->FindFloppyImage(data->vboxObj,
fdfileUtf16,
&floppyImage);
@@ -4053,7 +4063,7 @@ vboxAttachDrives(virDomainDefPtr def, vboxGlobalData *data, IMachine
*machine)
virReportError(VIR_ERR_INTERNAL_ERROR,
_("can't get the uuid of the file
to "
"be attached to floppy drive: %s,
rc=%08x"),
- def->disks[i]->src, (unsigned)rc);
+ src, (unsigned)rc);
} else {
rc = floppyDrive->vtbl->MountImage(floppyDrive,
fduuid.value);
@@ -4061,7 +4071,7 @@ vboxAttachDrives(virDomainDefPtr def, vboxGlobalData *data, IMachine
*machine)
virReportError(VIR_ERR_INTERNAL_ERROR,
_("could not attach the file to
"
"floppy drive: %s,
rc=%08x"),
- def->disks[i]->src,
(unsigned)rc);
+ src, (unsigned)rc);
} else {
DEBUGIID("floppyImage UUID",
fduuid.value);
}
@@ -4073,7 +4083,7 @@ vboxAttachDrives(virDomainDefPtr def, vboxGlobalData *data, IMachine
*machine)
}
VBOX_RELEASE(floppyDrive);
}
- } else if (def->disks[i]->type == VIR_DOMAIN_DISK_TYPE_BLOCK) {
+ } else if (type == VIR_DOMAIN_DISK_TYPE_BLOCK) {
}
}
}
@@ -4128,22 +4138,26 @@ vboxAttachDrives(virDomainDefPtr def, vboxGlobalData *data,
IMachine *machine)
}
for (i = 0; i < def->ndisks && !error; i++) {
- VIR_DEBUG("disk(%zu) type: %d", i, def->disks[i]->type);
+ const char *src = virDomainDiskGetSource(def->disks[i]);
+ int type = virDomainDiskGetType(def->disks[i]);
+ int format = virDomainDiskGetFormat(def->disks[i]);
+
+ VIR_DEBUG("disk(%zu) type: %d", i, type);
VIR_DEBUG("disk(%zu) device: %d", i, def->disks[i]->device);
VIR_DEBUG("disk(%zu) bus: %d", i, def->disks[i]->bus);
- VIR_DEBUG("disk(%zu) src: %s", i, def->disks[i]->src);
+ VIR_DEBUG("disk(%zu) src: %s", i, src);
VIR_DEBUG("disk(%zu) dst: %s", i, def->disks[i]->dst);
- VIR_DEBUG("disk(%zu) driverName: %s", i,
def->disks[i]->driverName);
+ VIR_DEBUG("disk(%zu) driverName: %s", i,
+ virDomainDiskGetDriver(def->disks[i]));
VIR_DEBUG("disk(%zu) driverType: %s", i,
- virStorageFileFormatTypeToString(def->disks[i]->format));
+ virStorageFileFormatTypeToString(format));
VIR_DEBUG("disk(%zu) cachemode: %d", i,
def->disks[i]->cachemode);
VIR_DEBUG("disk(%zu) readonly: %s", i,
(def->disks[i]->readonly
? "True" : "False"));
VIR_DEBUG("disk(%zu) shared: %s", i, (def->disks[i]->shared
? "True" : "False"));
- if (def->disks[i]->type == VIR_DOMAIN_DISK_TYPE_FILE &&
- def->disks[i]->src != NULL) {
+ if (type == VIR_DOMAIN_DISK_TYPE_FILE && src) {
IMedium *medium = NULL;
PRUnichar *mediumUUID = NULL;
PRUnichar *mediumFileUtf16 = NULL;
@@ -4156,7 +4170,7 @@ vboxAttachDrives(virDomainDefPtr def, vboxGlobalData *data, IMachine
*machine)
PRInt32 devicePort = 0;
PRInt32 deviceSlot = 0;
- VBOX_UTF8_TO_UTF16(def->disks[i]->src, &mediumFileUtf16);
+ VBOX_UTF8_TO_UTF16(src, &mediumFileUtf16);
if (def->disks[i]->device == VIR_DOMAIN_DISK_DEVICE_DISK) {
deviceType = DeviceType_HardDisk;
@@ -4245,7 +4259,7 @@ vboxAttachDrives(virDomainDefPtr def, vboxGlobalData *data, IMachine
*machine)
virReportError(VIR_ERR_INTERNAL_ERROR,
_("Failed to attach the following disk/dvd/floppy
"
"to the machine: %s, rc=%08x"),
- def->disks[i]->src, (unsigned)rc);
+ src, (unsigned)rc);
VBOX_UTF16_FREE(mediumFileUtf16);
continue;
}
@@ -4255,7 +4269,7 @@ vboxAttachDrives(virDomainDefPtr def, vboxGlobalData *data, IMachine
*machine)
virReportError(VIR_ERR_INTERNAL_ERROR,
_("can't get the uuid of the file to be attached
"
"as harddisk/dvd/floppy: %s, rc=%08x"),
- def->disks[i]->src, (unsigned)rc);
+ src, (unsigned)rc);
VBOX_RELEASE(medium);
VBOX_UTF16_FREE(mediumFileUtf16);
continue;
@@ -4297,7 +4311,7 @@ vboxAttachDrives(virDomainDefPtr def, vboxGlobalData *data, IMachine
*machine)
_("can't get the port/slot number of "
"harddisk/dvd/floppy to be attached: "
"%s, rc=%08x"),
- def->disks[i]->src, (unsigned)rc);
+ src, (unsigned)rc);
VBOX_RELEASE(medium);
VBOX_UTF16_FREE(mediumUUID);
VBOX_UTF16_FREE(mediumFileUtf16);
@@ -4320,7 +4334,7 @@ vboxAttachDrives(virDomainDefPtr def, vboxGlobalData *data, IMachine
*machine)
virReportError(VIR_ERR_INTERNAL_ERROR,
_("could not attach the file as "
"harddisk/dvd/floppy: %s, rc=%08x"),
- def->disks[i]->src, (unsigned)rc);
+ src, (unsigned)rc);
} else {
DEBUGIID("Attached HDD/DVD/Floppy with UUID", mediumUUID);
}
@@ -5480,9 +5494,11 @@ static int vboxDomainAttachDeviceImpl(virDomainPtr dom,
if (NS_SUCCEEDED(rc) && machine) {
if (dev->type == VIR_DOMAIN_DEVICE_DISK) {
#if VBOX_API_VERSION < 3001000
+ const char *src = virDomainDiskGetSource(dev->data.disk);
+ int type = virDomainDiskGetType(dev->data.disk);
+
if (dev->data.disk->device == VIR_DOMAIN_DISK_DEVICE_CDROM) {
- if (dev->data.disk->type == VIR_DOMAIN_DISK_TYPE_FILE
&&
- dev->data.disk->src != NULL) {
+ if (type == VIR_DOMAIN_DISK_TYPE_FILE && src) {
IDVDDrive *dvdDrive = NULL;
/* Currently CDROM/DVD Drive is always IDE
* Secondary Master so neglecting the following
@@ -5495,7 +5511,7 @@ static int vboxDomainAttachDeviceImpl(virDomainPtr dom,
vboxIID dvduuid = VBOX_IID_INITIALIZER;
vboxIID dvdemptyuuid = VBOX_IID_INITIALIZER;
- VBOX_UTF8_TO_UTF16(dev->data.disk->src,
&dvdfileUtf16);
+ VBOX_UTF8_TO_UTF16(src, &dvdfileUtf16);
data->vboxObj->vtbl->FindDVDImage(data->vboxObj, dvdfileUtf16,
&dvdImage);
if (!dvdImage) {
@@ -5507,7 +5523,7 @@ static int vboxDomainAttachDeviceImpl(virDomainPtr dom,
virReportError(VIR_ERR_INTERNAL_ERROR,
_("can't get the uuid of
the file to "
"be attached to cdrom: %s,
rc=%08x"),
- dev->data.disk->src,
(unsigned)rc);
+ src, (unsigned)rc);
} else {
/* unmount the previous mounted image */
dvdDrive->vtbl->Unmount(dvdDrive);
@@ -5515,7 +5531,7 @@ static int vboxDomainAttachDeviceImpl(virDomainPtr dom,
if (NS_FAILED(rc)) {
virReportError(VIR_ERR_INTERNAL_ERROR,
_("could not attach the
file to cdrom: %s, rc=%08x"),
- dev->data.disk->src,
(unsigned)rc);
+ src, (unsigned)rc);
} else {
ret = 0;
DEBUGIID("CD/DVD Image UUID:",
dvduuid.value);
@@ -5528,11 +5544,10 @@ static int vboxDomainAttachDeviceImpl(virDomainPtr dom,
VBOX_UTF16_FREE(dvdfileUtf16);
VBOX_RELEASE(dvdDrive);
}
- } else if (dev->data.disk->type ==
VIR_DOMAIN_DISK_TYPE_BLOCK) {
+ } else if (type == VIR_DOMAIN_DISK_TYPE_BLOCK) {
}
} else if (dev->data.disk->device ==
VIR_DOMAIN_DISK_DEVICE_FLOPPY) {
- if (dev->data.disk->type == VIR_DOMAIN_DISK_TYPE_FILE
&&
- dev->data.disk->src != NULL) {
+ if (type == VIR_DOMAIN_DISK_TYPE_FILE && src) {
IFloppyDrive *floppyDrive;
machine->vtbl->GetFloppyDrive(machine,
&floppyDrive);
if (floppyDrive) {
@@ -5542,7 +5557,7 @@ static int vboxDomainAttachDeviceImpl(virDomainPtr dom,
PRUnichar *fdfileUtf16 = NULL;
vboxIID fduuid = VBOX_IID_INITIALIZER;
vboxIID fdemptyuuid = VBOX_IID_INITIALIZER;
- VBOX_UTF8_TO_UTF16(dev->data.disk->src,
&fdfileUtf16);
+ VBOX_UTF8_TO_UTF16(src, &fdfileUtf16);
rc =
data->vboxObj->vtbl->FindFloppyImage(data->vboxObj,
fdfileUtf16,
&floppyImage);
@@ -5560,13 +5575,13 @@ static int vboxDomainAttachDeviceImpl(virDomainPtr dom,
virReportError(VIR_ERR_INTERNAL_ERROR,
_("can't get the uuid
of the file to be "
"attached to floppy
drive: %s, rc=%08x"),
- dev->data.disk->src,
(unsigned)rc);
+ src, (unsigned)rc);
} else {
rc =
floppyDrive->vtbl->MountImage(floppyDrive, fduuid.value);
if (NS_FAILED(rc)) {
virReportError(VIR_ERR_INTERNAL_ERROR,
_("could not attach
the file to floppy drive: %s, rc=%08x"),
- dev->data.disk->src,
(unsigned)rc);
+ src, (unsigned)rc);
} else {
ret = 0;
DEBUGIID("attached floppy,
UUID:", fduuid.value);
@@ -5579,7 +5594,7 @@ static int vboxDomainAttachDeviceImpl(virDomainPtr dom,
}
VBOX_RELEASE(floppyDrive);
}
- } else if (dev->data.disk->type ==
VIR_DOMAIN_DISK_TYPE_BLOCK) {
+ } else if (type == VIR_DOMAIN_DISK_TYPE_BLOCK) {
}
}
#else /* VBOX_API_VERSION >= 3001000 */
@@ -5710,8 +5725,10 @@ static int vboxDomainDetachDevice(virDomainPtr dom, const char
*xml) {
if (NS_SUCCEEDED(rc) && machine) {
if (dev->type == VIR_DOMAIN_DEVICE_DISK) {
#if VBOX_API_VERSION < 3001000
+ int type = virDomainDiskGetType(dev->data.disk);
+
if (dev->data.disk->device == VIR_DOMAIN_DISK_DEVICE_CDROM) {
- if (dev->data.disk->type == VIR_DOMAIN_DISK_TYPE_FILE) {
+ if (type == VIR_DOMAIN_DISK_TYPE_FILE) {
IDVDDrive *dvdDrive = NULL;
/* Currently CDROM/DVD Drive is always IDE
* Secondary Master so neglecting the following
@@ -5729,10 +5746,10 @@ static int vboxDomainDetachDevice(virDomainPtr dom, const char
*xml) {
}
VBOX_RELEASE(dvdDrive);
}
- } else if (dev->data.disk->type ==
VIR_DOMAIN_DISK_TYPE_BLOCK) {
+ } else if (type == VIR_DOMAIN_DISK_TYPE_BLOCK) {
}
} else if (dev->data.disk->device ==
VIR_DOMAIN_DISK_DEVICE_FLOPPY) {
- if (dev->data.disk->type == VIR_DOMAIN_DISK_TYPE_FILE) {
+ if (type == VIR_DOMAIN_DISK_TYPE_FILE) {
IFloppyDrive *floppyDrive;
machine->vtbl->GetFloppyDrive(machine,
&floppyDrive);
if (floppyDrive) {
@@ -5757,7 +5774,7 @@ static int vboxDomainDetachDevice(virDomainPtr dom, const char *xml)
{
}
VBOX_RELEASE(floppyDrive);
}
- } else if (dev->data.disk->type ==
VIR_DOMAIN_DISK_TYPE_BLOCK) {
+ } else if (type == VIR_DOMAIN_DISK_TYPE_BLOCK) {
}
}
#else /* VBOX_API_VERSION >= 3001000 */
--
1.8.5.3