Skip to content

Releases: ceph/go-ceph

Release v0.17.0

16 Aug 13:26
Compare
Choose a tag to compare

The maintainers and contributors to go-ceph are pleased to announce the v0.17.0 release. This is another great step towards making it possible to use the power of the Ceph APIs in the Go language.

Many thanks to our new contributors:

As this is a v0.x release we do not guarantee backwards compatibility with previous versions of the code. However, we aim not to disrupt existing consumers of the library and thus make an effort not to immediately implement breaking changes without very good justification. Please see the "Deprecations & Removals" section (if present) to get a sense of what you can expect to change in the future and prepare your code ahead of time. You may also want to view "Deprecations & Removals" of previous releases as they are not repeated here. All newly introduced APIs in the following section are labeled as "preview" APIs first, and are only available if the ceph_preview build tag is set. There is explicitly no backwards compatibility guaranteed for these until they are labeled as "stable" in a later release.

New Features

cephfs

  • cephfs: add AtStatxDontSync and deprecate AtNoAttrSync by @ansiwen in #747
    • Adds the AtStatxDontSync flag, that replaces the deprecated AtNoAttrSync.

rados

  • rados: Implement rados_set_alloc_hint2 by @Okhoshi in #710
    • Adds IOContext.SetAllocationHint and WriteOp.SetAllocationHint methods.
  • rados: add support for retrieving the alignment (stripe) size by @dmlambea in #740
    • Adds the IOContext.Alignment and IOContext.RequiresAlignment methods.

rgw/admin

  • Rgw/admin: add num_shards to bucket struct field by @oneto1 in #704
    • Adds NumShards field to the Bucket struct.
  • Rgw admin more actions by @maksim-kharitonov in #654
    • Adds the API methods ListUsersBuckets, ListUsersBucketsWithStat, CreateKey, RemoveKey and SetIndividualBucketQuota

API Stability Updates

rados

  • IOContext.SetLocator method is stable

rgw/admin

  • API methods UnlinkBucket, LinkBucket, CreateSubuser, RemoveSubuser and ModifySubuser are stable.

common/log

  • SetWarnf and SetDebugf are stable.

cephfs

  • The AtNoAttrSync is deprecated.

Other Changes

rados package

  • rados: Make sure Conn isn't GC'd while it has dependant IOContexts. by @baergj in #713

rbd package

cephfs/admin package

Internal

New Contributors

Full Changelog: v0.16.0...v0.17.0

Release v0.16.0

14 Jun 20:22
Compare
Choose a tag to compare

The maintainers and contributors to go-ceph are pleased to announce the v0.16.0 release. This is another great step towards making it possible to use the power of the Ceph APIs in the Go language.

Many thanks to our new contributors:

As this is a v0.x release we do not guarantee backwards compatibility with previous versions of the code. However, we aim not to disrupt existing consumers of the library and thus make an effort not to immediately implement breaking changes without very good justification. Please see the "Deprecations & Removals" section (if present) to get a sense of what you can expect to change in the future and prepare your code ahead of time. You may also want to view "Deprecations & Removals" of previous releases as they are not repeated here. All newly introduced APIs in the following section are labeled as "preview" APIs first, and are only available if the ceph_preview build tag is set. There is explicitly no backwards compatibility guaranteed for these until they are labeled as "stable" in a later release.

New Features

cephfs/admin package:

  • cephfs/admin: add CloneStatus.GetFailure() by @nixpanic in #696
    • Add GetFailure method to fetch volume clone failure details
    • This is a preview API. In order to use it in this release the ceph_preview build tag must be set.
  • cephfs: add subvolume metadata APIs by @pkalever in #691
    • Add SetMetadata, GetMetadata, RemoveMetadata, ForceRemoveMetadata, and ListMetadata methods for CephFS volume metadata management
    • NOTE: this is a preliminary implementation. It is untested due to issues with CI dependencies. In order to use it in this release both the build tags ceph_preview and ceph_ci_untested must be set.
  • cephfs: add subvolume snapshot metadata APIs by @pkalever in #698
    • Add SetSnapshotMetadata, GetSnapshotMetadata, RemoveSnapshotMetadata, ForceRemoveSnapshotMetadata, and ListSnapshotMetadata methods for CephFS snapshot metadata management
    • NOTE: this is a preliminary implementation. It is untested due to issues with CI dependencies. In order to use it in this release both the build tags ceph_preview and ceph_ci_untested must be set.

