1
0
mirror of https://gitlab.com/libvirt/libvirt.git synced 2025-03-07 17:28:15 +00:00

storage: Use virStoragePoolObjGetDef accessor for RBD backend

In preparation for privatizing the object, use the accessor.
This commit is contained in:
John Ferlan 2017-07-26 14:32:09 -04:00
parent 1d995fbebc
commit 4d95a14faf

View File

@ -210,10 +210,11 @@ static int
virStorageBackendRBDOpenIoCTX(virStorageBackendRBDStatePtr ptr,
virStoragePoolObjPtr pool)
{
int r = rados_ioctx_create(ptr->cluster, pool->def->source.name, &ptr->ioctx);
virStoragePoolDefPtr def = virStoragePoolObjGetDef(pool);
int r = rados_ioctx_create(ptr->cluster, def->source.name, &ptr->ioctx);
if (r < 0) {
virReportSystemError(-r, _("failed to create the RBD IoCTX. Does the pool '%s' exist?"),
pool->def->source.name);
def->source.name);
}
return r;
}
@ -255,11 +256,12 @@ virStorageBackendRBDNewState(virConnectPtr conn,
virStoragePoolObjPtr pool)
{
virStorageBackendRBDStatePtr ptr;
virStoragePoolDefPtr def = virStoragePoolObjGetDef(pool);
if (VIR_ALLOC(ptr) < 0)
return NULL;
if (virStorageBackendRBDOpenRADOSConn(ptr, conn, &pool->def->source) < 0)
if (virStorageBackendRBDOpenRADOSConn(ptr, conn, &def->source) < 0)
goto error;
if (virStorageBackendRBDOpenIoCTX(ptr, pool) < 0)
@ -359,6 +361,7 @@ volStorageBackendRBDRefreshVolInfo(virStorageVolDefPtr vol,
virStorageBackendRBDStatePtr ptr)
{
int ret = -1;
virStoragePoolDefPtr def = virStoragePoolObjGetDef(pool);
int r = 0;
rbd_image_t image = NULL;
rbd_image_info_t info;
@ -388,7 +391,7 @@ volStorageBackendRBDRefreshVolInfo(virStorageVolDefPtr vol,
if (volStorageBackendRBDUseFastDiff(features)) {
VIR_DEBUG("RBD image %s/%s has fast-diff feature enabled. "
"Querying for actual allocation",
pool->def->source.name, vol->name);
def->source.name, vol->name);
if (virStorageBackendRBDSetAllocation(vol, image, &info) < 0)
goto cleanup;
@ -398,19 +401,17 @@ volStorageBackendRBDRefreshVolInfo(virStorageVolDefPtr vol,
VIR_DEBUG("Refreshed RBD image %s/%s (capacity: %llu allocation: %llu "
"obj_size: %"PRIu64" num_objs: %"PRIu64")",
pool->def->source.name, vol->name, vol->target.capacity,
def->source.name, vol->name, vol->target.capacity,
vol->target.allocation, info.obj_size, info.num_objs);
VIR_FREE(vol->target.path);
if (virAsprintf(&vol->target.path, "%s/%s",
pool->def->source.name,
vol->name) < 0)
def->source.name, vol->name) < 0)
goto cleanup;
VIR_FREE(vol->key);
if (virAsprintf(&vol->key, "%s/%s",
pool->def->source.name,
vol->name) < 0)
def->source.name, vol->name) < 0)
goto cleanup;
ret = 0;
@ -430,6 +431,7 @@ virStorageBackendRBDRefreshPool(virConnectPtr conn,
int len = -1;
int r = 0;
char *name, *names = NULL;
virStoragePoolDefPtr def = virStoragePoolObjGetDef(pool);
virStorageBackendRBDStatePtr ptr = NULL;
struct rados_cluster_stat_t clusterstat;
struct rados_pool_stat_t poolstat;
@ -444,17 +446,17 @@ virStorageBackendRBDRefreshPool(virConnectPtr conn,
if ((r = rados_ioctx_pool_stat(ptr->ioctx, &poolstat)) < 0) {
virReportSystemError(-r, _("failed to stat the RADOS pool '%s'"),
pool->def->source.name);
def->source.name);
goto cleanup;
}
pool->def->capacity = clusterstat.kb * 1024;
pool->def->available = clusterstat.kb_avail * 1024;
pool->def->allocation = poolstat.num_bytes;
def->capacity = clusterstat.kb * 1024;
def->available = clusterstat.kb_avail * 1024;
def->allocation = poolstat.num_bytes;
VIR_DEBUG("Utilization of RBD pool %s: (kb: %"PRIu64" kb_avail: %"PRIu64
" num_bytes: %"PRIu64")",
pool->def->source.name, clusterstat.kb, clusterstat.kb_avail,
def->source.name, clusterstat.kb, clusterstat.kb_avail,
poolstat.num_bytes);
while (true) {
@ -514,7 +516,7 @@ virStorageBackendRBDRefreshPool(virConnectPtr conn,
}
VIR_DEBUG("Found %zu images in RBD pool %s",
virStoragePoolObjGetVolumesCount(pool), pool->def->source.name);
virStoragePoolObjGetVolumesCount(pool), def->source.name);
ret = 0;
@ -610,12 +612,13 @@ virStorageBackendRBDDeleteVol(virConnectPtr conn,
{
int ret = -1;
int r = 0;
virStoragePoolDefPtr def = virStoragePoolObjGetDef(pool);
virStorageBackendRBDStatePtr ptr = NULL;
virCheckFlags(VIR_STORAGE_VOL_DELETE_ZEROED |
VIR_STORAGE_VOL_DELETE_WITH_SNAPSHOTS, -1);
VIR_DEBUG("Removing RBD image %s/%s", pool->def->source.name, vol->name);
VIR_DEBUG("Removing RBD image %s/%s", def->source.name, vol->name);
if (flags & VIR_STORAGE_VOL_DELETE_ZEROED)
VIR_WARN("%s", "This storage backend does not support zeroed removal of volumes");
@ -624,17 +627,17 @@ virStorageBackendRBDDeleteVol(virConnectPtr conn,
goto cleanup;
if (flags & VIR_STORAGE_VOL_DELETE_WITH_SNAPSHOTS) {
if (virStorageBackendRBDCleanupSnapshots(ptr->ioctx, &pool->def->source,
if (virStorageBackendRBDCleanupSnapshots(ptr->ioctx, &def->source,
vol) < 0)
goto cleanup;
}
VIR_DEBUG("Removing volume %s/%s", pool->def->source.name, vol->name);
VIR_DEBUG("Removing volume %s/%s", def->source.name, vol->name);
r = rbd_remove(ptr->ioctx, vol->name);
if (r < 0 && (-r) != ENOENT) {
virReportSystemError(-r, _("failed to remove volume '%s/%s'"),
pool->def->source.name, vol->name);
def->source.name, vol->name);
goto cleanup;
}
@ -651,6 +654,8 @@ virStorageBackendRBDCreateVol(virConnectPtr conn ATTRIBUTE_UNUSED,
virStoragePoolObjPtr pool,
virStorageVolDefPtr vol)
{
virStoragePoolDefPtr def = virStoragePoolObjGetDef(pool);
vol->type = VIR_STORAGE_VOL_NETWORK;
if (vol->target.format != VIR_STORAGE_FILE_RAW) {
@ -661,14 +666,12 @@ virStorageBackendRBDCreateVol(virConnectPtr conn ATTRIBUTE_UNUSED,
VIR_FREE(vol->target.path);
if (virAsprintf(&vol->target.path, "%s/%s",
pool->def->source.name,
vol->name) < 0)
def->source.name, vol->name) < 0)
return -1;
VIR_FREE(vol->key);
if (virAsprintf(&vol->key, "%s/%s",
pool->def->source.name,
vol->name) < 0)
def->source.name, vol->name) < 0)
return -1;
return 0;
@ -687,13 +690,13 @@ virStorageBackendRBDBuildVol(virConnectPtr conn,
virStorageVolDefPtr vol,
unsigned int flags)
{
virStoragePoolDefPtr def = virStoragePoolObjGetDef(pool);
virStorageBackendRBDStatePtr ptr = NULL;
int ret = -1;
int r = 0;
VIR_DEBUG("Creating RBD image %s/%s with size %llu",
pool->def->source.name,
vol->name, vol->target.capacity);
def->source.name, vol->name, vol->target.capacity);
virCheckFlags(0, -1);
@ -721,8 +724,7 @@ virStorageBackendRBDBuildVol(virConnectPtr conn,
if ((r = virStorageBackendRBDCreateImage(ptr->ioctx, vol->name,
vol->target.capacity)) < 0) {
virReportSystemError(-r, _("failed to create volume '%s/%s'"),
pool->def->source.name,
vol->name);
def->source.name, vol->name);
goto cleanup;
}
@ -1045,11 +1047,12 @@ virStorageBackendRBDBuildVolFrom(virConnectPtr conn,
virStorageVolDefPtr origvol,
unsigned int flags)
{
virStoragePoolDefPtr def = virStoragePoolObjGetDef(pool);
virStorageBackendRBDStatePtr ptr = NULL;
int ret = -1;
VIR_DEBUG("Creating clone of RBD image %s/%s with name %s",
pool->def->source.name, origvol->name, newvol->name);
def->source.name, origvol->name, newvol->name);
virCheckFlags(0, -1);
@ -1208,6 +1211,7 @@ virStorageBackendRBDVolWipe(virConnectPtr conn,
unsigned int flags)
{
virStorageBackendRBDStatePtr ptr = NULL;
virStoragePoolDefPtr def = virStoragePoolObjGetDef(pool);
rbd_image_t image = NULL;
rbd_image_info_t info;
uint64_t stripe_count;
@ -1216,7 +1220,7 @@ virStorageBackendRBDVolWipe(virConnectPtr conn,
virCheckFlags(0, -1);
VIR_DEBUG("Wiping RBD image %s/%s", pool->def->source.name, vol->name);
VIR_DEBUG("Wiping RBD image %s/%s", def->source.name, vol->name);
if (!(ptr = virStorageBackendRBDNewState(conn, pool)))
goto cleanup;
@ -1240,7 +1244,7 @@ virStorageBackendRBDVolWipe(virConnectPtr conn,
}
VIR_DEBUG("Need to wipe %"PRIu64" bytes from RBD image %s/%s",
info.size, pool->def->source.name, vol->name);
info.size, def->source.name, vol->name);
switch ((virStorageVolWipeAlgorithm) algorithm) {
case VIR_STORAGE_VOL_WIPE_ALG_ZERO: