mirror of
https://github.com/ceph/go-ceph
synced 2024-12-29 09:42:08 +00:00
Go style cleanups
- Use C errno constants in place of hardcoded ints - Use type inference where possible (especially C.CString - Don't explicitly specify zero values where value would be default anway - Rewrap some unnecessarily wrapped short lines - Use if/else one-liners where value is not needed afterwards Signed-off-by: Daniel Swarbrick <daniel.swarbrick@gmail.com>
This commit is contained in:
parent
c521b5aa72
commit
3023eb281d
@ -220,7 +220,7 @@ func (ioctx *IOContext) GetPoolName() (name string, err error) {
|
|||||||
for {
|
for {
|
||||||
ret := C.rados_ioctx_get_pool_name(ioctx.ioctx,
|
ret := C.rados_ioctx_get_pool_name(ioctx.ioctx,
|
||||||
(*C.char)(unsafe.Pointer(&buf[0])), C.unsigned(len(buf)))
|
(*C.char)(unsafe.Pointer(&buf[0])), C.unsigned(len(buf)))
|
||||||
if ret == -34 { // FIXME
|
if ret == -C.ERANGE {
|
||||||
buf = make([]byte, len(buf)*2)
|
buf = make([]byte, len(buf)*2)
|
||||||
continue
|
continue
|
||||||
} else if ret < 0 {
|
} else if ret < 0 {
|
||||||
@ -251,7 +251,7 @@ func (ioctx *IOContext) ListObjects(listFn ObjectListFunc) error {
|
|||||||
for {
|
for {
|
||||||
var c_entry *C.char
|
var c_entry *C.char
|
||||||
ret := C.rados_nobjects_list_next(ctx, &c_entry, nil, nil)
|
ret := C.rados_nobjects_list_next(ctx, &c_entry, nil, nil)
|
||||||
if ret == -2 { // FIXME
|
if ret == -C.ENOENT {
|
||||||
return nil
|
return nil
|
||||||
} else if ret < 0 {
|
} else if ret < 0 {
|
||||||
return GetRadosError(int(ret))
|
return GetRadosError(int(ret))
|
||||||
@ -707,9 +707,9 @@ func (ioctx *IOContext) LockExclusive(oid, name, cookie, desc string, duration t
|
|||||||
switch ret {
|
switch ret {
|
||||||
case 0:
|
case 0:
|
||||||
return int(ret), nil
|
return int(ret), nil
|
||||||
case -16: // EBUSY
|
case -C.EBUSY:
|
||||||
return int(ret), nil
|
return int(ret), nil
|
||||||
case -17: // EEXIST
|
case -C.EEXIST:
|
||||||
return int(ret), nil
|
return int(ret), nil
|
||||||
default:
|
default:
|
||||||
return int(ret), RadosError(int(ret))
|
return int(ret), RadosError(int(ret))
|
||||||
@ -758,9 +758,9 @@ func (ioctx *IOContext) LockShared(oid, name, cookie, tag, desc string, duration
|
|||||||
switch ret {
|
switch ret {
|
||||||
case 0:
|
case 0:
|
||||||
return int(ret), nil
|
return int(ret), nil
|
||||||
case -16: // EBUSY
|
case -C.EBUSY:
|
||||||
return int(ret), nil
|
return int(ret), nil
|
||||||
case -17: // EEXIST
|
case -C.EEXIST:
|
||||||
return int(ret), nil
|
return int(ret), nil
|
||||||
default:
|
default:
|
||||||
return int(ret), RadosError(int(ret))
|
return int(ret), RadosError(int(ret))
|
||||||
@ -789,7 +789,7 @@ func (ioctx *IOContext) Unlock(oid, name, cookie string) (int, error) {
|
|||||||
switch ret {
|
switch ret {
|
||||||
case 0:
|
case 0:
|
||||||
return int(ret), nil
|
return int(ret), nil
|
||||||
case -2: // -ENOENT
|
case -C.ENOENT:
|
||||||
return int(ret), nil
|
return int(ret), nil
|
||||||
default:
|
default:
|
||||||
return int(ret), RadosError(int(ret))
|
return int(ret), RadosError(int(ret))
|
||||||
@ -879,9 +879,9 @@ func (ioctx *IOContext) BreakLock(oid, name, client, cookie string) (int, error)
|
|||||||
switch ret {
|
switch ret {
|
||||||
case 0:
|
case 0:
|
||||||
return int(ret), nil
|
return int(ret), nil
|
||||||
case -2: // -ENOENT
|
case -C.ENOENT:
|
||||||
return int(ret), nil
|
return int(ret), nil
|
||||||
case -22: // -EINVAL
|
case -C.EINVAL: // -EINVAL
|
||||||
return int(ret), nil
|
return int(ret), nil
|
||||||
default:
|
default:
|
||||||
return int(ret), RadosError(int(ret))
|
return int(ret), RadosError(int(ret))
|
||||||
|
97
rbd/rbd.go
97
rbd/rbd.go
@ -148,7 +148,7 @@ func GetImageNames(ioctx *rados.IOContext) (names []string, err error) {
|
|||||||
size := C.size_t(len(buf))
|
size := C.size_t(len(buf))
|
||||||
ret := C.rbd_list(C.rados_ioctx_t(ioctx.Pointer()),
|
ret := C.rbd_list(C.rados_ioctx_t(ioctx.Pointer()),
|
||||||
(*C.char)(unsafe.Pointer(&buf[0])), &size)
|
(*C.char)(unsafe.Pointer(&buf[0])), &size)
|
||||||
if ret == -34 { // FIXME
|
if ret == -C.ERANGE {
|
||||||
buf = make([]byte, size)
|
buf = make([]byte, size)
|
||||||
continue
|
continue
|
||||||
} else if ret < 0 {
|
} else if ret < 0 {
|
||||||
@ -182,8 +182,10 @@ func GetImage(ioctx *rados.IOContext, name string) *Image {
|
|||||||
func Create(ioctx *rados.IOContext, name string, size uint64, order int,
|
func Create(ioctx *rados.IOContext, name string, size uint64, order int,
|
||||||
args ...uint64) (image *Image, err error) {
|
args ...uint64) (image *Image, err error) {
|
||||||
var ret C.int
|
var ret C.int
|
||||||
var c_order C.int = C.int(order)
|
|
||||||
var c_name *C.char = C.CString(name)
|
c_order := C.int(order)
|
||||||
|
c_name := C.CString(name)
|
||||||
|
|
||||||
defer C.free(unsafe.Pointer(c_name))
|
defer C.free(unsafe.Pointer(c_name))
|
||||||
|
|
||||||
switch len(args) {
|
switch len(args) {
|
||||||
@ -221,10 +223,11 @@ func Create(ioctx *rados.IOContext, name string, size uint64, order int,
|
|||||||
// const char *c_name, uint64_t features, int *c_order,
|
// const char *c_name, uint64_t features, int *c_order,
|
||||||
// uint64_t stripe_unit, int stripe_count);
|
// uint64_t stripe_unit, int stripe_count);
|
||||||
func (image *Image) Clone(snapname string, c_ioctx *rados.IOContext, c_name string, features uint64, order int) (*Image, error) {
|
func (image *Image) Clone(snapname string, c_ioctx *rados.IOContext, c_name string, features uint64, order int) (*Image, error) {
|
||||||
var c_order C.int = C.int(order)
|
c_order := C.int(order)
|
||||||
var c_p_name *C.char = C.CString(image.name)
|
c_p_name := C.CString(image.name)
|
||||||
var c_p_snapname *C.char = C.CString(snapname)
|
c_p_snapname := C.CString(snapname)
|
||||||
var c_c_name *C.char = C.CString(c_name)
|
c_c_name := C.CString(c_name)
|
||||||
|
|
||||||
defer C.free(unsafe.Pointer(c_p_name))
|
defer C.free(unsafe.Pointer(c_p_name))
|
||||||
defer C.free(unsafe.Pointer(c_p_snapname))
|
defer C.free(unsafe.Pointer(c_p_snapname))
|
||||||
defer C.free(unsafe.Pointer(c_c_name))
|
defer C.free(unsafe.Pointer(c_c_name))
|
||||||
@ -247,7 +250,7 @@ func (image *Image) Clone(snapname string, c_ioctx *rados.IOContext, c_name stri
|
|||||||
// int rbd_remove_with_progress(rados_ioctx_t io, const char *name,
|
// int rbd_remove_with_progress(rados_ioctx_t io, const char *name,
|
||||||
// librbd_progress_fn_t cb, void *cbdata);
|
// librbd_progress_fn_t cb, void *cbdata);
|
||||||
func (image *Image) Remove() error {
|
func (image *Image) Remove() error {
|
||||||
var c_name *C.char = C.CString(image.name)
|
c_name := C.CString(image.name)
|
||||||
defer C.free(unsafe.Pointer(c_name))
|
defer C.free(unsafe.Pointer(c_name))
|
||||||
return GetError(C.rbd_remove(C.rados_ioctx_t(image.ioctx.Pointer()), c_name))
|
return GetError(C.rbd_remove(C.rados_ioctx_t(image.ioctx.Pointer()), c_name))
|
||||||
}
|
}
|
||||||
@ -264,10 +267,12 @@ func (image *Image) Trash(delay time.Duration) error {
|
|||||||
|
|
||||||
// int rbd_rename(rados_ioctx_t src_io_ctx, const char *srcname, const char *destname);
|
// int rbd_rename(rados_ioctx_t src_io_ctx, const char *srcname, const char *destname);
|
||||||
func (image *Image) Rename(destname string) error {
|
func (image *Image) Rename(destname string) error {
|
||||||
var c_srcname *C.char = C.CString(image.name)
|
c_srcname := C.CString(image.name)
|
||||||
var c_destname *C.char = C.CString(destname)
|
c_destname := C.CString(destname)
|
||||||
|
|
||||||
defer C.free(unsafe.Pointer(c_srcname))
|
defer C.free(unsafe.Pointer(c_srcname))
|
||||||
defer C.free(unsafe.Pointer(c_destname))
|
defer C.free(unsafe.Pointer(c_destname))
|
||||||
|
|
||||||
err := RBDError(C.rbd_rename(C.rados_ioctx_t(image.ioctx.Pointer()),
|
err := RBDError(C.rbd_rename(C.rados_ioctx_t(image.ioctx.Pointer()),
|
||||||
c_srcname, c_destname))
|
c_srcname, c_destname))
|
||||||
if err == 0 {
|
if err == 0 {
|
||||||
@ -282,10 +287,11 @@ func (image *Image) Rename(destname string) error {
|
|||||||
// const char *snap_name);
|
// const char *snap_name);
|
||||||
func (image *Image) Open(args ...interface{}) error {
|
func (image *Image) Open(args ...interface{}) error {
|
||||||
var c_image C.rbd_image_t
|
var c_image C.rbd_image_t
|
||||||
var c_name *C.char = C.CString(image.name)
|
|
||||||
var c_snap_name *C.char
|
var c_snap_name *C.char
|
||||||
var ret C.int
|
var ret C.int
|
||||||
var read_only bool = false
|
var read_only bool
|
||||||
|
|
||||||
|
c_name := C.CString(image.name)
|
||||||
|
|
||||||
defer C.free(unsafe.Pointer(c_name))
|
defer C.free(unsafe.Pointer(c_name))
|
||||||
for _, arg := range args {
|
for _, arg := range args {
|
||||||
@ -321,10 +327,10 @@ func (image *Image) Close() error {
|
|||||||
return RbdErrorImageNotOpen
|
return RbdErrorImageNotOpen
|
||||||
}
|
}
|
||||||
|
|
||||||
ret := C.rbd_close(image.image)
|
if ret := C.rbd_close(image.image); ret != 0 {
|
||||||
if ret != 0 {
|
|
||||||
return RBDError(ret)
|
return RBDError(ret)
|
||||||
}
|
}
|
||||||
|
|
||||||
image.image = nil
|
image.image = nil
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@ -345,9 +351,8 @@ func (image *Image) Stat() (info *ImageInfo, err error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var c_stat C.rbd_image_info_t
|
var c_stat C.rbd_image_info_t
|
||||||
ret := C.rbd_stat(image.image,
|
|
||||||
&c_stat, C.size_t(unsafe.Sizeof(info)))
|
if ret := C.rbd_stat(image.image, &c_stat, C.size_t(unsafe.Sizeof(info))); ret < 0 {
|
||||||
if ret < 0 {
|
|
||||||
return info, RBDError(int(ret))
|
return info, RBDError(int(ret))
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -383,9 +388,7 @@ func (image *Image) GetSize() (size uint64, err error) {
|
|||||||
return 0, RbdErrorImageNotOpen
|
return 0, RbdErrorImageNotOpen
|
||||||
}
|
}
|
||||||
|
|
||||||
ret := C.rbd_get_size(image.image,
|
if ret := C.rbd_get_size(image.image, (*C.uint64_t)(&size)); ret < 0 {
|
||||||
(*C.uint64_t)(&size))
|
|
||||||
if ret < 0 {
|
|
||||||
return 0, RBDError(int(ret))
|
return 0, RBDError(int(ret))
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -398,9 +401,7 @@ func (image *Image) GetFeatures() (features uint64, err error) {
|
|||||||
return 0, RbdErrorImageNotOpen
|
return 0, RbdErrorImageNotOpen
|
||||||
}
|
}
|
||||||
|
|
||||||
ret := C.rbd_get_features(image.image,
|
if ret := C.rbd_get_features(image.image, (*C.uint64_t)(&features)); ret < 0 {
|
||||||
(*C.uint64_t)(&features))
|
|
||||||
if ret < 0 {
|
|
||||||
return 0, RBDError(int(ret))
|
return 0, RBDError(int(ret))
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -413,8 +414,7 @@ func (image *Image) GetStripeUnit() (stripe_unit uint64, err error) {
|
|||||||
return 0, RbdErrorImageNotOpen
|
return 0, RbdErrorImageNotOpen
|
||||||
}
|
}
|
||||||
|
|
||||||
ret := C.rbd_get_stripe_unit(image.image, (*C.uint64_t)(&stripe_unit))
|
if ret := C.rbd_get_stripe_unit(image.image, (*C.uint64_t)(&stripe_unit)); ret < 0 {
|
||||||
if ret < 0 {
|
|
||||||
return 0, RBDError(int(ret))
|
return 0, RBDError(int(ret))
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -427,8 +427,7 @@ func (image *Image) GetStripeCount() (stripe_count uint64, err error) {
|
|||||||
return 0, RbdErrorImageNotOpen
|
return 0, RbdErrorImageNotOpen
|
||||||
}
|
}
|
||||||
|
|
||||||
ret := C.rbd_get_stripe_count(image.image, (*C.uint64_t)(&stripe_count))
|
if ret := C.rbd_get_stripe_count(image.image, (*C.uint64_t)(&stripe_count)); ret < 0 {
|
||||||
if ret < 0 {
|
|
||||||
return 0, RBDError(int(ret))
|
return 0, RBDError(int(ret))
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -441,8 +440,7 @@ func (image *Image) GetOverlap() (overlap uint64, err error) {
|
|||||||
return 0, RbdErrorImageNotOpen
|
return 0, RbdErrorImageNotOpen
|
||||||
}
|
}
|
||||||
|
|
||||||
ret := C.rbd_get_overlap(image.image, (*C.uint64_t)(&overlap))
|
if ret := C.rbd_get_overlap(image.image, (*C.uint64_t)(&overlap)); ret < 0 {
|
||||||
if ret < 0 {
|
|
||||||
return overlap, RBDError(int(ret))
|
return overlap, RBDError(int(ret))
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -464,7 +462,7 @@ func (image *Image) Copy(args ...interface{}) error {
|
|||||||
case rados.IOContext:
|
case rados.IOContext:
|
||||||
switch t2 := args[1].(type) {
|
switch t2 := args[1].(type) {
|
||||||
case string:
|
case string:
|
||||||
var c_destname *C.char = C.CString(t2)
|
c_destname := C.CString(t2)
|
||||||
defer C.free(unsafe.Pointer(c_destname))
|
defer C.free(unsafe.Pointer(c_destname))
|
||||||
return RBDError(C.rbd_copy(image.image,
|
return RBDError(C.rbd_copy(image.image,
|
||||||
C.rados_ioctx_t(t.Pointer()),
|
C.rados_ioctx_t(t.Pointer()),
|
||||||
@ -477,11 +475,9 @@ func (image *Image) Copy(args ...interface{}) error {
|
|||||||
if dest.image == nil {
|
if dest.image == nil {
|
||||||
return errors.New(fmt.Sprintf("RBD image %s is not open", dest.name))
|
return errors.New(fmt.Sprintf("RBD image %s is not open", dest.name))
|
||||||
}
|
}
|
||||||
return GetError(C.rbd_copy2(image.image,
|
return GetError(C.rbd_copy2(image.image, dest.image))
|
||||||
dest.image))
|
|
||||||
default:
|
default:
|
||||||
return errors.New("Must specify either destination pool " +
|
return errors.New("Must specify either destination pool or destination image")
|
||||||
"or destination image")
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -611,7 +607,7 @@ func (image *Image) LockExclusive(cookie string) error {
|
|||||||
return RbdErrorImageNotOpen
|
return RbdErrorImageNotOpen
|
||||||
}
|
}
|
||||||
|
|
||||||
var c_cookie *C.char = C.CString(cookie)
|
c_cookie := C.CString(cookie)
|
||||||
defer C.free(unsafe.Pointer(c_cookie))
|
defer C.free(unsafe.Pointer(c_cookie))
|
||||||
|
|
||||||
return GetError(C.rbd_lock_exclusive(image.image, c_cookie))
|
return GetError(C.rbd_lock_exclusive(image.image, c_cookie))
|
||||||
@ -623,8 +619,8 @@ func (image *Image) LockShared(cookie string, tag string) error {
|
|||||||
return RbdErrorImageNotOpen
|
return RbdErrorImageNotOpen
|
||||||
}
|
}
|
||||||
|
|
||||||
var c_cookie *C.char = C.CString(cookie)
|
c_cookie := C.CString(cookie)
|
||||||
var c_tag *C.char = C.CString(tag)
|
c_tag := C.CString(tag)
|
||||||
defer C.free(unsafe.Pointer(c_cookie))
|
defer C.free(unsafe.Pointer(c_cookie))
|
||||||
defer C.free(unsafe.Pointer(c_tag))
|
defer C.free(unsafe.Pointer(c_tag))
|
||||||
|
|
||||||
@ -637,7 +633,7 @@ func (image *Image) Unlock(cookie string) error {
|
|||||||
return RbdErrorImageNotOpen
|
return RbdErrorImageNotOpen
|
||||||
}
|
}
|
||||||
|
|
||||||
var c_cookie *C.char = C.CString(cookie)
|
c_cookie := C.CString(cookie)
|
||||||
defer C.free(unsafe.Pointer(c_cookie))
|
defer C.free(unsafe.Pointer(c_cookie))
|
||||||
|
|
||||||
return GetError(C.rbd_unlock(image.image, c_cookie))
|
return GetError(C.rbd_unlock(image.image, c_cookie))
|
||||||
@ -649,8 +645,8 @@ func (image *Image) BreakLock(client string, cookie string) error {
|
|||||||
return RbdErrorImageNotOpen
|
return RbdErrorImageNotOpen
|
||||||
}
|
}
|
||||||
|
|
||||||
var c_client *C.char = C.CString(client)
|
c_client := C.CString(client)
|
||||||
var c_cookie *C.char = C.CString(cookie)
|
c_cookie := C.CString(cookie)
|
||||||
defer C.free(unsafe.Pointer(c_client))
|
defer C.free(unsafe.Pointer(c_client))
|
||||||
defer C.free(unsafe.Pointer(c_cookie))
|
defer C.free(unsafe.Pointer(c_cookie))
|
||||||
|
|
||||||
@ -703,7 +699,7 @@ func (image *Image) Write(data []byte) (n int, err error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ret != len(data) {
|
if ret != len(data) {
|
||||||
err = RBDError(-1)
|
err = RBDError(-C.EPERM)
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret, err
|
return ret, err
|
||||||
@ -772,7 +768,7 @@ func (image *Image) WriteAt(data []byte, off int64) (n int, err error) {
|
|||||||
C.size_t(len(data)), (*C.char)(unsafe.Pointer(&data[0]))))
|
C.size_t(len(data)), (*C.char)(unsafe.Pointer(&data[0]))))
|
||||||
|
|
||||||
if ret != len(data) {
|
if ret != len(data) {
|
||||||
err = RBDError(-1)
|
err = RBDError(-C.EPERM)
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret, err
|
return ret, err
|
||||||
@ -790,7 +786,7 @@ func (image *Image) GetSnapshotNames() (snaps []SnapInfo, err error) {
|
|||||||
return nil, RbdErrorImageNotOpen
|
return nil, RbdErrorImageNotOpen
|
||||||
}
|
}
|
||||||
|
|
||||||
var c_max_snaps C.int = 0
|
var c_max_snaps C.int
|
||||||
|
|
||||||
ret := C.rbd_snap_list(image.image, nil, &c_max_snaps)
|
ret := C.rbd_snap_list(image.image, nil, &c_max_snaps)
|
||||||
|
|
||||||
@ -819,7 +815,7 @@ func (image *Image) CreateSnapshot(snapname string) (*Snapshot, error) {
|
|||||||
return nil, RbdErrorImageNotOpen
|
return nil, RbdErrorImageNotOpen
|
||||||
}
|
}
|
||||||
|
|
||||||
var c_snapname *C.char = C.CString(snapname)
|
c_snapname := C.CString(snapname)
|
||||||
defer C.free(unsafe.Pointer(c_snapname))
|
defer C.free(unsafe.Pointer(c_snapname))
|
||||||
|
|
||||||
ret := C.rbd_snap_create(image.image, c_snapname)
|
ret := C.rbd_snap_create(image.image, c_snapname)
|
||||||
@ -866,7 +862,7 @@ func (snapshot *Snapshot) Remove() error {
|
|||||||
return RbdErrorImageNotOpen
|
return RbdErrorImageNotOpen
|
||||||
}
|
}
|
||||||
|
|
||||||
var c_snapname *C.char = C.CString(snapshot.name)
|
c_snapname := C.CString(snapshot.name)
|
||||||
defer C.free(unsafe.Pointer(c_snapname))
|
defer C.free(unsafe.Pointer(c_snapname))
|
||||||
|
|
||||||
return GetError(C.rbd_snap_remove(snapshot.image.image, c_snapname))
|
return GetError(C.rbd_snap_remove(snapshot.image.image, c_snapname))
|
||||||
@ -880,7 +876,7 @@ func (snapshot *Snapshot) Rollback() error {
|
|||||||
return RbdErrorImageNotOpen
|
return RbdErrorImageNotOpen
|
||||||
}
|
}
|
||||||
|
|
||||||
var c_snapname *C.char = C.CString(snapshot.name)
|
c_snapname := C.CString(snapshot.name)
|
||||||
defer C.free(unsafe.Pointer(c_snapname))
|
defer C.free(unsafe.Pointer(c_snapname))
|
||||||
|
|
||||||
return GetError(C.rbd_snap_rollback(snapshot.image.image, c_snapname))
|
return GetError(C.rbd_snap_rollback(snapshot.image.image, c_snapname))
|
||||||
@ -892,7 +888,7 @@ func (snapshot *Snapshot) Protect() error {
|
|||||||
return RbdErrorImageNotOpen
|
return RbdErrorImageNotOpen
|
||||||
}
|
}
|
||||||
|
|
||||||
var c_snapname *C.char = C.CString(snapshot.name)
|
c_snapname := C.CString(snapshot.name)
|
||||||
defer C.free(unsafe.Pointer(c_snapname))
|
defer C.free(unsafe.Pointer(c_snapname))
|
||||||
|
|
||||||
return GetError(C.rbd_snap_protect(snapshot.image.image, c_snapname))
|
return GetError(C.rbd_snap_protect(snapshot.image.image, c_snapname))
|
||||||
@ -904,7 +900,7 @@ func (snapshot *Snapshot) Unprotect() error {
|
|||||||
return RbdErrorImageNotOpen
|
return RbdErrorImageNotOpen
|
||||||
}
|
}
|
||||||
|
|
||||||
var c_snapname *C.char = C.CString(snapshot.name)
|
c_snapname := C.CString(snapshot.name)
|
||||||
defer C.free(unsafe.Pointer(c_snapname))
|
defer C.free(unsafe.Pointer(c_snapname))
|
||||||
|
|
||||||
return GetError(C.rbd_snap_unprotect(snapshot.image.image, c_snapname))
|
return GetError(C.rbd_snap_unprotect(snapshot.image.image, c_snapname))
|
||||||
@ -918,7 +914,8 @@ func (snapshot *Snapshot) IsProtected() (bool, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var c_is_protected C.int
|
var c_is_protected C.int
|
||||||
var c_snapname *C.char = C.CString(snapshot.name)
|
|
||||||
|
c_snapname := C.CString(snapshot.name)
|
||||||
defer C.free(unsafe.Pointer(c_snapname))
|
defer C.free(unsafe.Pointer(c_snapname))
|
||||||
|
|
||||||
ret := C.rbd_snap_is_protected(snapshot.image.image, c_snapname,
|
ret := C.rbd_snap_is_protected(snapshot.image.image, c_snapname,
|
||||||
@ -936,7 +933,7 @@ func (snapshot *Snapshot) Set() error {
|
|||||||
return RbdErrorImageNotOpen
|
return RbdErrorImageNotOpen
|
||||||
}
|
}
|
||||||
|
|
||||||
var c_snapname *C.char = C.CString(snapshot.name)
|
c_snapname := C.CString(snapshot.name)
|
||||||
defer C.free(unsafe.Pointer(c_snapname))
|
defer C.free(unsafe.Pointer(c_snapname))
|
||||||
|
|
||||||
return GetError(C.rbd_snap_set(snapshot.image.image, c_snapname))
|
return GetError(C.rbd_snap_set(snapshot.image.image, c_snapname))
|
||||||
|
Loading…
Reference in New Issue
Block a user