rbd package

  • rbd: expose rbd_snap_rename to Go clients by @Sanford137 in #687
    • Add Snapshot method Rename implementing rbd_snap_rename
    • This is a preview API. In order to use it in this release the ceph_preview build tag must be set.

API Stability Updates

rados package:

  • rados: stabilze some APIs by @phlogistonjohn in #706
    • APIs for watchers and ReadOp and WriteOp methods are now stable

common/admin packge:

  • nfs admin: remove untested build tag by @phlogistonjohn in #689
    • the nfs admin API is now considered a preview API.

Deprecations and Removals

Other Changes

rados package

  • List oids null by @nickjanus in #663
    • OIDs with null characters in the name can now be listed using IOContext.ListObjects

rbd package

  • rbd: don't cap the buffer size used in GetImageNames by @Sanford137 in #700

rgw/admin package

Internal

Full Changelog: v0.15.0...v0.16.0

Release v0.15.0

12 Apr 13:27
Compare
Choose a tag to compare

The maintainers and contributors to go-ceph are pleased to announce the v0.15.0 release. This is another great step towards making it possible to use the power of the Ceph APIs in the Go language.

Many thanks to our new contributors:

As this is a v0.x release we do not guarantee backwards compatibility with previous versions of the code. However, we aim not to disrupt existing consumers of the library and thus make an effort not to immediately implement breaking changes without very good justification. Please see the "Deprecations & Removals" section (if present) to get a sense of what you can expect to change in the future and prepare your code ahead of time. You may also want to view "Deprecations & Removals" of previous releases as they are not repeated here. All newly introduced APIs in the following section are labeled as "preview" APIs first, and are only available if the ceph_preview build tag is set. There is explicitly no backwards compatibility guaranteed for these until they are labeled as "stable" in a later release.

New Features

  • rados package
    • rados: add wrapper to set locator key on IOContext by @Anthrazz in #651
      • Adds IOContext method SetLocator implementing rados_ioctx_locator_set_key
  • rgw package
    • Adds support for the subuser calls in the rgw admin interface by @sebastianriese in #644
      • Adds API methods CreateSubuser, RemoveSubuser and ModifySubuser
    • rgw/admin: add suport for link/unlink bucket by @elrondwong in #646
      • Adds API methods LinkBucket and UnlinkBucket
  • common package
    • nfs: admin APIs for managing nfs exports by @phlogistonjohn in #655
      • Adds function NewFromConn and Admin methods CreateCephFSExport RemoveExport ListDetailedExports ExportInfo
      • NOTE: this is a preliminary implementation, that is untested due to issues with CI dependencies. In order to use it now already, both the build tags ceph_preview and ceph_ci_untested must be set.
    • common: implement a common log package by @ansiwen in #638
      • Adds functions SetWarnf and SetDebugf

Other changes

  • rados package
    • rados: use omap v2 bindings by @gman0 in #643
    • rados: add warning logs to watcher callbacks by @ansiwen in #658
  • internals
    • contrib/implements: replace castxml with cc library by @ansiwen in #596

Full Changelog: v0.14.0...v0.15.0

Release v0.14.0

15 Feb 15:50
Compare
Choose a tag to compare

The maintainers and contributors to go-ceph are pleased to announce the v0.14.0 release. This is another great step towards making it possible to use the power of the Ceph APIs in the Go language.

