Add privateData to virDomainDiskDef

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
This commit is contained in:
Jiri Denemark 2015-05-13 09:00:02 +02:00
parent 3511c12244
commit 890fa6a055
10 changed files with 30 additions and 22 deletions

View File

@ -1275,7 +1275,7 @@ void virDomainLeaseDefFree(virDomainLeaseDefPtr def)
virDomainDiskDefPtr virDomainDiskDefPtr
virDomainDiskDefNew(void) virDomainDiskDefNew(virDomainXMLOptionPtr xmlopt)
{ {
virDomainDiskDefPtr ret; virDomainDiskDefPtr ret;
@ -1285,6 +1285,11 @@ virDomainDiskDefNew(void)
if (VIR_ALLOC(ret->src) < 0) if (VIR_ALLOC(ret->src) < 0)
goto error; goto error;
if (xmlopt &&
xmlopt->privateData.diskNew &&
!(ret->privateData = xmlopt->privateData.diskNew()))
goto error;
if (virCondInit(&ret->blockJobSyncCond) < 0) { if (virCondInit(&ret->blockJobSyncCond) < 0) {
virReportSystemError(errno, "%s", _("Failed to initialize condition")); virReportSystemError(errno, "%s", _("Failed to initialize condition"));
goto error; goto error;
@ -1293,9 +1298,7 @@ virDomainDiskDefNew(void)
return ret; return ret;
error: error:
virStorageSourceFree(ret->src); virDomainDiskDefFree(ret);
VIR_FREE(ret);
return NULL; return NULL;
} }
@ -1315,6 +1318,7 @@ virDomainDiskDefFree(virDomainDiskDefPtr def)
VIR_FREE(def->product); VIR_FREE(def->product);
VIR_FREE(def->domain_name); VIR_FREE(def->domain_name);
virDomainDeviceInfoClear(&def->info); virDomainDeviceInfoClear(&def->info);
virObjectUnref(def->privateData);
virCondDestroy(&def->blockJobSyncCond); virCondDestroy(&def->blockJobSyncCond);
VIR_FREE(def); VIR_FREE(def);
@ -6121,7 +6125,7 @@ virDomainDiskDefParseXML(virDomainXMLOptionPtr xmlopt,
int auth_secret_usage = -1; int auth_secret_usage = -1;
int ret = 0; int ret = 0;
if (!(def = virDomainDiskDefNew())) if (!(def = virDomainDiskDefNew(xmlopt)))
return NULL; return NULL;
def->geometry.cylinders = 0; def->geometry.cylinders = 0;

View File

@ -683,6 +683,8 @@ typedef enum {
struct _virDomainDiskDef { struct _virDomainDiskDef {
virStorageSourcePtr src; /* non-NULL. XXX Allow NULL for empty cdrom? */ virStorageSourcePtr src; /* non-NULL. XXX Allow NULL for empty cdrom? */
virObjectPtr privateData;
int device; /* enum virDomainDiskDevice */ int device; /* enum virDomainDiskDevice */
int bus; /* enum virDomainDiskBus */ int bus; /* enum virDomainDiskBus */
char *dst; char *dst;
@ -2332,6 +2334,7 @@ typedef virDomainXMLOption *virDomainXMLOptionPtr;
typedef void *(*virDomainXMLPrivateDataAllocFunc)(void); typedef void *(*virDomainXMLPrivateDataAllocFunc)(void);
typedef void (*virDomainXMLPrivateDataFreeFunc)(void *); typedef void (*virDomainXMLPrivateDataFreeFunc)(void *);
typedef virObjectPtr (*virDomainXMLPrivateDataNewFunc)(void);
typedef int (*virDomainXMLPrivateDataFormatFunc)(virBufferPtr, void *); typedef int (*virDomainXMLPrivateDataFormatFunc)(virBufferPtr, void *);
typedef int (*virDomainXMLPrivateDataParseFunc)(xmlXPathContextPtr, void *); typedef int (*virDomainXMLPrivateDataParseFunc)(xmlXPathContextPtr, void *);
@ -2368,6 +2371,7 @@ typedef virDomainXMLPrivateDataCallbacks *virDomainXMLPrivateDataCallbacksPtr;
struct _virDomainXMLPrivateDataCallbacks { struct _virDomainXMLPrivateDataCallbacks {
virDomainXMLPrivateDataAllocFunc alloc; virDomainXMLPrivateDataAllocFunc alloc;
virDomainXMLPrivateDataFreeFunc free; virDomainXMLPrivateDataFreeFunc free;
virDomainXMLPrivateDataNewFunc diskNew;
virDomainXMLPrivateDataFormatFunc format; virDomainXMLPrivateDataFormatFunc format;
virDomainXMLPrivateDataParseFunc parse; virDomainXMLPrivateDataParseFunc parse;
}; };
@ -2420,7 +2424,7 @@ void virDomainPanicDefFree(virDomainPanicDefPtr panic);
void virDomainResourceDefFree(virDomainResourceDefPtr resource); void virDomainResourceDefFree(virDomainResourceDefPtr resource);
void virDomainGraphicsDefFree(virDomainGraphicsDefPtr def); void virDomainGraphicsDefFree(virDomainGraphicsDefPtr def);
void virDomainInputDefFree(virDomainInputDefPtr def); void virDomainInputDefFree(virDomainInputDefPtr def);
virDomainDiskDefPtr virDomainDiskDefNew(void); virDomainDiskDefPtr virDomainDiskDefNew(virDomainXMLOptionPtr xmlopt);
void virDomainDiskDefFree(virDomainDiskDefPtr def); void virDomainDiskDefFree(virDomainDiskDefPtr def);
void virDomainLeaseDefFree(virDomainLeaseDefPtr def); void virDomainLeaseDefFree(virDomainLeaseDefPtr def);
int virDomainDiskGetType(virDomainDiskDefPtr def); int virDomainDiskGetType(virDomainDiskDefPtr def);

View File

@ -621,7 +621,7 @@ prlsdkAddDomainHardDisksInfo(PRL_HANDLE sdkdom, virDomainDefPtr def)
PrlHandle_Free(hdd); PrlHandle_Free(hdd);
hdd = PRL_INVALID_HANDLE; hdd = PRL_INVALID_HANDLE;
} else { } else {
if (!(disk = virDomainDiskDefNew())) if (!(disk = virDomainDiskDefNew(NULL)))
goto error; goto error;
if (prlsdkGetDiskInfo(hdd, disk, false) < 0) if (prlsdkGetDiskInfo(hdd, disk, false) < 0)
@ -661,7 +661,7 @@ prlsdkAddDomainOpticalDisksInfo(PRL_HANDLE sdkdom, virDomainDefPtr def)
pret = PrlVmCfg_GetOpticalDisk(sdkdom, i, &cdrom); pret = PrlVmCfg_GetOpticalDisk(sdkdom, i, &cdrom);
prlsdkCheckRetGoto(pret, error); prlsdkCheckRetGoto(pret, error);
if (!(disk = virDomainDiskDefNew())) if (!(disk = virDomainDiskDefNew(NULL)))
goto error; goto error;
if (prlsdkGetDiskInfo(cdrom, disk, true) < 0) if (prlsdkGetDiskInfo(cdrom, disk, true) < 0)

View File

@ -12566,7 +12566,7 @@ qemuParseCommandLine(virCapsPtr qemuCaps,
STRPREFIX(arg, "-fd") || STRPREFIX(arg, "-fd") ||
STREQ(arg, "-cdrom")) { STREQ(arg, "-cdrom")) {
WANT_VALUE(); WANT_VALUE();
if (!(disk = virDomainDiskDefNew())) if (!(disk = virDomainDiskDefNew(xmlopt)))
goto error; goto error;
if (STRPREFIX(val, "/dev/")) { if (STRPREFIX(val, "/dev/")) {
@ -12868,7 +12868,7 @@ qemuParseCommandLine(virCapsPtr qemuCaps,
goto error; goto error;
} }
} else if (STRPREFIX(val, "disk:")) { } else if (STRPREFIX(val, "disk:")) {
if (!(disk = virDomainDiskDefNew())) if (!(disk = virDomainDiskDefNew(xmlopt)))
goto error; goto error;
if (VIR_STRDUP(disk->src->path, val + strlen("disk:")) < 0) if (VIR_STRDUP(disk->src->path, val + strlen("disk:")) < 0)
goto error; goto error;

View File

@ -3126,7 +3126,7 @@ vboxDumpIDEHDDsNew(virDomainDefPtr def, vboxGlobalData *data, IMachine *machine)
/* Allocate mem, if fails return error */ /* Allocate mem, if fails return error */
if (VIR_ALLOC_N(def->disks, def->ndisks) >= 0) { if (VIR_ALLOC_N(def->disks, def->ndisks) >= 0) {
for (i = 0; i < def->ndisks; i++) { for (i = 0; i < def->ndisks; i++) {
virDomainDiskDefPtr disk = virDomainDiskDefNew(); virDomainDiskDefPtr disk = virDomainDiskDefNew(NULL);
if (!disk) { if (!disk) {
error = true; error = true;
break; break;
@ -5850,7 +5850,7 @@ int vboxSnapshotGetReadOnlyDisks(virDomainSnapshotPtr snapshot,
/* Allocate mem, if fails return error */ /* Allocate mem, if fails return error */
if (VIR_ALLOC_N(def->dom->disks, def->dom->ndisks) >= 0) { if (VIR_ALLOC_N(def->dom->disks, def->dom->ndisks) >= 0) {
for (i = 0; i < def->dom->ndisks; i++) { for (i = 0; i < def->dom->ndisks; i++) {
virDomainDiskDefPtr diskDef = virDomainDiskDefNew(); virDomainDiskDefPtr diskDef = virDomainDiskDefNew(NULL);
if (!diskDef) if (!diskDef)
goto cleanup; goto cleanup;
def->dom->disks[i] = diskDef; def->dom->disks[i] = diskDef;

View File

@ -2187,7 +2187,7 @@ _dumpIDEHDDsOld(virDomainDefPtr def,
if ((def->ndisks > 0) && (VIR_ALLOC_N(def->disks, def->ndisks) >= 0)) { if ((def->ndisks > 0) && (VIR_ALLOC_N(def->disks, def->ndisks) >= 0)) {
size_t i; size_t i;
for (i = 0; i < def->ndisks; i++) { for (i = 0; i < def->ndisks; i++) {
if ((def->disks[i] = virDomainDiskDefNew())) { if ((def->disks[i] = virDomainDiskDefNew(NULL))) {
def->disks[i]->device = VIR_DOMAIN_DISK_DEVICE_DISK; def->disks[i]->device = VIR_DOMAIN_DISK_DEVICE_DISK;
def->disks[i]->bus = VIR_DOMAIN_DISK_BUS_IDE; def->disks[i]->bus = VIR_DOMAIN_DISK_BUS_IDE;
virDomainDiskSetType(def->disks[i], virDomainDiskSetType(def->disks[i],
@ -2295,7 +2295,7 @@ _dumpDVD(virDomainDefPtr def,
def->ndisks++; def->ndisks++;
if (VIR_REALLOC_N(def->disks, def->ndisks) >= 0) { if (VIR_REALLOC_N(def->disks, def->ndisks) >= 0) {
if ((def->disks[def->ndisks - 1] = virDomainDiskDefNew())) { if ((def->disks[def->ndisks - 1] = virDomainDiskDefNew(NULL))) {
def->disks[def->ndisks - 1]->device = VIR_DOMAIN_DISK_DEVICE_CDROM; 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]->bus = VIR_DOMAIN_DISK_BUS_IDE;
virDomainDiskSetType(def->disks[def->ndisks - 1], virDomainDiskSetType(def->disks[def->ndisks - 1],
@ -2437,7 +2437,7 @@ _dumpFloppy(virDomainDefPtr def,
def->ndisks++; def->ndisks++;
if (VIR_REALLOC_N(def->disks, def->ndisks) >= 0) { if (VIR_REALLOC_N(def->disks, def->ndisks) >= 0) {
if ((def->disks[def->ndisks - 1] = virDomainDiskDefNew())) { if ((def->disks[def->ndisks - 1] = virDomainDiskDefNew(NULL))) {
def->disks[def->ndisks - 1]->device = VIR_DOMAIN_DISK_DEVICE_FLOPPY; 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]->bus = VIR_DOMAIN_DISK_BUS_FDC;
virDomainDiskSetType(def->disks[def->ndisks - 1], virDomainDiskSetType(def->disks[def->ndisks - 1],

View File

@ -1980,7 +1980,7 @@ virVMXParseDisk(virVMXContext *ctx, virDomainXMLOptionPtr xmlopt, virConfPtr con
return -1; return -1;
} }
if (!(*def = virDomainDiskDefNew())) if (!(*def = virDomainDiskDefNew(xmlopt)))
return -1; return -1;
(*def)->device = device; (*def)->device = device;

View File

@ -372,7 +372,7 @@ xenParseSxprDisks(virDomainDefPtr def,
bootable = sexpr_node(node, "device/tap/bootable"); bootable = sexpr_node(node, "device/tap/bootable");
} }
if (!(disk = virDomainDiskDefNew())) if (!(disk = virDomainDiskDefNew(NULL)))
goto error; goto error;
if (dst == NULL) { if (dst == NULL) {
@ -1316,7 +1316,7 @@ xenParseSxpr(const struct sexpr *root,
tmp = sexpr_node(root, "domain/image/hvm/cdrom"); tmp = sexpr_node(root, "domain/image/hvm/cdrom");
if ((tmp != NULL) && (tmp[0] != 0)) { if ((tmp != NULL) && (tmp[0] != 0)) {
virDomainDiskDefPtr disk; virDomainDiskDefPtr disk;
if (!(disk = virDomainDiskDefNew())) if (!(disk = virDomainDiskDefNew(NULL)))
goto error; goto error;
if (virDomainDiskSetSource(disk, tmp) < 0) { if (virDomainDiskSetSource(disk, tmp) < 0) {
virDomainDiskDefFree(disk); virDomainDiskDefFree(disk);
@ -1351,7 +1351,7 @@ xenParseSxpr(const struct sexpr *root,
tmp = sexpr_fmt_node(root, "domain/image/hvm/%s", fds[i]); tmp = sexpr_fmt_node(root, "domain/image/hvm/%s", fds[i]);
if ((tmp != NULL) && (tmp[0] != 0)) { if ((tmp != NULL) && (tmp[0] != 0)) {
virDomainDiskDefPtr disk; virDomainDiskDefPtr disk;
if (!(disk = virDomainDiskDefNew())) if (!(disk = virDomainDiskDefNew(NULL)))
goto error; goto error;
if (virDomainDiskSetSource(disk, tmp) < 0) { if (virDomainDiskSetSource(disk, tmp) < 0) {
virDomainDiskDefFree(disk); virDomainDiskDefFree(disk);

View File

@ -286,7 +286,7 @@ xenParseXLDisk(virConfPtr conf, virDomainDefPtr def)
if (xlu_disk_parse(xluconf, 1, &disk_spec, libxldisk)) if (xlu_disk_parse(xluconf, 1, &disk_spec, libxldisk))
goto fail; goto fail;
if (!(disk = virDomainDiskDefNew())) if (!(disk = virDomainDiskDefNew(NULL)))
goto fail; goto fail;
if (VIR_STRDUP(disk->dst, libxldisk->vdev) < 0) if (VIR_STRDUP(disk->dst, libxldisk->vdev) < 0)

View File

@ -123,7 +123,7 @@ xenParseXMDisk(virConfPtr conf, virDomainDefPtr def, int xendConfigVersion)
goto skipdisk; goto skipdisk;
head = list->str; head = list->str;
if (!(disk = virDomainDiskDefNew())) if (!(disk = virDomainDiskDefNew(NULL)))
return -1; return -1;
/* /*
@ -275,7 +275,7 @@ xenParseXMDisk(virConfPtr conf, virDomainDefPtr def, int xendConfigVersion)
if (xenConfigGetString(conf, "cdrom", &str, NULL) < 0) if (xenConfigGetString(conf, "cdrom", &str, NULL) < 0)
goto cleanup; goto cleanup;
if (str) { if (str) {
if (!(disk = virDomainDiskDefNew())) if (!(disk = virDomainDiskDefNew(NULL)))
goto cleanup; goto cleanup;
virDomainDiskSetType(disk, VIR_STORAGE_TYPE_FILE); virDomainDiskSetType(disk, VIR_STORAGE_TYPE_FILE);