qemuDomainGetImageIds(virQEMUDriverConfigPtr cfg,
virDomainObjPtr vm,
virStorageSourcePtr src,
+ virStorageSourcePtr parentSrc,
uid_t *uid, gid_t *gid)
{
virSecurityLabelDefPtr vmlabel;
vmlabel->label)
virParseOwnershipIds(vmlabel->label, uid, gid);
+ if (parentSrc &&
+ (disklabel = virStorageSourceGetSecurityLabelDef(parentSrc, "dac")) &&
+ disklabel->label)
+ virParseOwnershipIds(disklabel->label, uid, gid);
+
if ((disklabel = virStorageSourceGetSecurityLabelDef(src, "dac")) &&
disklabel->label)
virParseOwnershipIds(disklabel->label, uid, gid);
int
qemuDomainStorageFileInit(virQEMUDriverPtr driver,
virDomainObjPtr vm,
- virStorageSourcePtr src)
+ virStorageSourcePtr src,
+ virStorageSourcePtr parent)
{
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
uid_t uid;
gid_t gid;
int ret = -1;
- qemuDomainGetImageIds(cfg, vm, src, &uid, &gid);
+ qemuDomainGetImageIds(cfg, vm, src, parent, &uid, &gid);
if (virStorageFileInitAs(src, uid, gid) < 0)
goto cleanup;
goto cleanup;
}
- qemuDomainGetImageIds(cfg, vm, disk->src, &uid, &gid);
+ qemuDomainGetImageIds(cfg, vm, disk->src, NULL, &uid, &gid);
if (virStorageFileGetMetadata(disk->src,
uid, gid,
int qemuDomainStorageFileInit(virQEMUDriverPtr driver,
virDomainObjPtr vm,
- virStorageSourcePtr src);
+ virStorageSourcePtr src,
+ virStorageSourcePtr parent);
char *qemuDomainStorageAlias(const char *device, int depth);
void qemuDomainDiskChainElementRevoke(virQEMUDriverPtr driver,
goto cleanup;
}
- if (qemuDomainStorageFileInit(driver, vm, disk->src) < 0)
+ if (qemuDomainStorageFileInit(driver, vm, disk->src, NULL) < 0)
goto cleanup;
if ((nread = virStorageFileRead(disk->src, offset, size, &tmpbuf)) < 0)
if (virStorageSourceInitChainElement(dd->src, dd->disk->src, false) < 0)
goto error;
- if (qemuDomainStorageFileInit(driver, vm, dd->src) < 0)
+ if (qemuDomainStorageFileInit(driver, vm, dd->src, NULL) < 0)
goto error;
dd->initialized = true;
goto endjob;
}
- if (qemuDomainStorageFileInit(driver, vm, mirror) < 0)
+ if (qemuDomainStorageFileInit(driver, vm, mirror, NULL) < 0)
goto endjob;
if (qemuDomainBlockCopyValidateMirror(mirror, disk->dst, &reuse) < 0)