Another round of thanks to contributor Robert Vasek for adding more API calls to the rados module. Both ReadOp and WriteOp types have been extended with new function calls, including the ability to assert the rados version preventing
unexpected state changes. See the features list for an expanded list of the new function calls.

As this is a v0.x release we do not guarantee backwards compatibility with previous versions of the code. However, we aim not to disrupt existing consumers of the library and thus make an effort not to immediately implement
breaking changes without very good justification. Please see the "Deprecations & Removals" section to get a sense of what you can expect to change in the future and prepare your code ahead of time. You may also want to view "Deprecations & Removals" of previous releases as they are not repeated here.

New Features

  • In the rados package (preview APIs):

    • Add ReadOp method Read implementing rados_read_op_read
    • Add WriteOp method Remove implementing rados_write_op_remove
    • Add ReadOp method AssertVersion implementing rados_read_op_assert_version
    • Add WriteOp method AssertVersion implementing rados_write_op_assert_version
    • Add WriteOp method SetXattr implementing rados_write_op_setxattr
    • Add ReadOp method GetOmapValuesByKeys implementing read_op_omap_get_vals_by_keys
    • Add Watcher type
    • Add NotifyEvent type
    • Add WatchWithTimeout and Watch implementing rados_watch3
    • Add Watcher method Check implementing rados_watch_check
    • Add Watcher method Delete implementing rados_unwatch2
    • Add NotifyWithTimeout and Notify implementing rados_notify2
    • Add NotifyEvent method Ack implementing rados_notify_ack
    • Add WatcherFlush implementing rados_watch_flush
  • In the common admin manager package:

    • Create a new package for ceph mgr module functions
    • Move EnableModule from cephfs admin
    • Move DisableModule from cephfs admin
    • Move ListModules from cephfs admin

Now Stable

  • In the rados package:
    • The WriteOp CmpExt function

Deprecations & Removals

The functions EnableModule and DisableModule present in cephfs admin are now deprecated. Use the same functions from the new "common/admin/manager" location instead.

Ceph "Nautilus" continues to be deprecated.

Other

  • Improve reliability of cephfs mirroring tests
  • Improve doc comments for rbd Read and Write functions
  • Fix project workflow automation
  • Document centos specific package dependency hints
  • Improve api documentation workflow
  • Fix issues building container images
  • Fix running static checks on preview APIs
  • Fix code style issue in cutil package
  • Fix doc comments in the rados package
  • Add internal library code for writing tests
  • Other fixes and improvements

Release v0.13.0

14 Dec 18:12
Compare
Choose a tag to compare

The maintainers and contributors to go-ceph are pleased to announce the v0.13.0 release. This is another great step towards making it possible to use the power of the Ceph APIs in the Go language.

Big thanks to contributor Robert Vasek for providing a new function to the WriteOp type. The CmpExt function supports comparing a byte sequence against one within a rados object allowing one to add an assertion of matching content as part of a single write operation.

As this is a v0.x release we do not guarantee backwards compatibility with previous versions of the code. However, we aim not to disrupt existing consumers of the library and thus make an effort not to immediately implement breaking changes without very good justification. Please see the "Deprecations & Removals" section to get a sense of what you can expect to change in the future and prepare your code ahead of time. You may also want to view "Deprecations & Removals" of previous releases as they are not repeated here.

New Features

  • In the rados package:

    • Add WriteOp CmpExt implementing rados_write_op_cmpext (preview)
  • In the rbd package:

    • Add GetName accessor function

Now Stable

  • In the rbd admin package:

    • The ImageSpec type
    • The TaskAdmin function AddFlatten
    • The TaskAdmin function AddRemove
    • The TaskAdmin function AddTrashRemove
    • The TaskAdmin function Cancel
    • The TaskAdmin function GetTaskByID
    • The TaskAdmin function List
  • In the rgw admin package:

    • The AddUserCap function
    • The RemoveUserCap function

Deprecations & Removals

In go-ceph v0.12.0 support for Ceph "Nautilus" was deprecated. Support for nautilus will be removed in a future release.

