rebase: update go-ceph to v0.7.0

updating go-ceph to latest 0.7.0
release.

Signed-off-by: Madhu Rajanna <madhupr007@gmail.com>
This commit is contained in:
Madhu Rajanna
2020-12-09 11:16:45 +05:30
committed by mergify[bot]
parent 97acd47ae9
commit eeec1213cb
17 changed files with 401 additions and 218 deletions

View File

@ -7,8 +7,15 @@ package rbd
#include <stdlib.h>
#include <rbd/librbd.h>
typedef int (*diff_iterate_callback_t)(uint64_t, size_t, int, void *);
extern int diffIterateCallback(uint64_t, size_t, int, void *);
extern int diffIterateCallback(uint64_t, size_t, int, uintptr_t);
// inline wrapper to cast uintptr_t to void*
static inline int wrap_rbd_diff_iterate2(rbd_image_t image,
const char *fromsnapname, uint64_t ofs, uint64_t len, uint8_t include_parent,
uint8_t whole_object, uintptr_t arg) {
return rbd_diff_iterate2(image, fromsnapname, ofs, len, include_parent,
whole_object, (void*)diffIterateCallback, (void*)arg);
};
*/
import "C"
@ -16,7 +23,6 @@ import (
"unsafe"
"github.com/ceph/go-ceph/internal/callbacks"
"github.com/ceph/go-ceph/internal/cutil"
)
var diffIterateCallbacks = callbacks.New()
@ -101,24 +107,23 @@ func (image *Image) DiffIterate(config DiffIterateConfig) error {
cbIndex := diffIterateCallbacks.Add(config)
defer diffIterateCallbacks.Remove(cbIndex)
ret := C.rbd_diff_iterate2(
ret := C.wrap_rbd_diff_iterate2(
image.image,
cSnapName,
C.uint64_t(config.Offset),
C.uint64_t(config.Length),
C.uint8_t(config.IncludeParent),
C.uint8_t(config.WholeObject),
C.diff_iterate_callback_t(C.diffIterateCallback),
cutil.VoidPtr(cbIndex))
C.uintptr_t(cbIndex))
return getError(ret)
}
//export diffIterateCallback
func diffIterateCallback(
offset C.uint64_t, length C.size_t, exists C.int, index unsafe.Pointer) C.int {
offset C.uint64_t, length C.size_t, exists C.int, index uintptr) C.int {
v := diffIterateCallbacks.Lookup(uintptr(index))
v := diffIterateCallbacks.Lookup(index)
config := v.(DiffIterateConfig)
return C.int(config.Callback(
uint64(offset), uint64(length), int(exists), config.Data))