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