storage: Introduce storagePoolLookupByTargetPath

While this could be exposed as a public API, it's not done yet as
there's no demand for that yet. Anyway, this is just preparing
the environment for easier volume creation on the destination.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
Michal Privoznik 2014-11-26 17:13:00 +01:00
parent c8230c4ded
commit 5ab746b83a
2 changed files with 47 additions and 0 deletions

View File

@ -1464,6 +1464,48 @@ storageVolLookupByPath(virConnectPtr conn,
return ret;
}
virStoragePoolPtr
storagePoolLookupByTargetPath(virConnectPtr conn,
const char *path)
{
size_t i;
virStoragePoolPtr ret = NULL;
char *cleanpath;
cleanpath = virFileSanitizePath(path);
if (!cleanpath)
return NULL;
storageDriverLock();
for (i = 0; i < driver->pools.count && !ret; i++) {
virStoragePoolObjPtr pool = driver->pools.objs[i];
virStoragePoolObjLock(pool);
if (!virStoragePoolObjIsActive(pool)) {
virStoragePoolObjUnlock(pool);
continue;
}
if (STREQ(path, pool->def->target.path)) {
ret = virGetStoragePool(conn, pool->def->name, pool->def->uuid,
NULL, NULL);
}
virStoragePoolObjUnlock(pool);
}
storageDriverUnlock();
if (!ret) {
virReportError(VIR_ERR_NO_STORAGE_VOL,
_("no storage pool with matching target path '%s'"),
path);
}
VIR_FREE(cleanpath);
return ret;
}
static int
storageVolDeleteInternal(virStorageVolPtr obj,

View File

@ -57,6 +57,11 @@ int virStorageFileGetMetadata(virStorageSourcePtr src,
int virStorageTranslateDiskSourcePool(virConnectPtr conn,
virDomainDiskDefPtr def);
virStoragePoolPtr
storagePoolLookupByTargetPath(virConnectPtr conn,
const char *path)
ATTRIBUTE_NONNULL(2);
int storageRegister(void);
#endif /* __VIR_STORAGE_DRIVER_H__ */