Other

  • Improve reliability of cephfs mirroring tests
  • All remaining build tags for "luminous" and "mimic" were removed. Previous
    releases had already removed support for those ceph versions
  • Add workflow automation for deprecated and preview apis
  • Document processes around deprecated and preview apis
  • Improve C memory allocations in rados
  • Fix rgw admin example documentation
  • Other fixes and improvements

Release v0.12.0

12 Oct 13:30
Compare
Choose a tag to compare

The maintainers and contributors to go-ceph are pleased to announce the v0.12.0 release. This is another great step towards making it possible to use the power of the Ceph APIs in the Go language.

With this release go-ceph, via the rbd admin package, can now interact with RBD asynchronous tasks. These tasks perform actions like flattening or removing an image in the background. The tasks run within the Ceph cluster (the MGR) rather than synchronously from the (go-ceph) client. We'd like to extend our thanks to contribtor Rakshith R. for these changes!

As this is a v0.x release we do not guarantee backwards compatibility with previous versions of the code. However, we aim not to disrupt existing consumers of the library and thus make an effort not to immediately implement breaking changes without very good justification. Please see the "Deprecations & Removals" section to get a sense of what you can expect to change in the future and prepare your code ahead of time. You may also want to view "Deprecations & Removals" of previous releases as they are not repeated here.

Please note that with this release we have started using the ceph_preview build tag to demarcate new APIs that we want tested and tried out but we do not commit to keeping the API stable. The details of this policy are available in the API Stability Document [1] and information about the status of deprecated and preview APIs can be found in the API Status Document [2].

New Features

  • In the rbd package:

    • Add MirrorImageInstanceIDList and MirrorImageInstanceIDIter implementing rbd_mirror_image_instance_id_list
  • In the rbd admin package:

    • Add ImageSpec type
    • Add TaskAdmin function AddFlatten
    • Add TaskAdmin function AddRemove
    • Add TaskAdmin function AddTrashRemove
    • Add TaskAdmin function Cancel
    • Add TaskAdmin function GetTaskByID
    • Add TaskAdmin function List
  • In the rgw admin package:

    • Add AddUserCap function
    • Add RemoveUserCap function

Deprecations & Removals

With go-ceph v0.12.0 support for Ceph "Nautilus" is offically deprecated.

Other

  • Fixes for PtrGuard tests
  • Standardization of many internal variable names
  • Enable previously skipped cephfs tests
  • Improvements to cephfs test cases
  • Use ceph/ceph as the base image for test containers
  • Add a mirror state option to the entrypoint script
  • Reuse running ceph container(s) in makefile, when possible
  • Run tests with the ceph_preview build tag
  • Improve implements the go-ceph API analysis tool
  • Add a tool to help track the status of APIs
  • Improve documentation visibilty of some deprecated items
  • Other fixes and improvements

[1] - https://github.com/ceph/go-ceph/blob/master/docs/api-stability.md
[2] - https://github.com/ceph/go-ceph/blob/master/docs/api-status.md

Release v0.11.0

10 Aug 17:25
Compare
Choose a tag to compare

The maintainers and contributors to go-ceph are pleased to announce the v0.11.0 release. This is another great step towards making it possible to use the power of the Ceph APIs in the Go language.

This release sees the addition of new RBD APIs for managing encryption. The go-ceph rbd package can now configure LUKS encryption for an image as well as read & write to an image with LUKS-style encryption. A big thank you to contributor Effi Ofer for these additions.

We have also added intial support for CephFS mirroring to the cephfs admin package. Functions have been added that support enabling mirroring, basic management of site peers, and adding or removing directories to be mirrored. Please see the docs for the cephfs/admin package for full details.

As this is a v0.x release we do not guarantee backwards compatibility with previous versions of the code. However, we aim not to disrupt existing consumers of the library and thus make an effort not to immediately implement breaking changes without very good justification. Please see the "Deprecations & Removals" section to get a sense of what you can expect to change in the future and prepare your code ahead of time. You may also want to view "Deprecations & Removals" of previous releases as they are not repeated here.

