mirror of https://github.com/ceph/go-ceph
rbd: refactor GetImageNames to use a for loop instead of recursion
This is done because using a for loop is more idiomatic in Go code. Signed-off-by: Sanford Miller <smiller@digitalocean.com>
This commit is contained in:
parent
36d5c4498e
commit
133e675c8d
|
@ -19,11 +19,23 @@ import (
|
||||||
|
|
||||||
// GetImageNames returns the list of current RBD images.
|
// GetImageNames returns the list of current RBD images.
|
||||||
func GetImageNames(ioctx *rados.IOContext) ([]string, error) {
|
func GetImageNames(ioctx *rados.IOContext) ([]string, error) {
|
||||||
|
var images []C.rbd_image_spec_t
|
||||||
size := C.size_t(4096)
|
size := C.size_t(4096)
|
||||||
images, err := getImageNames(ioctx, &size)
|
for {
|
||||||
|
images = make([]C.rbd_image_spec_t, size)
|
||||||
|
ret := C.rbd_list2(
|
||||||
|
cephIoctx(ioctx),
|
||||||
|
(*C.rbd_image_spec_t)(unsafe.Pointer(&images[0])),
|
||||||
|
&size)
|
||||||
|
err := getErrorIfNegative(ret)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
if err == errRange {
|
||||||
|
continue
|
||||||
|
}
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
break
|
||||||
|
}
|
||||||
defer C.rbd_image_spec_list_cleanup((*C.rbd_image_spec_t)(unsafe.Pointer(&images[0])), size)
|
defer C.rbd_image_spec_list_cleanup((*C.rbd_image_spec_t)(unsafe.Pointer(&images[0])), size)
|
||||||
|
|
||||||
names := make([]string, size)
|
names := make([]string, size)
|
||||||
|
@ -33,22 +45,6 @@ func GetImageNames(ioctx *rados.IOContext) ([]string, error) {
|
||||||
return names, nil
|
return names, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func getImageNames(ioctx *rados.IOContext, size *C.size_t) ([]C.rbd_image_spec_t, error) {
|
|
||||||
images := make([]C.rbd_image_spec_t, *size)
|
|
||||||
ret := C.rbd_list2(
|
|
||||||
cephIoctx(ioctx),
|
|
||||||
(*C.rbd_image_spec_t)(unsafe.Pointer(&images[0])),
|
|
||||||
size)
|
|
||||||
err := getErrorIfNegative(ret)
|
|
||||||
if err != nil {
|
|
||||||
if err == errRange {
|
|
||||||
return getImageNames(ioctx, size)
|
|
||||||
}
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return images, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetCreateTimestamp returns the time the rbd image was created.
|
// GetCreateTimestamp returns the time the rbd image was created.
|
||||||
//
|
//
|
||||||
// Implements:
|
// Implements:
|
||||||
|
|
Loading…
Reference in New Issue