Reef adds support for combining server-side encryption and compression,
but previous releases would not replicate such objects correctly. gate
the feature behind a zonegroup feature flag to require that all zones
upgrade to reef before enabling. this feature is not enabled by default
in new zonegroups
Fixes: https://tracker.ceph.com/issues/57905
Signed-off-by: Casey Bodley <cbodley@redhat.com>
(cherry picked from commit
4bc52954ab7b38a8eac50c116196d6db728cee00)
Conflicts:
src/rgw/rgw_op.cc: SiteConfig -> sal::ZoneGroup::supports
if (encrypt != nullptr) {
filter = &*encrypt;
}
- if (compression_type != "none") {
+ // a zonegroup feature is required to combine compression and encryption
+ const rgw::sal::ZoneGroup& zonegroup = driver->get_zone()->get_zonegroup();
+ const bool compress_encrypted = zonegroup.supports(rgw::zone_features::compress_encrypted);
+ if (compression_type != "none" &&
+ (encrypt == nullptr || compress_encrypted)) {
plugin = get_compressor_plugin(s, compression_type);
if (!plugin) {
ldpp_dout(this, 1) << "Cannot load plugin for compression type "
// zone feature names
inline constexpr std::string_view resharding = "resharding";
+inline constexpr std::string_view compress_encrypted = "compress-encrypted";
// static list of features supported by this release
inline constexpr std::initializer_list<std::string_view> supported = {
resharding,
+ compress_encrypted,
};
inline constexpr bool supports(std::string_view feature) {