Please note that for future releases we will start using a build tag to demarcate new APIs that we want tested and tried out but we do not commit to keeping the API stable yet. The exact details of this policy will be set out soon and provided in the following go-ceph release.

New Features

  • In the cephfs package

    • Add ReadConfigFile implementing ceph_conf_read_file
  • In the cephfs admin:

    • Add EnableMirroringModule function
    • Add DisableMirroringModule function
    • Add SnapshotMirrorAdmin type and many functions related to cephfs mirroring
  • In the rbd package

    • Add EncryptionFormat implementing rbd_encryption_format
    • Add EncryptionLoad implementing rbd_encryption_load
    • Add MirrorImageInfoIter type implementing rbd_mirror_image_info_list
    • Add MirrorImageInfoList implementing rbd_mirror_image_info_list
    • Add MirrorImageGlobalStatusList implementing rbd_mirror_image_status_list
  • In the rgw admin package:

    • Add support for HTTP client interface
    • Add Stat & GenerateStat fields to the User struct
    • Add UserCaps field to the User struct

Deprecations & Removals

  • In the rgw admin package:
    • Remove the Debug field from the API type.
  • In the rbd package:
    • Deprecate Close() method of MirrorImageGlobalStatusIter

It is planned that go-ceph v0.11 will be the last release to fully support ceph nautilus and that for the following go-ceph release ceph nautilus support will be deprecated.

Other

  • Support enabling dependency caching for container rules in the Makefile
  • Added a Makefile flag to run more go commands via a container
  • Improved devcontainer support for VSCode
  • Internal improvements to variable names
  • Minor code improvements in the rgw/admin package
  • Removed some code for non-supported ceph mimic & luminous versions
  • Support for testing cephfs mirroring
  • Other fixes and improvements

Release v0.10.0

08 Jun 17:13
Compare
Choose a tag to compare

The maintainers and contributors to go-ceph are pleased to announce the v0.10.0 release. This is another great step towards making it possible to use the power of the Ceph APIs in the Go language.

For this release we'd like to highlight the new "rgw admin" package. This package can be used to access Ceph's RADOS Gateway (RGW) Operational Admin API. This is an HTTP-based API that supports bucket management, user management, and user quota management. We expect additional functions to be added in the future. This API requires the use of S3-style authentication credentials in contrast to the ceph.conf/ceph keyring/ceph keyfile authentication used by the other go-ceph sub-packages.

In addition, we've added a new "rbd admin" package. This library serves a similar role to our "cephfs admin" package - supporting administrative functions that are not a direct part of the Ceph librbd API. Currently, the package includes functions to manage mirror snapshot schedules.

We've added a number of new functions related to RBD mirroring to the rbd package.

This is the first release to officially support Ceph "pacific".

As this is a v0.x release we do not guarantee backwards compatibility with previous versions of the code. However, we aim not to disrupt existing consumers of the library and thus make an effort not to immediately implement breaking changes without very good justification. Please see the "Deprecations & Removals" section to get a sense of what you can expect to change in the future and prepare your code ahead of time. You may also want to view "Deprecations & Removals" of previous releases as they are not repeated here.

Because the rgw admin and rbd admin packages are brand new, we intend on being more lax with backwards compatibility, for these specific packages, for a release or two. While we'd prefer not to change anything, we will more readily make changes as needed because the package is still immature compared to the other sub-packages. Feedback, via our github issue tracker, about these packages are especially welcome.

