rebase: update go-ceph to release v0.13.0

This commit update go-ceph to v0.13.0 and
change CEPH_VERSION in build.env to pacific.

Signed-off-by: Rakshith R <rar@redhat.com>
This commit is contained in:
Rakshith R 2021-12-15 10:56:34 +05:30 committed by mergify[bot]
parent 5aa1e4d225
commit 0d1c2aa983
28 changed files with 122 additions and 76 deletions

View File

@ -13,7 +13,7 @@ CSI_IMAGE_VERSION=canary
# Ceph version to use # Ceph version to use
BASE_IMAGE=docker.io/ceph/ceph:v16 BASE_IMAGE=docker.io/ceph/ceph:v16
CEPH_VERSION=octopus CEPH_VERSION=pacific
# standard Golang options # standard Golang options
GOLANG_VERSION=1.17.5 GOLANG_VERSION=1.17.5

2
go.mod
View File

@ -6,7 +6,7 @@ require (
github.com/IBM/keyprotect-go-client v0.7.0 github.com/IBM/keyprotect-go-client v0.7.0
github.com/aws/aws-sdk-go v1.42.7 github.com/aws/aws-sdk-go v1.42.7
github.com/ceph/ceph-csi/api v0.0.0-00010101000000-000000000000 github.com/ceph/ceph-csi/api v0.0.0-00010101000000-000000000000
github.com/ceph/go-ceph v0.12.0 github.com/ceph/go-ceph v0.13.0
github.com/container-storage-interface/spec v1.5.0 github.com/container-storage-interface/spec v1.5.0
github.com/csi-addons/replication-lib-utils v0.2.0 github.com/csi-addons/replication-lib-utils v0.2.0
github.com/csi-addons/spec v0.1.2-0.20211220083702-c779b23cf97c github.com/csi-addons/spec v0.1.2-0.20211220083702-c779b23cf97c

4
go.sum
View File

@ -168,8 +168,8 @@ github.com/cenkalti/backoff/v3 v3.0.0 h1:ske+9nBpD9qZsTBoF41nW5L+AIuFBKMeze18XQ3
github.com/cenkalti/backoff/v3 v3.0.0/go.mod h1:cIeZDE3IrqwwJl6VUwCN6trj1oXrTS4rc0ij+ULvLYs= github.com/cenkalti/backoff/v3 v3.0.0/go.mod h1:cIeZDE3IrqwwJl6VUwCN6trj1oXrTS4rc0ij+ULvLYs=
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
github.com/centrify/cloud-golang-sdk v0.0.0-20190214225812-119110094d0f/go.mod h1:C0rtzmGXgN78pYR0tGJFhtHgkbAs0lIbHwkB81VxDQE= github.com/centrify/cloud-golang-sdk v0.0.0-20190214225812-119110094d0f/go.mod h1:C0rtzmGXgN78pYR0tGJFhtHgkbAs0lIbHwkB81VxDQE=
github.com/ceph/go-ceph v0.12.0 h1:nlFgKQZXOFR4oMnzXsKwTr79Y6EYDwqTrpigICGy/Tw= github.com/ceph/go-ceph v0.13.0 h1:69dgIPlNHD2OCz98T0benI4++vcnShGcpQK4RIALjw4=
github.com/ceph/go-ceph v0.12.0/go.mod h1:mafFpf5Vg8Ai8Bd+FAMvKBHLmtdpTXdRP/TNq8XWegY= github.com/ceph/go-ceph v0.13.0/go.mod h1:mafFpf5Vg8Ai8Bd+FAMvKBHLmtdpTXdRP/TNq8XWegY=
github.com/certifi/gocertifi v0.0.0-20191021191039-0944d244cd40/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= github.com/certifi/gocertifi v0.0.0-20191021191039-0944d244cd40/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA=
github.com/certifi/gocertifi v0.0.0-20200922220541-2c3bb06c6054/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= github.com/certifi/gocertifi v0.0.0-20200922220541-2c3bb06c6054/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA=
github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko=

View File

@ -1,6 +1,3 @@
//go:build !luminous && !mimic
// +build !luminous,!mimic
package admin package admin
import ( import (

View File

@ -1,6 +1,3 @@
//go:build !luminous && !mimic
// +build !luminous,!mimic
package admin package admin
import ( import (

View File

@ -1,6 +1,3 @@
//go:build !luminous && !mimic
// +build !luminous,!mimic
package admin package admin
// For APIs that accept extra sets of "boolean" flags we may end up wanting // For APIs that accept extra sets of "boolean" flags we may end up wanting

View File

@ -1,6 +1,3 @@
//go:build !luminous && !mimic
// +build !luminous,!mimic
package admin package admin
import ( import (

View File

@ -52,3 +52,32 @@ func (fsa *FSAdmin) EnableMirroringModule(force bool) error {
func (fsa *FSAdmin) DisableMirroringModule() error { func (fsa *FSAdmin) DisableMirroringModule() error {
return fsa.DisableModule(mirroring) return fsa.DisableModule(mirroring)
} }
type moduleInfo struct {
EnabledModules []string `json:"enabled_modules"`
//DisabledModules []string `json:"disabled_modules"`
// DisabledModules is documented in ceph as a list of string
// but that's not what comes back from the server (on pacific).
// Since we don't need this today, we're just going to ignore
// it, but if we ever want to support this for external consumers
// we'll need to figure out the real structure of this.
}
func parseModuleInfo(res response) (*moduleInfo, error) {
m := &moduleInfo{}
if err := res.NoStatus().Unmarshal(m).End(); err != nil {
return nil, err
}
return m, nil
}
// listModules returns moduleInfo or error. it is not exported because
// this is really not a cephfs specific thing but we needed it
// for cephfs tests. maybe lift it somewhere else someday.
func (fsa *FSAdmin) listModules() (*moduleInfo, error) {
m := map[string]string{
"prefix": "mgr module ls",
"format": "json",
}
return parseModuleInfo(commands.MarshalMonCommand(fsa.conn, m))
}

View File

@ -1,6 +1,3 @@
//go:build !luminous && !mimic
// +build !luminous,!mimic
package admin package admin
import ( import (

View File

@ -1,6 +1,3 @@
//go:build !luminous && !mimic
// +build !luminous,!mimic
package admin package admin
// this is the internal type used to create JSON for ceph. // this is the internal type used to create JSON for ceph.

View File

@ -1,6 +1,3 @@
//go:build !luminous && !mimic
// +build !luminous,!mimic
package admin package admin
// this is the internal type used to create JSON for ceph. // this is the internal type used to create JSON for ceph.

View File

@ -1,6 +1,3 @@
//go:build !luminous && !mimic
// +build !luminous,!mimic
package admin package admin
import ( import (

View File

@ -1,6 +1,3 @@
//go:build !luminous && !mimic
// +build !luminous,!mimic
package admin package admin
import ( import (

View File

@ -23,6 +23,9 @@ const (
SizeTSize = C.sizeof_size_t SizeTSize = C.sizeof_size_t
) )
// Compile-time assertion ensuring that Go's `int` is at least as large as C's.
const _ = unsafe.Sizeof(int(0)) - C.sizeof_int
// SizeT wraps size_t from C. // SizeT wraps size_t from C.
type SizeT C.size_t type SizeT C.size_t

View File

@ -99,8 +99,8 @@ type GetOmapStep struct {
// C returned data: // C returned data:
iter C.rados_omap_iter_t iter C.rados_omap_iter_t
more C.uchar more *C.uchar
rval C.int rval *C.int
// internal state: // internal state:
@ -116,6 +116,8 @@ func newGetOmapStep(startAfter, filterPrefix string, maxReturn uint64) *GetOmapS
maxReturn: maxReturn, maxReturn: maxReturn,
cStartAfter: C.CString(startAfter), cStartAfter: C.CString(startAfter),
cFilterPrefix: C.CString(filterPrefix), cFilterPrefix: C.CString(filterPrefix),
more: (*C.uchar)(C.malloc(C.sizeof_uchar)),
rval: (*C.int)(C.malloc(C.sizeof_int)),
} }
runtime.SetFinalizer(gos, opStepFinalizer) runtime.SetFinalizer(gos, opStepFinalizer)
return gos return gos
@ -127,8 +129,10 @@ func (gos *GetOmapStep) free() {
C.rados_omap_get_end(gos.iter) C.rados_omap_get_end(gos.iter)
} }
gos.iter = nil gos.iter = nil
gos.more = 0 C.free(unsafe.Pointer(gos.more))
gos.rval = 0 gos.more = nil
C.free(unsafe.Pointer(gos.rval))
gos.rval = nil
C.free(unsafe.Pointer(gos.cStartAfter)) C.free(unsafe.Pointer(gos.cStartAfter))
gos.cStartAfter = nil gos.cStartAfter = nil
C.free(unsafe.Pointer(gos.cFilterPrefix)) C.free(unsafe.Pointer(gos.cFilterPrefix))
@ -136,7 +140,7 @@ func (gos *GetOmapStep) free() {
} }
func (gos *GetOmapStep) update() error { func (gos *GetOmapStep) update() error {
err := getError(gos.rval) err := getError(*gos.rval)
gos.canIterate = (err == nil) gos.canIterate = (err == nil)
return err return err
} }
@ -168,7 +172,7 @@ func (gos *GetOmapStep) Next() (*OmapKeyValue, error) {
func (gos *GetOmapStep) More() bool { func (gos *GetOmapStep) More() bool {
// tad bit hacky, but go can't automatically convert from // tad bit hacky, but go can't automatically convert from
// unsigned char to bool // unsigned char to bool
return gos.more != 0 return *gos.more != 0
} }
// removeOmapKeysStep is a write operation step used to track state, especially // removeOmapKeysStep is a write operation step used to track state, especially

View File

@ -77,8 +77,8 @@ func (r *ReadOp) GetOmapValues(startAfter, filterPrefix string, maxReturn uint64
gos.cFilterPrefix, gos.cFilterPrefix,
C.uint64_t(gos.maxReturn), C.uint64_t(gos.maxReturn),
&gos.iter, &gos.iter,
&gos.more, gos.more,
&gos.rval, gos.rval,
) )
return gos return gos
} }

View File

@ -0,0 +1,63 @@
//go:build ceph_preview
// +build ceph_preview
package rados
// #cgo LDFLAGS: -lrados
// #include <rados/librados.h>
// #include <stdlib.h>
//
import "C"
import (
"unsafe"
)
// WriteOpCmpExtStep holds result of the CmpExt write operation.
// Result is valid only after Operate() was called.
type WriteOpCmpExtStep struct {
// C returned data:
prval *C.int
// Result of the CmpExt write operation.
Result int
}
func (s *WriteOpCmpExtStep) update() error {
s.Result = int(*s.prval)
return nil
}
func (s *WriteOpCmpExtStep) free() {
C.free(unsafe.Pointer(s.prval))
s.prval = nil
}
func newWriteOpCmpExtStep() *WriteOpCmpExtStep {
return &WriteOpCmpExtStep{
prval: (*C.int)(C.malloc(C.sizeof_int)),
}
}
// CmpExt ensures that given object range (extent) satisfies comparison.
// PREVIEW
//
// Implements:
// void rados_write_op_cmpext(rados_write_op_t write_op,
// const char * cmp_buf,
// size_t cmp_len,
// uint64_t off,
// int * prval);
func (w *WriteOp) CmpExt(b []byte, offset uint64) *WriteOpCmpExtStep {
oe := newWriteStep(b, 0, offset)
cmpExtStep := newWriteOpCmpExtStep()
w.steps = append(w.steps, oe, cmpExtStep)
C.rados_write_op_cmpext(
w.op,
oe.cBuffer,
oe.cDataLen,
oe.cOffset,
cmpExtStep.prval)
return cmpExtStep
}

View File

@ -25,7 +25,7 @@ type writeStep struct {
func newWriteStep(b []byte, writeLen, offset uint64) *writeStep { func newWriteStep(b []byte, writeLen, offset uint64) *writeStep {
return &writeStep{ return &writeStep{
b: b, b: b,
cBuffer: (*C.char)(unsafe.Pointer(&b[0])), cBuffer: (*C.char)(unsafe.Pointer(&b[0])), // TODO: must be pinned
cDataLen: C.size_t(len(b)), cDataLen: C.size_t(len(b)),
cWriteLen: C.size_t(writeLen), cWriteLen: C.size_t(writeLen),
cOffset: C.uint64_t(offset), cOffset: C.uint64_t(offset),

View File

@ -1,5 +1,5 @@
//go:build !nautilus && ceph_preview //go:build !nautilus
// +build !nautilus,ceph_preview // +build !nautilus
package admin package admin
@ -10,14 +10,12 @@ import (
// ImageSpec values are used to identify an RBD image wherever Ceph APIs // ImageSpec values are used to identify an RBD image wherever Ceph APIs
// require an image_spec/image_id_spec using image name/id and optional // require an image_spec/image_id_spec using image name/id and optional
// pool and namespace. // pool and namespace.
// PREVIEW
type ImageSpec struct { type ImageSpec struct {
spec string spec string
} }
// NewImageSpec is used to construct an ImageSpec given an image name/id // NewImageSpec is used to construct an ImageSpec given an image name/id
// and optional namespace and pool names. // and optional namespace and pool names.
// PREVIEW
// //
// NewImageSpec constructs an ImageSpec to identify an RBD image and thus // NewImageSpec constructs an ImageSpec to identify an RBD image and thus
// requires image name/id, whereas NewLevelSpec constructs LevelSpec to // requires image name/id, whereas NewLevelSpec constructs LevelSpec to
@ -37,7 +35,6 @@ func NewImageSpec(pool, namespace, image string) ImageSpec {
// NewRawImageSpec returns a ImageSpec directly based on the spec string // NewRawImageSpec returns a ImageSpec directly based on the spec string
// argument without constructing it from component values. // argument without constructing it from component values.
// PREVIEW
// //
// This should only be used if NewImageSpec can not create the imagespec value // This should only be used if NewImageSpec can not create the imagespec value
// you want to pass to ceph. // you want to pass to ceph.

View File

@ -1,5 +1,5 @@
//go:build !nautilus && ceph_preview //go:build !nautilus
// +build !nautilus,ceph_preview // +build !nautilus
package admin package admin
@ -9,19 +9,16 @@ import (
) )
// TaskAdmin encapsulates management functions for ceph rbd task operations. // TaskAdmin encapsulates management functions for ceph rbd task operations.
// PREVIEW
type TaskAdmin struct { type TaskAdmin struct {
conn ccom.MgrCommander conn ccom.MgrCommander
} }
// Task returns a TaskAdmin type for managing ceph rbd task operations. // Task returns a TaskAdmin type for managing ceph rbd task operations.
// PREVIEW
func (ra *RBDAdmin) Task() *TaskAdmin { func (ra *RBDAdmin) Task() *TaskAdmin {
return &TaskAdmin{conn: ra.conn} return &TaskAdmin{conn: ra.conn}
} }
// TaskRefs contains the action name and information about the image. // TaskRefs contains the action name and information about the image.
// PREVIEW
type TaskRefs struct { type TaskRefs struct {
Action string `json:"action"` Action string `json:"action"`
PoolName string `json:"pool_name"` PoolName string `json:"pool_name"`
@ -31,7 +28,6 @@ type TaskRefs struct {
} }
// TaskResponse contains the information about the task added on an image. // TaskResponse contains the information about the task added on an image.
// PREVIEW
type TaskResponse struct { type TaskResponse struct {
Sequence int `json:"sequence"` Sequence int `json:"sequence"`
ID string `json:"id"` ID string `json:"id"`
@ -58,7 +54,6 @@ func parseTaskResponseList(res commands.Response) ([]TaskResponse, error) {
// AddFlatten adds a background task to flatten a cloned image based on the // AddFlatten adds a background task to flatten a cloned image based on the
// supplied image spec. // supplied image spec.
// PREVIEW
// //
// Similar To: // Similar To:
// rbd task add flatten <image_spec> // rbd task add flatten <image_spec>
@ -73,7 +68,6 @@ func (ta *TaskAdmin) AddFlatten(img ImageSpec) (TaskResponse, error) {
// AddRemove adds a background task to remove an image based on the supplied // AddRemove adds a background task to remove an image based on the supplied
// image spec. // image spec.
// PREVIEW
// //
// Similar To: // Similar To:
// rbd task add remove <image_spec> // rbd task add remove <image_spec>
@ -88,7 +82,6 @@ func (ta *TaskAdmin) AddRemove(img ImageSpec) (TaskResponse, error) {
// AddTrashRemove adds a background task to remove an image from the trash based // AddTrashRemove adds a background task to remove an image from the trash based
// on the supplied image id spec. // on the supplied image id spec.
// PREVIEW
// //
// Similar To: // Similar To:
// rbd task add trash remove <image_id_spec> // rbd task add trash remove <image_id_spec>
@ -102,7 +95,6 @@ func (ta *TaskAdmin) AddTrashRemove(img ImageSpec) (TaskResponse, error) {
} }
// List pending or running asynchronous tasks. // List pending or running asynchronous tasks.
// PREVIEW
// //
// Similar To: // Similar To:
// rbd task list // rbd task list
@ -115,7 +107,6 @@ func (ta *TaskAdmin) List() ([]TaskResponse, error) {
} }
// GetTaskByID returns pending or running asynchronous task using id. // GetTaskByID returns pending or running asynchronous task using id.
// PREVIEW
// //
// Similar To: // Similar To:
// rbd task list <task_id> // rbd task list <task_id>
@ -129,7 +120,6 @@ func (ta *TaskAdmin) GetTaskByID(taskID string) (TaskResponse, error) {
} }
// Cancel a pending or running asynchronous task. // Cancel a pending or running asynchronous task.
// PREVIEW
// //
// Similar To: // Similar To:
// rbd task cancel <task_id> // rbd task cancel <task_id>

View File

@ -1,6 +1,3 @@
//go:build !luminous && !mimic
// +build !luminous,!mimic
package rbd package rbd
// #include <rbd/librbd.h> // #include <rbd/librbd.h>

View File

@ -1,6 +1,3 @@
//go:build !luminous && !mimic
// +build !luminous,!mimic
// //
// Ceph Nautilus is the first release that includes rbd_namespace_create(), // Ceph Nautilus is the first release that includes rbd_namespace_create(),
// rbd_namespace_remove(), rbd_namespace_exists() and rbd_namespace_list(). // rbd_namespace_remove(), rbd_namespace_exists() and rbd_namespace_list().

View File

@ -1,6 +1,3 @@
//go:build !luminous && !mimic
// +build !luminous,!mimic
// //
// Ceph Nautilus is the first release that includes rbd_pool_metadata_get(), // Ceph Nautilus is the first release that includes rbd_pool_metadata_get(),
// rbd_pool_metadata_set() and rbd_pool_metadata_remove(). // rbd_pool_metadata_set() and rbd_pool_metadata_remove().

View File

@ -951,6 +951,11 @@ func (image *Image) GetId() (string, error) {
} }
// GetName returns the image name.
func (image *Image) GetName() string {
return image.name
}
// SetSnapshot updates the rbd image (not the Snapshot) such that the snapshot // SetSnapshot updates the rbd image (not the Snapshot) such that the snapshot
// is the source of readable data. // is the source of readable data.
// //

View File

@ -1,6 +1,3 @@
//go:build !luminous && !mimic
// +build !luminous,!mimic
// //
// Ceph Nautilus is the first release that includes rbd_list2() and // Ceph Nautilus is the first release that includes rbd_list2() and
// rbd_get_create_timestamp(). // rbd_get_create_timestamp().

View File

@ -1,6 +1,3 @@
//go:build !luminous
// +build !luminous
// //
// Ceph Mimic introduced rbd_snap_get_namespace_type(). // Ceph Mimic introduced rbd_snap_get_namespace_type().

View File

@ -1,6 +1,3 @@
//go:build !luminous && !mimic
// +build !luminous,!mimic
// //
// Ceph Nautilus introduced rbd_get_parent() and deprecated rbd_get_parent_info(). // Ceph Nautilus introduced rbd_get_parent() and deprecated rbd_get_parent_info().
// Ceph Nautilus introduced rbd_list_children3() and deprecated rbd_list_children(). // Ceph Nautilus introduced rbd_list_children3() and deprecated rbd_list_children().

2
vendor/modules.txt vendored
View File

@ -69,7 +69,7 @@ github.com/cenkalti/backoff/v3
## explicit; go 1.16 ## explicit; go 1.16
github.com/ceph/ceph-csi/api/deploy/kubernetes/rbd github.com/ceph/ceph-csi/api/deploy/kubernetes/rbd
github.com/ceph/ceph-csi/api/deploy/ocp github.com/ceph/ceph-csi/api/deploy/ocp
# github.com/ceph/go-ceph v0.12.0 # github.com/ceph/go-ceph v0.13.0
## explicit; go 1.12 ## explicit; go 1.12
github.com/ceph/go-ceph/cephfs/admin github.com/ceph/go-ceph/cephfs/admin
github.com/ceph/go-ceph/common/commands github.com/ceph/go-ceph/common/commands