virStorageSourceClear(&def->src);
VIR_FREE(def->serial);
VIR_FREE(def->dst);
- virStorageFileFreeMetadata(def->backingChain);
+ virStorageSourceFree(def->backingChain);
VIR_FREE(def->mirror);
VIR_FREE(def->wwn);
VIR_FREE(def->vendor);
{
int ret = -1;
size_t depth = 0;
- virStorageFileMetadata *tmp;
+ virStorageSourcePtr tmp;
const char *path = virDomainDiskGetSource(disk);
int type = virDomainDiskGetType(disk);
char *dst;
int tray_status; /* enum virDomainDiskTray */
int removable; /* enum virDomainFeatureState */
- virStorageFileMetadataPtr backingChain;
+ virStorageSourcePtr backingChain;
char *mirror;
int mirrorFormat; /* enum virStorageFileFormat */
if (disk->backingChain) {
if (force) {
- virStorageFileFreeMetadata(disk->backingChain);
+ virStorageSourceFree(disk->backingChain);
disk->backingChain = NULL;
} else {
goto cleanup;
int ret = -1;
int fd = -1;
off_t end;
- virStorageFileMetadata *meta = NULL;
+ virStorageSourcePtr meta = NULL;
virDomainDiskDefPtr disk = NULL;
struct stat sb;
int idx;
cleanup:
VIR_FREE(alias);
- virStorageFileFreeMetadata(meta);
+ virStorageSourceFree(meta);
VIR_FORCE_CLOSE(fd);
/* If we failed to get data from a domain because it's inactive and
* temporarily modify the disk in place. */
char *origsrc = disk->src.path;
int origformat = disk->src.format;
- virStorageFileMetadataPtr origchain = disk->backingChain;
+ virStorageSourcePtr origchain = disk->backingChain;
bool origreadonly = disk->readonly;
int ret = -1;
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
* recompute it. Better would be storing the chain ourselves rather than
* reprobing, but this requires modifying domain_conf and our XML to fully
* track the chain across libvirtd restarts. */
- virStorageFileFreeMetadata(disk->backingChain);
+ virStorageSourceFree(disk->backingChain);
disk->backingChain = NULL;
if (virStorageFileInit(&snap->src) < 0)
bool resume = false;
char *oldsrc = NULL;
int oldformat;
- virStorageFileMetadataPtr oldchain = NULL;
+ virStorageSourcePtr oldchain = NULL;
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
/* Probe the status, if needed. */
* fact that we aren't tracking the full chain ourselves; so
* for now, we leak the access to the original. */
VIR_FREE(oldsrc);
- virStorageFileFreeMetadata(oldchain);
+ virStorageSourceFree(oldchain);
disk->mirror = NULL;
} else {
/* On failure, qemu abandons the mirror, and reverts back to
* success case, there's security labeling to worry about. */
disk->src.path = oldsrc;
disk->src.format = oldformat;
- virStorageFileFreeMetadata(disk->backingChain);
+ virStorageSourceFree(disk->backingChain);
disk->backingChain = oldchain;
VIR_FREE(disk->mirror);
}
int idx;
virDomainDiskDefPtr disk = NULL;
const char *top_canon = NULL;
- virStorageFileMetadataPtr top_meta = NULL;
+ virStorageSourcePtr top_meta = NULL;
const char *top_parent = NULL;
const char *base_canon = NULL;
bool clean_access = false;
{
int fd = -1;
int ret = -1;
- virStorageFileMetadata *meta = NULL;
+ virStorageSourcePtr meta = NULL;
struct stat sb;
char *header = NULL;
ssize_t len = VIR_STORAGE_MAX_HEADER;
VIR_FORCE_CLOSE(fd);
cleanup:
- virStorageFileFreeMetadata(meta);
+ virStorageSourceFree(meta);
VIR_FREE(header);
return ret;
int ret = -1;
virStorageVolDefPtr vol = NULL;
glfs_fd_t *fd = NULL;
- virStorageFileMetadata *meta = NULL;
+ virStorageSourcePtr meta = NULL;
char *header = NULL;
ssize_t len = VIR_STORAGE_MAX_HEADER;
vol = NULL;
ret = 0;
cleanup:
- virStorageFileFreeMetadata(meta);
+ virStorageSourceFree(meta);
virStorageVolDefFree(vol);
if (fd)
glfs_close(fd);
* pre-populated in META */
static int ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2)
ATTRIBUTE_NONNULL(4)
-virStorageFileGetMetadataInternal(virStorageFileMetadataPtr meta,
+virStorageFileGetMetadataInternal(virStorageSourcePtr meta,
char *buf,
size_t len,
int *backingFormat)
}
-static virStorageFileMetadataPtr
+static virStorageSourcePtr
virStorageFileMetadataNew(const char *path,
int format)
{
- virStorageFileMetadataPtr ret = NULL;
+ virStorageSourcePtr ret = NULL;
if (VIR_ALLOC(ret) < 0)
return NULL;
return ret;
error:
- virStorageFileFreeMetadata(ret);
+ virStorageSourceFree(ret);
return NULL;
}
* backing store. Callers are advised against probing for the
* backing store format in this case.
*
- * Caller MUST free the result after use via virStorageFileFreeMetadata.
+ * Caller MUST free the result after use via virStorageSourceFree.
*/
-virStorageFileMetadataPtr
+virStorageSourcePtr
virStorageFileGetMetadataFromBuf(const char *path,
char *buf,
size_t len,
char **backing,
int *backingFormat)
{
- virStorageFileMetadataPtr ret = NULL;
+ virStorageSourcePtr ret = NULL;
if (!(ret = virStorageFileMetadataNew(path, format)))
return NULL;
if (virStorageFileGetMetadataInternal(ret, buf, len,
backingFormat) < 0) {
- virStorageFileFreeMetadata(ret);
+ virStorageSourceFree(ret);
ret = NULL;
}
if (VIR_STRDUP(*backing, ret->backingStoreRaw) < 0) {
- virStorageFileFreeMetadata(ret);
+ virStorageSourceFree(ret);
ret = NULL;
}
/* Internal version that also supports a containing directory name. */
static int
-virStorageFileGetMetadataFromFDInternal(virStorageFileMetadataPtr meta,
+virStorageFileGetMetadataFromFDInternal(virStorageSourcePtr meta,
int fd,
int *backingFormat)
{
* format, since a malicious guest can turn a raw file into any
* other non-raw format at will.
*
- * Caller MUST free the result after use via virStorageFileFreeMetadata.
+ * Caller MUST free the result after use via virStorageSourceFree.
*/
-virStorageFileMetadataPtr
+virStorageSourcePtr
virStorageFileGetMetadataFromFD(const char *path,
int fd,
int format)
{
- virStorageFileMetadataPtr ret = NULL;
+ virStorageSourcePtr ret = NULL;
if (!(ret = virStorageFileMetadataNew(path, format)))
goto cleanup;
if (virStorageFileGetMetadataFromFDInternal(ret, fd, NULL) < 0) {
- virStorageFileFreeMetadata(ret);
+ virStorageSourceFree(ret);
ret = NULL;
}
const char *directory,
int format, uid_t uid, gid_t gid,
bool allow_probe, virHashTablePtr cycle,
- virStorageFileMetadataPtr meta)
+ virStorageSourcePtr meta)
{
int fd;
int ret = -1;
}
if (ret == 0 && meta->backingStoreRaw) {
- virStorageFileMetadataPtr backing;
+ virStorageSourcePtr backing;
if (virStorageIsFile(meta->backingStoreRaw)) {
if (virFindBackingFile(directory,
return -1;
}
-
if (backingFormat == VIR_STORAGE_FILE_AUTO && !allow_probe)
backingFormat = VIR_STORAGE_FILE_RAW;
else if (backingFormat == VIR_STORAGE_FILE_AUTO_SAFE)
uid, gid, allow_probe,
cycle, backing) < 0) {
/* If we failed to get backing data, mark the chain broken */
- virStorageFileFreeMetadata(backing);
+ virStorageSourceFree(backing);
} else {
meta->backingMeta = backing;
}
* format, since a malicious guest can turn a raw file into any
* other non-raw format at will.
*
- * Caller MUST free result after use via virStorageFileFreeMetadata.
+ * Caller MUST free result after use via virStorageSourceFree.
*/
-virStorageFileMetadataPtr
+virStorageSourcePtr
virStorageFileGetMetadata(const char *path, int format,
uid_t uid, gid_t gid,
bool allow_probe)
path, format, (int)uid, (int)gid, allow_probe);
virHashTablePtr cycle = virHashCreate(5, NULL);
- virStorageFileMetadataPtr meta = NULL;
- virStorageFileMetadataPtr ret = NULL;
+ virStorageSourcePtr meta = NULL;
+ virStorageSourcePtr ret = NULL;
char *canonPath = NULL;
char *directory = NULL;
meta = NULL;
cleanup:
- virStorageFileFreeMetadata(meta);
+ virStorageSourceFree(meta);
VIR_FREE(canonPath);
VIR_FREE(directory);
virHashFree(cycle);
* error (allocation failure).
*/
int
-virStorageFileChainGetBroken(virStorageFileMetadataPtr chain,
+virStorageFileChainGetBroken(virStorageSourcePtr chain,
char **brokenFile)
{
- virStorageFileMetadataPtr tmp;
+ virStorageSourcePtr tmp;
*brokenFile = NULL;
/**
- * virStorageFileFreeMetadata:
+ * virStorageFileMetadataFree:
*
* Free pointers in passed structure and structure itself.
*/
* independently freed. Reports an error and returns NULL if NAME is
* not found. */
const char *
-virStorageFileChainLookup(virStorageFileMetadataPtr chain,
- const char *name, virStorageFileMetadataPtr *meta,
+virStorageFileChainLookup(virStorageSourcePtr chain,
+ const char *name, virStorageSourcePtr *meta,
const char **parent)
{
const char *start = chain->path;
int virStorageFileProbeFormatFromBuf(const char *path, char *buf,
size_t buflen);
-virStorageFileMetadataPtr virStorageFileGetMetadata(const char *path,
- int format,
- uid_t uid, gid_t gid,
- bool allow_probe)
+virStorageSourcePtr virStorageFileGetMetadata(const char *path,
+ int format,
+ uid_t uid, gid_t gid,
+ bool allow_probe)
ATTRIBUTE_NONNULL(1);
-virStorageFileMetadataPtr virStorageFileGetMetadataFromFD(const char *path,
- int fd,
- int format);
-virStorageFileMetadataPtr virStorageFileGetMetadataFromBuf(const char *path,
- char *buf,
- size_t len,
- int format,
- char **backing,
- int *backingFormat)
+virStorageSourcePtr virStorageFileGetMetadataFromFD(const char *path,
+ int fd,
+ int format);
+virStorageSourcePtr virStorageFileGetMetadataFromBuf(const char *path,
+ char *buf,
+ size_t len,
+ int format,
+ char **backing,
+ int *backingFormat)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(5)
ATTRIBUTE_NONNULL(6);
-int virStorageFileChainGetBroken(virStorageFileMetadataPtr chain,
+int virStorageFileChainGetBroken(virStorageSourcePtr chain,
char **broken_file);
-const char *virStorageFileChainLookup(virStorageFileMetadataPtr chain,
+const char *virStorageFileChainLookup(virStorageSourcePtr chain,
const char *name,
- virStorageFileMetadataPtr *meta,
+ virStorageSourcePtr *meta,
const char **parent)
ATTRIBUTE_NONNULL(1);
{
const struct testChainData *data = args;
int ret = -1;
- virStorageFileMetadataPtr meta;
- virStorageFileMetadataPtr elt;
+ virStorageSourcePtr meta;
+ virStorageSourcePtr elt;
size_t i = 0;
char *broken = NULL;
bool isAbs = !!(data->flags & ABS_START);
ret = 0;
cleanup:
VIR_FREE(broken);
- virStorageFileFreeMetadata(meta);
+ virStorageSourceFree(meta);
return ret;
}
struct testLookupData
{
- virStorageFileMetadataPtr chain;
+ virStorageSourcePtr chain;
const char *name;
const char *expResult;
- virStorageFileMetadataPtr expMeta;
+ virStorageSourcePtr expMeta;
const char *expParent;
};
const struct testLookupData *data = args;
int ret = 0;
const char *actualResult;
- virStorageFileMetadataPtr actualMeta;
+ virStorageSourcePtr actualMeta;
const char *actualParent;
/* This function is documented as giving results within chain, but
int ret;
virCommandPtr cmd = NULL;
struct testChainData data;
- virStorageFileMetadataPtr chain = NULL;
+ virStorageSourcePtr chain = NULL;
/* Prep some files with qemu-img; if that is not found on PATH, or
* if it lacks support for qcow2 and qed, skip this test. */
ret = -1;
/* Test behavior of chain lookups, relative backing from absolute start */
- virStorageFileFreeMetadata(chain);
+ virStorageSourceFree(chain);
chain = virStorageFileGetMetadata(abswrap, VIR_STORAGE_FILE_QCOW2,
-1, -1, false);
if (!chain) {
ret = -1;
/* Test behavior of chain lookups, relative backing */
- virStorageFileFreeMetadata(chain);
+ virStorageSourceFree(chain);
chain = virStorageFileGetMetadata("sub/link2", VIR_STORAGE_FILE_QCOW2,
-1, -1, false);
if (!chain) {
cleanup:
/* Final cleanup */
- virStorageFileFreeMetadata(chain);
+ virStorageSourceFree(chain);
testCleanupImages();
virCommandFree(cmd);