New Features

  • In the cephfs package

    • Add Lchown implementing ceph_lchown
  • In the rados package

    • Add SetPoolFullTry implementing rados_set_osdmap_full_try (nautilus)
    • Add UnsetPoolFullTry implementing rados_unset_osdmap_full_try (nautilus)
    • Add SetPoolFullTry implementing rados_set_pool_full_try
    • Add UnsetPoolFullTry implementing rados_unset_pool_full_try
  • In the rbd package

    • Add MirrorImageStatusSummary implementing rbd_mirror_image_status_summary
    • Add SetMirrorSiteName implementing rbd_mirror_site_name_set
    • Add GetMirrorSiteName implementing rbd_mirror_site_name_get
    • Add SetSnapshot Image method (re)implementing rbd_snap_set
    • Add DeepCopy implementing rbd_deep_copy
    • Add CreateMirrorPeerBootstrapToken implementing rbd_mirror_peer_bootstrap_create
    • Add ImportMirrorPeerBootstrapToken implementing rbd_mirror_peer_bootstrap_import
    • Add MirrorImageGlobalStatusIter implementing rbd_mirror_image_global_status_list
    • Add GetMirrorUUID implementing rbd_mirror_uuid_get
  • Added new package rbd/admin

  • Added new package rgw/admin

Other

  • Improve behavior when running multi-container tests with podman
  • Support passing test-script entrypoint arguments to the makefile
  • No longer require fuse when running the tests
  • Add a devcontainer configuration for users of VSCode
  • When running tests manually, default to "octopus"
  • rbd: Replace complex pointer arithmetic
  • rbd: Fix the argument type of the rbd_writesame call
  • Add benchmarks for PtrGuard related types
  • CI workflow improvements
  • Other fixes and improvements

Release v0.9.0

13 Apr 16:57
Compare
Choose a tag to compare

The maintainers and contributors to go-ceph are pleased to announce the v0.9.0 release. This is another great step towards making it possible to use the power of the Ceph APIs in the Go language.

This release improves the support and testing of rbd mirroring.

As this is a v0.x release we do not guarantee backwards compatibility with previous versions of the code. However, we aim not to disrupt existing consumers of the library and thus make an effort not to immediately implement breaking changes without very good justification. Please see the "Deprecations & Removals" section to get a sense of what you can expect to change in the future and prepare your code ahead of time. You may also want to view "Deprecations & Removals" of previous releases as they are not repeated here.

New Features

  • In the rbd package
    • Add GetGlobalMirrorStatus implementing rbd_mirror_image_get_global_status
    • Add String method for MirrorMode
    • Add String method for ImageMirrorMode
    • Add String method for MirrorImageState

Deprecations & Removals

No changes since v0.8.0.

Other

  • Remove the requirement for fuse mounts when testing cephfs
  • Improve ptrguard tests
  • Add new test/CI infrastructure for testing mirroring with two ceph clusters
  • Refactoring utility functions for cephfs admin
  • CI workflow improvements
  • Other fixes and improvements

Release v0.8.0

09 Feb 17:56
Compare
Choose a tag to compare

The maintainers and contributors to go-ceph are pleased to announce the v0.8.0 release. This is another great step towards making it possible to use the power of the Ceph APIs in the Go language.

This release adds new types in the rados package that can be used to make "batch" read and write operations. In addition, these ReadOp and WriteOp types lay the base for future work exposing new ceph rados "op" functions. Existing functionality, such as the code to get and set OMaps, has been updated to use these new types.

Many new functions have been added to the rbd package. One set of functions adds support for interacting with rbd mirroring features. Another set of functions adds support for rbd groups and group snapshots.

Important new features have been added to the utility library to improve memory management between C and Go code. In particular, the new "PtrGuard" mechanism can be used to improve buffer sharing between C and Go. As PtrGuard is new, it is not currently enabled by default. To enable PtrGuard, and test it out, supply the build tag "ptrguard" to your go build command. This change, as well as related changes to go-ceph, means that go-ceph is now compliant with the checks enabled when "cgocheck=2" and go-ceph programs can now run with that parameter in all cases.

As this is a v0.x release we do not guarantee backwards compatibility with previous versions of the code. However, we aim not to disrupt existing consumers of the library and thus make an effort not to immediately implement breaking changes without very good justification. Please see the "Deprecations & Removals" section to get a sense of what you can expect to change in the future and prepare your code ahead of time. You may also want to view "Deprecations & Removals" of previous releases as they are not repeated here.

New Features

  • In the rados package
    • Add OperationFlags type and flag values
    • Add a WriteOp type based on rados_write_op_t
    • Add WriteOp method Create implementing rados_write_op_create
    • Add WriteOp method SetOmap implementing rados_write_op_omap_set
    • Add WriteOp method RmOmapKeys implementing rados_write_op_omap_rm_keys
    • Add WriteOp method CleanOmap implementing rados_write_op_omap_clear
    • Add WriteOp method AssertExists implementing rados_write_op_assert_exists
    • Add WriteOp method Write implementing rados_write_op_write
    • Add WriteOp method WriteFull implementing rados_write_op_write_full
    • Add WriteOp method WriteSame implementing rados_write_op_writesame
    • Add a ReadOp type based on rados_read_op_t
    • Add ReadOp method GetOmapValues implementing rados_read_op_omap_get_vals2
    • Add ReadOp method AssertExists implementing rados_read_op_assert_exists
  • In the rbd package
    • Add GroupCreate implementing rbd_group_create
    • Add GroupRemove implementing rbd_group_remove
    • Add GroupRename implementing rbd_group_rename
    • Add GroupList implementing rbd_group_list
    • Add GroupImageAdd implementing rbd_group_image_add
    • Add GroupImageRemove implementing rbd_group_image_remove
    • Add GroupImageRemoveByID implementing rbd_group_image_remove_by_id
    • Add GroupImageList implementing rbd_group_image_list
    • Add GetGroup implementing rbd_get_group
    • Add GroupSnapCreate implementing rbd_group_snap_create
    • Add GroupSnapRemove implementing rbd_group_snap_remove
    • Add GroupSnapRename implementing rbd_group_snap_rename
    • Add GroupSnapList implementing rbd_group_snap_list
    • Add GroupSnapRollback implementing rbd_group_snap_rollback
    • Add GroupSnapRollbackWithProgress implementing rbd_group_snap_rollback_with_progress
    • Add SetMirrorMode implementing rbd_mirror_mode_set
    • Add GetMirrorMode implementing rbd_mirror_mode_get
    • Add MirrorEnable implementing rbd_mirror_image_enable2
    • Add MirrorDisable implementing rbd_mirror_image_disable
    • Add MirrorPromote implementing rbd_mirror_image_promote
    • Add MirrorDemote implementing rbd_mirror_image_demote
    • Add MirrorResync implementing rbd_mirror_image_resync
    • Add MirrorInstanceId implementing rbd_mirror_image_get_instance_id
    • Add GetMirrorImageInfo implementing rbd_mirror_image_get_info
    • Add GetImageMirrorMode implementing rbd_mirror_image_get_mode
  • In the cephfs admin package
    • Add a State field to the SubVolumeInfo structure

Library Fixes

  • In the cephfs admin package
    • When the RetainSnapshots flag is set, send to correct JSON key

Deprecations & Removals

As a reminder we no longer support or test with Ceph "luminous" or "mimic" versions. Note that server-client version compatibility for go-ceph is the same as the native Ceph libraries, as these are what go-ceph builds upon. The versions of Ceph that go-ceph supports only applies to what versions are expected to successfully compile.

Other

  • Fix "No such file or directory" error when executing Makefile
  • CI workflow improvements
  • Fix incorrect date based test assertion
  • Enable test cases that were previously disabled, as the issues are fixed in ceph
  • Add more general types for working with C code in Go
  • Add a test case for WriteSame for zero-filling
  • Add test cases for internal helper functions
  • Add internal PtrGuard utility type
  • Add SyncBuffer abstraction type
  • Update internal Iovec type to use SyncBuffer
  • Enable "GODEBUG=cgocheck=2" when running containerized tests
  • Other fixes and improvements