Compare commits

..

21 Commits

Author SHA1 Message Date
Kaleb S. KEITHLEY 0d71ecf742 16.2.13 GA
Signed-off-by: Kaleb S. KEITHLEY <kkeithle@redhat.com>
2023-05-09 19:29:18 -04:00
Kaleb S. KEITHLEY 2853c763e0 16.2.12 GA
Signed-off-by: Kaleb S. KEITHLEY <kkeithle@redhat.com>
2023-04-13 14:50:43 -04:00
Kaleb S. KEITHLEY cebdc3ed9b 16.2.11 GA
elide __isa_bits == 32 test, haven't done 32-bit builds for some time,
  increase mem_per_process for ppc64le

Signed-off-by: Kaleb S. KEITHLEY <kkeithle@redhat.com>
2023-02-07 10:25:18 -05:00
Kaleb S. KEITHLEY a0f343dacb 16.2.11 GA
Signed-off-by: Kaleb S. KEITHLEY <kkeithle@redhat.com>
2023-01-30 11:46:16 -05:00
Kaleb S. KEITHLEY 04dca0d9b7 16.2.11 GA
Signed-off-by: Kaleb S. KEITHLEY <kkeithle@redhat.com>
2023-01-30 10:25:49 -05:00
Kaleb S. KEITHLEY b558ccc459 16.2.11 GA
Signed-off-by: Kaleb S. KEITHLEY <kkeithle@redhat.com>
2023-01-30 09:56:37 -05:00
Kaleb S. KEITHLEY 8836dac402 Merge branch 'f36' of ssh://pkgs.fedoraproject.org/rpms/ceph into f36 2023-01-27 12:58:52 -05:00
Kaleb S. KEITHLEY 8702d50e90 16.2.11 GA
Signed-off-by: Kaleb S. KEITHLEY <kkeithle@redhat.com>
2023-01-27 12:58:36 -05:00
Kaleb S. KEITHLEY dddd068bcd restore 0007-src-test-neorados-CMakeLists.txt.patch 2023-01-26 05:35:34 -05:00
Kaleb S. KEITHLEY dcb9370e41 rm obsolete patches 2022-08-18 14:51:26 -04:00
Kaleb S. KEITHLEY 45693aab3a 16.2.10 GA
Signed-off-by: Kaleb S. KEITHLEY <kkeithle@redhat.com>
2022-07-23 06:04:05 -04:00
Kaleb S. KEITHLEY 0a7b6fd5ac 16.2.10 GA
Signed-off-by: Kaleb S. KEITHLEY <kkeithle@redhat.com>
2022-07-22 08:33:00 -04:00
Kaleb S. KEITHLEY b752ae1064 16.2.10 GA
Signed-off-by: Kaleb S. KEITHLEY <kkeithle@redhat.com>
2022-07-22 07:51:30 -04:00
Kaleb S. KEITHLEY 7f61cc5ff3 16.2.9 rhbz#2100237
Signed-off-by: Kaleb S. KEITHLEY <kkeithle@redhat.com>
2022-06-22 15:47:31 -04:00
Robert-André Mauchin 12ba1019d7 Rebuilt for CVE-2022-1996, CVE-2022-24675, CVE-2022-28327, CVE-2022-27191, CVE-2022-29526, CVE-2022-30629 2022-06-22 17:48:23 +02:00
Kaleb S. KEITHLEY 1e08ffd52f 16.2.9 GA
Signed-off-by: Kaleb S. KEITHLEY <kkeithle@redhat.com>
2022-05-19 08:50:13 -04:00
Kaleb S. KEITHLEY 343aca1734 16.2.8 GA
Signed-off-by: Kaleb S. KEITHLEY <kkeithle@redhat.com>
2022-05-16 22:09:17 -04:00
Kaleb S. KEITHLEY 5e20b9c764 16.2.8 GA
Signed-off-by: Kaleb S. KEITHLEY <kkeithle@redhat.com>
2022-05-16 22:07:50 -04:00
Kaleb S. KEITHLEY ff1c66c1f9 16.2.7, Boost license name
Signed-off-by: Kaleb S. KEITHLEY <kkeithle@redhat.com>
2022-03-09 10:10:54 -05:00
Kaleb S. KEITHLEY 75119cc72f 16.2.7, Boost license name
Signed-off-by: Kaleb S. KEITHLEY <kkeithle@redhat.com>
2022-03-09 07:24:44 -05:00
Kaleb S. KEITHLEY 6dfba46506 16.2.7, Boost license name
Signed-off-by: Kaleb S. KEITHLEY <kkeithle@redhat.com>
2022-03-08 07:15:44 -05:00
36 changed files with 1688 additions and 1817 deletions
+11
View File
@@ -8,3 +8,14 @@
namespace ceph {
class Formatter;
--- ceph-15.2.4/src/global/signal_handler.h.orig 2020-07-17 12:57:54.763628429 -0400
+++ ceph-15.2.4/src/global/signal_handler.h 2020-07-17 12:58:10.610628429 -0400
@@ -16,6 +16,8 @@
#define CEPH_GLOBAL_SIGNAL_HANDLER_H
#include <signal.h>
+#include <string>
+
#include "acconfig.h"
typedef void (*signal_handler_t)(int);
@@ -0,0 +1,11 @@
--- ceph-16.1.0-43-g6b74fb5c/src/test/neorados/CMakeLists.txt.orig 2021-02-01 08:25:18.006965821 -0500
+++ ceph-16.1.0-43-g6b74fb5c/src/test/neorados/CMakeLists.txt 2021-02-01 08:25:34.244407147 -0500
@@ -19,7 +19,7 @@
target_link_libraries(ceph_test_neorados_op_speed
libneorados fmt::fmt ${unittest_libs})
-add_library(neoradostest-support common_tests.cc)
+add_library(neoradostest-support STATIC common_tests.cc)
target_link_libraries(neoradostest-support
libneorados fmt::fmt)
+11
View File
@@ -0,0 +1,11 @@
--- ceph-16.1.0-43-g6b74fb5c/cmake/modules/Finduring.cmake.orig 2021-02-01 08:45:39.316108287 -0500
+++ ceph-16.1.0-43-g6b74fb5c/cmake/modules/Finduring.cmake 2021-02-01 08:45:59.813665378 -0500
@@ -5,7 +5,7 @@
# uring_FOUND - True if uring found.
find_path(URING_INCLUDE_DIR liburing.h)
-find_library(URING_LIBRARIES liburing.a liburing)
+find_library(URING_LIBRARIES liburing.so liburing)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(uring DEFAULT_MSG URING_LIBRARIES URING_INCLUDE_DIR)
@@ -0,0 +1,63 @@
From 178f6bdac97b57300bbe0956633cf686a7e3ccee Mon Sep 17 00:00:00 2001
From: Yuval Lifshitz <ylifshit@redhat.com>
Date: Fri, 12 Mar 2021 08:56:45 +0200
Subject: [PATCH] librgw/notifications: initialize kafka and amqp
Fixes: https://tracker.ceph.com/issues/49738
Signed-off-by: Yuval Lifshitz <ylifshit@redhat.com>
---
src/rgw/librgw.cc | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)
diff --git a/src/rgw/librgw.cc b/src/rgw/librgw.cc
index 012cc54c3b..a5351dbe7c 100644
--- a/src/rgw/librgw.cc
+++ b/src/rgw/librgw.cc
@@ -53,6 +53,12 @@
#include "rgw_http_client.h"
#include "rgw_http_client_curl.h"
#include "rgw_perf_counters.h"
+#ifdef WITH_RADOSGW_AMQP_ENDPOINT
+#include "rgw_amqp.h"
+#endif
+#ifdef WITH_RADOSGW_KAFKA_ENDPOINT
+#include "rgw_kafka.h"
+#endif
#include "services/svc_zone.h"
@@ -617,6 +623,17 @@ namespace rgw {
/* ignore error */
}
+#ifdef WITH_RADOSGW_AMQP_ENDPOINT
+ if (!rgw::amqp::init(cct.get())) {
+ derr << "ERROR: failed to initialize AMQP manager" << dendl;
+ }
+#endif
+#ifdef WITH_RADOSGW_KAFKA_ENDPOINT
+ if (!rgw::kafka::init(cct.get())) {
+ derr << "ERROR: failed to initialize Kafka manager" << dendl;
+ }
+#endif
+
return 0;
} /* RGWLib::init() */
@@ -645,6 +662,12 @@ namespace rgw {
rgw_shutdown_resolver();
rgw_http_client_cleanup();
rgw::curl::cleanup_curl();
+#ifdef WITH_RADOSGW_AMQP_ENDPOINT
+ rgw::amqp::shutdown();
+#endif
+#ifdef WITH_RADOSGW_KAFKA_ENDPOINT
+ rgw::kafka::shutdown();
+#endif
rgw_perf_stop(g_ceph_context);
--
2.26.2
@@ -0,0 +1,13 @@
diff --git a/src/rgw/rgw_string.h b/src/rgw/rgw_string.h
index 257daa9c1fe..90e64f98a25 100644
--- a/src/rgw/rgw_string.h
+++ b/src/rgw/rgw_string.h
@@ -8,6 +8,8 @@
#include <stdlib.h>
#include <limits.h>
#include <string_view>
+#include <string>
+#include <stdexcept>
#include <boost/container/small_vector.hpp>
+296
View File
@@ -0,0 +1,296 @@
diff --git a/src/kv/rocksdb_cache/BinnedLRUCache.cc b/src/kv/rocksdb_cache/BinnedLRUCache.cc
index 0d657883e92de..47c56e2ddd769 100644
--- a/src/kv/rocksdb_cache/BinnedLRUCache.cc
+++ b/src/kv/rocksdb_cache/BinnedLRUCache.cc
@@ -151,13 +151,20 @@ void BinnedLRUCacheShard::EraseUnRefEntries() {
}
}
-void BinnedLRUCacheShard::ApplyToAllCacheEntries(void (*callback)(void*, size_t),
- bool thread_safe) {
+void BinnedLRUCacheShard::ApplyToAllCacheEntries(
+ const std::function<void(const rocksdb::Slice& key,
+ void* value,
+ size_t charge,
+ DeleterFn)>& callback,
+ bool thread_safe)
+{
if (thread_safe) {
mutex_.lock();
}
table_.ApplyToAllCacheEntries(
- [callback](BinnedLRUHandle* h) { callback(h->value, h->charge); });
+ [callback](BinnedLRUHandle* h) {
+ callback(h->key(), h->value, h->charge, h->deleter);
+ });
if (thread_safe) {
mutex_.unlock();
}
@@ -345,7 +352,7 @@ bool BinnedLRUCacheShard::Release(rocksdb::Cache::Handle* handle, bool force_era
rocksdb::Status BinnedLRUCacheShard::Insert(const rocksdb::Slice& key, uint32_t hash, void* value,
size_t charge,
- void (*deleter)(const rocksdb::Slice& key, void* value),
+ DeleterFn deleter,
rocksdb::Cache::Handle** handle, rocksdb::Cache::Priority priority) {
auto e = new BinnedLRUHandle();
rocksdb::Status s;
@@ -464,6 +471,12 @@ std::string BinnedLRUCacheShard::GetPrintableOptions() const {
return std::string(buffer);
}
+DeleterFn BinnedLRUCacheShard::GetDeleter(rocksdb::Cache::Handle* h) const
+{
+ auto* handle = reinterpret_cast<BinnedLRUHandle*>(h);
+ return handle->deleter;
+}
+
BinnedLRUCache::BinnedLRUCache(CephContext *c,
size_t capacity,
int num_shard_bits,
@@ -519,6 +532,13 @@ void BinnedLRUCache::DisownData() {
#endif // !__SANITIZE_ADDRESS__
}
+#if (ROCKSDB_MAJOR >= 6 && ROCKSDB_MINOR >= 22)
+DeleterFn BinnedLRUCache::GetDeleter(Handle* handle) const
+{
+ return reinterpret_cast<const BinnedLRUHandle*>(handle)->deleter;
+}
+#endif
+
size_t BinnedLRUCache::TEST_GetLRUSize() {
size_t lru_size_of_all_shards = 0;
for (int i = 0; i < num_shards_; i++) {
diff --git a/src/kv/rocksdb_cache/BinnedLRUCache.h b/src/kv/rocksdb_cache/BinnedLRUCache.h
index 85608be0e5734..88bf4502e8927 100644
--- a/src/kv/rocksdb_cache/BinnedLRUCache.h
+++ b/src/kv/rocksdb_cache/BinnedLRUCache.h
@@ -56,7 +56,7 @@ std::shared_ptr<rocksdb::Cache> NewBinnedLRUCache(
struct BinnedLRUHandle {
void* value;
- void (*deleter)(const rocksdb::Slice&, void* value);
+ DeleterFn deleter;
BinnedLRUHandle* next_hash;
BinnedLRUHandle* next;
BinnedLRUHandle* prev;
@@ -189,7 +189,7 @@ class alignas(CACHE_LINE_SIZE) BinnedLRUCacheShard : public CacheShard {
// Like Cache methods, but with an extra "hash" parameter.
virtual rocksdb::Status Insert(const rocksdb::Slice& key, uint32_t hash, void* value,
size_t charge,
- void (*deleter)(const rocksdb::Slice& key, void* value),
+ DeleterFn deleter,
rocksdb::Cache::Handle** handle,
rocksdb::Cache::Priority priority) override;
virtual rocksdb::Cache::Handle* Lookup(const rocksdb::Slice& key, uint32_t hash) override;
@@ -205,13 +205,19 @@ class alignas(CACHE_LINE_SIZE) BinnedLRUCacheShard : public CacheShard {
virtual size_t GetUsage() const override;
virtual size_t GetPinnedUsage() const override;
- virtual void ApplyToAllCacheEntries(void (*callback)(void*, size_t),
- bool thread_safe) override;
+ virtual void ApplyToAllCacheEntries(
+ const std::function<void(const rocksdb::Slice& key,
+ void* value,
+ size_t charge,
+ DeleterFn)>& callback,
+ bool thread_safe) override;
virtual void EraseUnRefEntries() override;
virtual std::string GetPrintableOptions() const override;
+ virtual DeleterFn GetDeleter(rocksdb::Cache::Handle* handle) const override;
+
void TEST_GetLRUList(BinnedLRUHandle** lru, BinnedLRUHandle** lru_low_pri);
// Retrieves number of elements in LRU, for unit test purpose only
@@ -304,7 +310,9 @@ class BinnedLRUCache : public ShardedCache {
virtual size_t GetCharge(Handle* handle) const override;
virtual uint32_t GetHash(Handle* handle) const override;
virtual void DisownData() override;
-
+#if (ROCKSDB_MAJOR >= 6 && ROCKSDB_MINOR >= 22)
+ virtual DeleterFn GetDeleter(Handle* handle) const override;
+#endif
// Retrieves number of elements in LRU, for unit test purpose only
size_t TEST_GetLRUSize();
// Sets the high pri pool ratio
diff --git a/src/kv/rocksdb_cache/ShardedCache.cc b/src/kv/rocksdb_cache/ShardedCache.cc
index 367140a94d8be..6cbd89ad6472c 100644
--- a/src/kv/rocksdb_cache/ShardedCache.cc
+++ b/src/kv/rocksdb_cache/ShardedCache.cc
@@ -44,7 +44,7 @@ void ShardedCache::SetStrictCapacityLimit(bool strict_capacity_limit) {
}
rocksdb::Status ShardedCache::Insert(const rocksdb::Slice& key, void* value, size_t charge,
- void (*deleter)(const rocksdb::Slice& key, void* value),
+ DeleterFn deleter,
rocksdb::Cache::Handle** handle, Priority priority) {
uint32_t hash = HashSlice(key);
return GetShard(Shard(hash))
@@ -109,13 +109,36 @@ size_t ShardedCache::GetPinnedUsage() const {
return usage;
}
+#if (ROCKSDB_MAJOR >= 6 && ROCKSDB_MINOR >= 22)
+DeleterFn ShardedCache::GetDeleter(Handle* handle) const
+{
+ uint32_t hash = GetHash(handle);
+ return GetShard(Shard(hash))->GetDeleter(handle);
+}
+
+void ShardedCache::ApplyToAllEntries(
+ const std::function<void(const rocksdb::Slice& key, void* value, size_t charge,
+ DeleterFn deleter)>& callback,
+ const ApplyToAllEntriesOptions& opts)
+{
+ int num_shards = 1 << num_shard_bits_;
+ for (int s = 0; s < num_shards; s++) {
+ GetShard(s)->ApplyToAllCacheEntries(callback, true /* thread_safe */);
+ }
+}
+#else
void ShardedCache::ApplyToAllCacheEntries(void (*callback)(void*, size_t),
bool thread_safe) {
int num_shards = 1 << num_shard_bits_;
for (int s = 0; s < num_shards; s++) {
- GetShard(s)->ApplyToAllCacheEntries(callback, thread_safe);
+ GetShard(s)->ApplyToAllCacheEntries(
+ [callback](const rocksdb::Slice&, void* value, size_t charge, DeleterFn) {
+ callback(value, charge);
+ },
+ thread_safe);
}
}
+#endif
void ShardedCache::EraseUnRefEntries() {
int num_shards = 1 << num_shard_bits_;
@@ -131,7 +154,7 @@ std::string ShardedCache::GetPrintableOptions() const {
char buffer[kBufferSize];
{
std::lock_guard<std::mutex> l(capacity_mutex_);
- snprintf(buffer, kBufferSize, " capacity : %" ROCKSDB_PRIszt "\n",
+ snprintf(buffer, kBufferSize, " capacity : %zu\n",
capacity_);
ret.append(buffer);
snprintf(buffer, kBufferSize, " num_shard_bits : %d\n", num_shard_bits_);
diff --git a/src/kv/rocksdb_cache/ShardedCache.h b/src/kv/rocksdb_cache/ShardedCache.h
index 4d64893ab1c7b..f98421a09a33a 100644
--- a/src/kv/rocksdb_cache/ShardedCache.h
+++ b/src/kv/rocksdb_cache/ShardedCache.h
@@ -14,6 +14,7 @@
#include <string>
#include <mutex>
+#include "rocksdb/version.h"
#include "rocksdb/cache.h"
#include "include/ceph_hash.h"
#include "common/PriorityCache.h"
@@ -22,10 +23,11 @@
#ifndef CACHE_LINE_SIZE
#define CACHE_LINE_SIZE 64 // XXX arch-specific define
#endif
-#define ROCKSDB_PRIszt "zu"
namespace rocksdb_cache {
+using DeleterFn = void (*)(const rocksdb::Slice& key, void* value);
+
// Single cache shard interface.
class CacheShard {
public:
@@ -34,7 +36,7 @@ class CacheShard {
virtual rocksdb::Status Insert(const rocksdb::Slice& key, uint32_t hash, void* value,
size_t charge,
- void (*deleter)(const rocksdb::Slice& key, void* value),
+ DeleterFn deleter,
rocksdb::Cache::Handle** handle, rocksdb::Cache::Priority priority) = 0;
virtual rocksdb::Cache::Handle* Lookup(const rocksdb::Slice& key, uint32_t hash) = 0;
virtual bool Ref(rocksdb::Cache::Handle* handle) = 0;
@@ -44,10 +46,15 @@ class CacheShard {
virtual void SetStrictCapacityLimit(bool strict_capacity_limit) = 0;
virtual size_t GetUsage() const = 0;
virtual size_t GetPinnedUsage() const = 0;
- virtual void ApplyToAllCacheEntries(void (*callback)(void*, size_t),
- bool thread_safe) = 0;
+ virtual void ApplyToAllCacheEntries(
+ const std::function<void(const rocksdb::Slice& key,
+ void* value,
+ size_t charge,
+ DeleterFn)>& callback,
+ bool thread_safe) = 0;
virtual void EraseUnRefEntries() = 0;
virtual std::string GetPrintableOptions() const { return ""; }
+ virtual DeleterFn GetDeleter(rocksdb::Cache::Handle* handle) const = 0;
};
// Generic cache interface which shards cache by hash of keys. 2^num_shard_bits
@@ -57,34 +64,43 @@ class ShardedCache : public rocksdb::Cache, public PriorityCache::PriCache {
public:
ShardedCache(size_t capacity, int num_shard_bits, bool strict_capacity_limit);
virtual ~ShardedCache() = default;
+ // rocksdb::Cache
virtual const char* Name() const override = 0;
- virtual CacheShard* GetShard(int shard) = 0;
- virtual const CacheShard* GetShard(int shard) const = 0;
- virtual void* Value(Handle* handle) override = 0;
- virtual size_t GetCharge(Handle* handle) const = 0;
- virtual uint32_t GetHash(Handle* handle) const = 0;
- virtual void DisownData() override = 0;
-
- virtual void SetCapacity(size_t capacity) override;
- virtual void SetStrictCapacityLimit(bool strict_capacity_limit) override;
-
virtual rocksdb::Status Insert(const rocksdb::Slice& key, void* value, size_t charge,
- void (*deleter)(const rocksdb::Slice& key, void* value),
+ DeleterFn,
rocksdb::Cache::Handle** handle, Priority priority) override;
virtual rocksdb::Cache::Handle* Lookup(const rocksdb::Slice& key, rocksdb::Statistics* stats) override;
virtual bool Ref(rocksdb::Cache::Handle* handle) override;
virtual bool Release(rocksdb::Cache::Handle* handle, bool force_erase = false) override;
+ virtual void* Value(Handle* handle) override = 0;
virtual void Erase(const rocksdb::Slice& key) override;
virtual uint64_t NewId() override;
- virtual size_t GetCapacity() const override;
+ virtual void SetCapacity(size_t capacity) override;
+ virtual void SetStrictCapacityLimit(bool strict_capacity_limit) override;
virtual bool HasStrictCapacityLimit() const override;
+ virtual size_t GetCapacity() const override;
virtual size_t GetUsage() const override;
virtual size_t GetUsage(rocksdb::Cache::Handle* handle) const override;
virtual size_t GetPinnedUsage() const override;
+ virtual size_t GetCharge(Handle* handle) const = 0;
+#if (ROCKSDB_MAJOR >= 6 && ROCKSDB_MINOR >= 22)
+ virtual DeleterFn GetDeleter(Handle* handle) const override;
+#endif
+ virtual void DisownData() override = 0;
+#if (ROCKSDB_MAJOR >= 6 && ROCKSDB_MINOR >= 22)
+ virtual void ApplyToAllEntries(
+ const std::function<void(const rocksdb::Slice& key, void* value, size_t charge,
+ DeleterFn deleter)>& callback,
+ const ApplyToAllEntriesOptions& opts) override;
+#else
virtual void ApplyToAllCacheEntries(void (*callback)(void*, size_t),
bool thread_safe) override;
+#endif
virtual void EraseUnRefEntries() override;
virtual std::string GetPrintableOptions() const override;
+ virtual CacheShard* GetShard(int shard) = 0;
+ virtual const CacheShard* GetShard(int shard) const = 0;
+ virtual uint32_t GetHash(Handle* handle) const = 0;
int GetNumShardBits() const { return num_shard_bits_; }
@@ -120,7 +136,7 @@ class ShardedCache : public rocksdb::Cache, public PriorityCache::PriCache {
// return Hash(s.data(), s.size(), 0);
}
- uint32_t Shard(uint32_t hash) {
+ uint32_t Shard(uint32_t hash) const {
// Note, hash >> 32 yields hash in gcc, not the zero we expect!
return (num_shard_bits_ > 0) ? (hash >> (32 - num_shard_bits_)) : 0;
}
+63
View File
@@ -0,0 +1,63 @@
--- ceph-16.2.7/src/include/buffer.h.orig 2022-01-17 12:17:19.193356237 -0500
+++ ceph-16.2.7/src/include/buffer.h 2022-01-17 12:17:58.599639592 -0500
@@ -38,6 +38,7 @@
# include <sys/mman.h>
#endif
+#include <memory>
#include <iosfwd>
#include <iomanip>
#include <list>
--- ceph-16.2.7/src/common/LogEntry.cc.orig 2022-01-17 13:52:10.799134159 -0500
+++ ceph-16.2.7/src/common/LogEntry.cc 2022-01-17 13:52:47.244469274 -0500
@@ -183,7 +183,7 @@
return "crit";
default:
ceph_abort();
- return 0;
+ return "";
}
}
--- ceph-16.2.7/src/test/librados/tier_cxx.cc.orig 2022-01-19 09:30:47.209459506 -0500
+++ ceph-16.2.7/src/test/librados/tier_cxx.cc 2022-01-19 10:02:47.783240298 -0500
@@ -114,7 +114,7 @@
#include "rgw/rgw_common.h"
void check_fp_oid_refcount(librados::IoCtx& ioctx, std::string foid, uint64_t count,
- std::string fp_algo = NULL)
+ std::string fp_algo = "")
{
bufferlist t;
int size = foid.length();
@@ -142,7 +142,7 @@
ASSERT_LE(count, refs.count());
}
-string get_fp_oid(string oid, std::string fp_algo = NULL)
+string get_fp_oid(string oid, std::string fp_algo = "")
{
if (fp_algo == "sha1") {
unsigned char fingerprint[CEPH_CRYPTO_SHA1_DIGESTSIZE + 1];
--- ceph-16.2.7/src/test/test_trans.cc.orig 2022-01-19 13:24:33.460008897 -0500
+++ ceph-16.2.7/src/test/test_trans.cc 2022-01-19 13:24:58.211554005 -0500
@@ -51,7 +51,7 @@
cout << "#dev " << filename << std::endl;
cout << "#mb " << mb << std::endl;
- ObjectStore *fs = new FileStore(cct.get(), filename, NULL);
+ ObjectStore *fs = new FileStore(cct.get(), filename, "");
if (fs->mount() < 0) {
cout << "mount failed" << std::endl;
return -1;
--- ceph-16.2.7/src/s3select/include/s3select_functions.h.orig 2022-01-19 15:06:45.312783565 -0500
+++ ceph-16.2.7/src/s3select/include/s3select_functions.h 2022-01-19 15:08:17.270087590 -0500
@@ -142,7 +142,7 @@
virtual std::string print(int ident)
{
- return std::string(0);
+ return std::string("");
}
void push_argument(base_statement* arg)
@@ -1,19 +0,0 @@
--- ceph-18.0.0-3078-gc4847bf8/src/rgw/driver/dbstore/CMakeLists.txt.orig 2023-05-10 08:23:50.000000000 -0400
+++ ceph-18.0.0-3078-gc4847bf8/src/rgw/driver/dbstore/CMakeLists.txt 2023-05-11 08:21:13.794152904 -0400
@@ -24,7 +24,7 @@
dbstore_mgr.cc
)
-add_library(dbstore_lib ${dbstore_srcs})
+add_library(dbstore_lib STATIC ${dbstore_srcs})
target_include_directories(dbstore_lib
PUBLIC "${CMAKE_SOURCE_DIR}/src/rgw"
PUBLIC "${CMAKE_SOURCE_DIR}/src/rgw/store/rados"
@@ -49,6 +49,7 @@
# add pthread library
set (CMAKE_LINK_LIBRARIES ${CMAKE_LINK_LIBRARIES} pthread)
+set (CMAKE_LINK_LIBRARIES ${CMAKE_LINK_LIBRARIES} global)
find_package(gtest QUIET)
if(WITH_TESTS)
+12
View File
@@ -0,0 +1,12 @@
--- ceph-16.2.11/src/test/CMakeLists.txt.orig 2023-01-27 09:08:53.899536043 -0500
+++ ceph-16.2.11/src/test/CMakeLists.txt 2023-01-27 09:09:28.245931182 -0500
@@ -83,6 +83,9 @@
if(WITH_RADOSGW_KAFKA_ENDPOINT)
list(APPEND rgw_libs kafka_stub)
endif()
+ if(WITH_RADOSGW_LUA_PACKAGES)
+ list(APPEND rgw_libs Boost::filesystem)
+ endif()
add_subdirectory(rgw)
endif(WITH_RADOSGW)
if(WITH_RBD AND NOT WIN32)
@@ -0,0 +1,10 @@
--- ceph-17.2.0-359-gb2fe9ec8/cmake/modules/CheckCxxAtomic.cmake.orig 2022-06-03 08:45:32.341075140 -0400
+++ ceph-17.2.0-359-gb2fe9ec8/cmake/modules/CheckCxxAtomic.cmake 2022-06-03 08:46:47.195775813 -0400
@@ -21,6 +21,7 @@
// We specifically test access via an otherwise unknown pointer here
// to ensure we get the most complex case. If this access can be
// done without libatomic, then all accesses can be done.
+bool atomic16(std::atomic<unsigned __int128> *ptr) __attribute__ ((used));
bool atomic16(std::atomic<unsigned __int128> *ptr)
{
return *ptr != 0;
-42
View File
@@ -1,42 +0,0 @@
--- ceph-18.1.2/src/common/subsys_types.h.orig 2023-06-27 15:59:59.000000000 -0400
+++ ceph-18.1.2/src/common/subsys_types.h 2023-07-04 19:36:55.941238973 -0400
@@ -54,7 +54,7 @@
#undef DEFAULT_SUBSYS
}
-constexpr static std::uint8_t
+constexpr static uint8_t
ceph_subsys_get_max_default_level(const std::size_t subidx) {
const auto item = ceph_subsys_get_as_array()[subidx];
return std::max(item.log_level, item.gather_level);
--- ceph-18.1.2/src/msg/async/crypto_onwire.h.orig 2023-06-27 15:59:59.000000000 -0400
+++ ceph-18.1.2/src/msg/async/crypto_onwire.h 2023-07-04 19:36:55.957238704 -0400
@@ -95,7 +95,7 @@
// Transmitter can append extra bytes of ciphertext at the -final step.
// This method return how much was added, and thus let client translate
// plaintext size into ciphertext size to grab from wire.
- virtual std::uint32_t get_extra_size_at_final() = 0;
+ virtual uint32_t get_extra_size_at_final() = 0;
// Instance of RxHandler must be reset before doing any decrypt-update
// step. This applies also to situation when decrypt-final was already
--- ceph-18.1.2/src/rocksdb/table/block_based/data_block_hash_index.h.orig 2023-05-24 15:55:23.000000000 -0400
+++ ceph-18.1.2/src/rocksdb/table/block_based/data_block_hash_index.h 2023-07-04 19:36:55.971238469 -0400
@@ -8,6 +8,7 @@
#include <cstdint>
#include <string>
#include <vector>
+#include <cstdint>
#include "rocksdb/slice.h"
--- ceph-18.1.2/src/rocksdb/util/string_util.h.orig 2023-05-24 15:55:23.000000000 -0400
+++ ceph-18.1.2/src/rocksdb/util/string_util.h 2023-07-04 19:36:55.991238133 -0400
@@ -11,6 +11,7 @@
#include <string>
#include <unordered_map>
#include <vector>
+#include <cstdint>
#include "rocksdb/rocksdb_namespace.h"
-17
View File
@@ -1,17 +0,0 @@
--- ceph-18.0.0-2726-g7cea3740/src/rgw/rgw_amqp.cc.orig 2023-03-14 18:22:35.636864260 -0400
+++ ceph-18.0.0-2726-g7cea3740/src/rgw/rgw_amqp.cc 2023-03-14 18:24:36.362756771 -0400
@@ -2,10 +2,10 @@
// vim: ts=8 sw=2 smarttab ft=cpp
#include "rgw_amqp.h"
-#include <amqp.h>
-#include <amqp_ssl_socket.h>
-#include <amqp_tcp_socket.h>
-#include <amqp_framing.h>
+#include <rabbitmq-c/amqp.h>
+#include <rabbitmq-c/ssl_socket.h>
+#include <rabbitmq-c/tcp_socket.h>
+#include <rabbitmq-c/framing.h>
#include "include/ceph_assert.h"
#include <sstream>
#include <cstring>
-24
View File
@@ -1,24 +0,0 @@
--- ceph-18.0.0-2950-g1c931bc4/cmake/modules/BuildBoost.cmake.orig 2023-04-28 18:30:19.133064577 -0400
+++ ceph-18.0.0-2950-g1c931bc4/cmake/modules/BuildBoost.cmake 2023-04-28 18:31:55.290354383 -0400
@@ -104,12 +104,21 @@
set(user_config ${CMAKE_BINARY_DIR}/user-config.jam)
# edit the user-config.jam so b2 will be able to use the specified
# toolset and python
+if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64")
+ file(WRITE ${user_config}
+ "using ${toolset}"
+ " : "
+ " : ${CMAKE_CXX_COMPILER}"
+ " : <compileflags>-fPIC <compileflags>-w <compileflags>-fcf-protection <compileflags>-Wno-everything"
+ " ;\n")
+else()
file(WRITE ${user_config}
"using ${toolset}"
" : "
" : ${CMAKE_CXX_COMPILER}"
" : <compileflags>-fPIC <compileflags>-w <compileflags>-Wno-everything"
" ;\n")
+endif()
if(with_python_version)
find_package(Python3 ${with_python_version} QUIET REQUIRED
COMPONENTS Development)
-61
View File
@@ -1,61 +0,0 @@
--- ceph-17.2.6/src/boost/libs/context/src/asm/make_x86_64_sysv_elf_gas.S.orig 2023-04-30 14:25:35.009605033 -0400
+++ ceph-17.2.6/src/boost/libs/context/src/asm/make_x86_64_sysv_elf_gas.S 2023-04-30 14:28:32.239465067 -0400
@@ -80,3 +80,18 @@
/* Mark that we don't need executable stack. */
.section .note.GNU-stack,"",%progbits
+
+.section .note.gnu.property
+.align=8
+
+ .byte 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00
+ .byte 0x05, 0x00, 0x00, 0x00, 0x47, 0x4E, 0x55, 0x00
+ .byte 0x00, 0x00, 0x00, 0xC0, 0x04, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x01, 0x00, 0x00, 0xC0, 0x04, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00
+ .byte 0x05, 0x00, 0x00, 0x00, 0x47, 0x4E, 0x55, 0x00
+ .byte 0x02, 0x00, 0x00, 0xC0, 0x04, 0x00, 0x00, 0x00
+ .byte 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+
--- ceph-17.2.6/src/boost/libs/context/src/asm/jump_x86_64_sysv_elf_gas.S.orig 2023-04-30 14:25:35.008605050 -0400
+++ ceph-17.2.6/src/boost/libs/context/src/asm/jump_x86_64_sysv_elf_gas.S 2023-04-30 14:27:50.145210847 -0400
@@ -89,3 +89,17 @@
/* Mark that we don't need executable stack. */
.section .note.GNU-stack,"",%progbits
+
+.section .note.gnu.property
+.align=8
+
+ .byte 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00
+ .byte 0x05, 0x00, 0x00, 0x00, 0x47, 0x4E, 0x55, 0x00
+ .byte 0x00, 0x00, 0x00, 0xC0, 0x04, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x01, 0x00, 0x00, 0xC0, 0x04, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00
+ .byte 0x05, 0x00, 0x00, 0x00, 0x47, 0x4E, 0x55, 0x00
+ .byte 0x02, 0x00, 0x00, 0xC0, 0x04, 0x00, 0x00, 0x00
+ .byte 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
--- ceph-17.2.6/src/boost/libs/context/src/asm/ontop_x86_64_sysv_elf_gas.S.orig 2023-04-30 14:25:35.009605033 -0400
+++ ceph-17.2.6/src/boost/libs/context/src/asm/ontop_x86_64_sysv_elf_gas.S 2023-04-30 14:29:30.402434597 -0400
@@ -92,3 +92,17 @@
/* Mark that we don't need executable stack. */
.section .note.GNU-stack,"",%progbits
+
+.section .note.gnu.property
+.align=8
+
+ .byte 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00
+ .byte 0x05, 0x00, 0x00, 0x00, 0x47, 0x4E, 0x55, 0x00
+ .byte 0x00, 0x00, 0x00, 0xC0, 0x04, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x01, 0x00, 0x00, 0xC0, 0x04, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00
+ .byte 0x05, 0x00, 0x00, 0x00, 0x47, 0x4E, 0x55, 0x00
+ .byte 0x02, 0x00, 0x00, 0xC0, 0x04, 0x00, 0x00, 0x00
+ .byte 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-24
View File
@@ -1,24 +0,0 @@
--- ceph-18.1.2/src/pybind/rbd/rbd.pyx.orig 2023-07-21 13:30:08.156825317 -0400
+++ ceph-18.1.2/src/pybind/rbd/rbd.pyx 2023-07-24 09:09:27.930137117 -0400
@@ -371,10 +371,10 @@
cdef rados_ioctx_t convert_ioctx(rados.Ioctx ioctx) except? NULL:
return <rados_ioctx_t>ioctx.io
-cdef int progress_callback(uint64_t offset, uint64_t total, void* ptr) with gil:
+cdef int progress_callback(uint64_t offset, uint64_t total, void* ptr) noexcept with gil:
return (<object>ptr)(offset, total)
-cdef int no_op_progress_callback(uint64_t offset, uint64_t total, void* ptr):
+cdef int no_op_progress_callback(uint64_t offset, uint64_t total, void* ptr) noexcept:
return 0
def cstr(val, name, encoding="utf-8", opt=False):
@@ -426,7 +426,7 @@
cdef class Completion
-cdef void __aio_complete_cb(rbd_completion_t completion, void *args) with gil:
+cdef void __aio_complete_cb(rbd_completion_t completion, void *args) noexcept with gil:
"""
Callback to oncomplete() for asynchronous operations
"""
-18
View File
@@ -1,18 +0,0 @@
--- ceph/src/CMakeLists.txt.orig 2023-11-01 11:53:53.618167190 -0400
+++ ceph/src/CMakeLists.txt 2023-11-01 13:52:51.292643490 -0400
@@ -625,6 +625,7 @@
add_subdirectory(perfglue)
add_library(rados_snap_set_diff_obj OBJECT librados/snap_set_diff.cc)
+add_dependencies(rados_snap_set_diff_obj legacy-option-headers)
option(WITH_LIBRADOSSTRIPER "build with libradosstriper support" ON)
@@ -881,6 +882,7 @@
add_library(krbd STATIC krbd.cc
$<TARGET_OBJECTS:parse_secret_objs>)
target_link_libraries(krbd keyutils::keyutils)
+ add_dependencies(krbd legacy-option-headers)
endif()
add_subdirectory(librbd)
if(WITH_FUSE)
-41
View File
@@ -1,41 +0,0 @@
From f5d3e9146d9ceb12858bc94d60090bd851b1c088 Mon Sep 17 00:00:00 2001
From: Adam Emerson <aemerson@redhat.com>
Date: Wed, 20 Dec 2023 13:51:21 -0500
Subject: [PATCH] test/neorados: Use two fewer GTest internals
To get coroutine tests working, I used some internals. Two of these
are no longer available in newer versions. Since they can be
implemented with regular old C++ features, use those.
This fixes an FTBFS on Fedora Rawhide introduced in
`35231f7251ed70d8d817ee7e727d9763669d101f`.
Signed-off-by: Adam Emerson <aemerson@redhat.com>
---
src/test/neorados/common_tests.h | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/src/test/neorados/common_tests.h b/src/test/neorados/common_tests.h
index 9610f08f643f3..396432e417e84 100644
--- a/src/test/neorados/common_tests.h
+++ b/src/test/neorados/common_tests.h
@@ -391,10 +391,14 @@ class NeoRadosECTest : public NeoRadosTestBase {
public: \
GTEST_TEST_CLASS_NAME_(test_suite_name, test_name)() = default; \
~GTEST_TEST_CLASS_NAME_(test_suite_name, test_name)() override = default; \
- GTEST_DISALLOW_COPY_AND_ASSIGN_(GTEST_TEST_CLASS_NAME_(test_suite_name, \
- test_name)); \
- GTEST_DISALLOW_MOVE_AND_ASSIGN_(GTEST_TEST_CLASS_NAME_(test_suite_name, \
- test_name)); \
+ GTEST_TEST_CLASS_NAME_(test_suite_name, test_name)( \
+ const GTEST_TEST_CLASS_NAME_(test_suite_name, test_name)&) = delete; \
+ GTEST_TEST_CLASS_NAME_(test_suite_name, test_name)& operator =( \
+ const GTEST_TEST_CLASS_NAME_(test_suite_name, test_name)&) = delete; \
+ GTEST_TEST_CLASS_NAME_(test_suite_name, test_name)( \
+ GTEST_TEST_CLASS_NAME_(test_suite_name, test_name)&&) = delete; \
+ GTEST_TEST_CLASS_NAME_(test_suite_name, test_name)& operator =( \
+ GTEST_TEST_CLASS_NAME_(test_suite_name, test_name)&&) = delete; \
\
private: \
boost::asio::awaitable<void> CoTestBody() override; \
-19
View File
@@ -1,19 +0,0 @@
--- ceph-18.2.3/src/mgr/PyModule.cc.orig 2024-06-06 16:31:10.340731851 -0400
+++ ceph-18.2.3/src/mgr/PyModule.cc 2024-06-07 12:58:49.913571410 -0400
@@ -342,6 +342,16 @@
return ceph_module;
}
+// FIXME
+// Removed in Python 3.13 API, but kept for the stable ABI
+#ifdef __cplusplus
+extern "C" {
+#endif
+PyAPI_FUNC(void) PySys_SetPath(const wchar_t *);
+#ifdef __cplusplus
+}
+#endif
+
int PyModule::load(PyThreadState *pMainThreadState)
{
ceph_assert(pMainThreadState != nullptr);
-15
View File
@@ -1,15 +0,0 @@
--- ceph-19.1.0/src/common/crc32c_ppc_asm.S.orig 2024-07-10 10:55:06.255480790 -0400
+++ ceph-19.1.0/src/common/crc32c_ppc_asm.S 2024-07-10 12:53:42.844075490 -0400
@@ -54,11 +54,8 @@
/* byte reverse permute constant */
.octa 0x0F0E0D0C0B0A09080706050403020100
-#ifdef CRC32_CONSTANTS_HEADER
-#include CRC32_CONSTANTS_HEADER
-#else
+#define __ASSEMBLY__
#include "crc32c_ppc_constants.h"
-#endif
.text
-21
View File
@@ -1,21 +0,0 @@
--- ceph-19.1.0/src/cpp_redis/CMakeLists.txt.orig 2024-07-11 15:16:22.487082035 -0400
+++ ceph-19.1.0/src/cpp_redis/CMakeLists.txt 2024-07-11 15:17:57.226534456 -0400
@@ -174,6 +174,7 @@
set_target_properties(${PROJECT} PROPERTIES COMPILE_DEFINITIONS "__CPP_REDIS_USE_CUSTOM_TCP_CLIENT=${USE_CUSTOM_TCP_CLIENT}")
endif(USE_CUSTOM_TCP_CLIENT)
+install(TARGETS ${PROJECT} DESTINATION ${CMAKE_INSTALL_LIBDIR}/ceph)
###
# examples
--- ceph-19.1.0/src/cpp_redis/tacopie/CMakeLists.txt.orig 2024-01-30 21:47:59.000000000 -0500
+++ ceph-19.1.0/src/cpp_redis/tacopie/CMakeLists.txt 2024-07-12 07:37:23.584654640 -0400
@@ -162,6 +162,8 @@
ENDIF(SELECT_TIMEOUT)
+install(TARGETS ${PROJECT} DESTINATION ${CMAKE_INSTALL_LIBDIR}/ceph)
+
###
# examples
###
@@ -1,28 +0,0 @@
--- ceph-19.1.0/src/common/crc32c_ppc_fast_zero_asm.S.orig 2024-07-26 07:18:50.733484175 -0400
+++ ceph-19.1.0/src/common/crc32c_ppc_fast_zero_asm.S 2024-07-26 07:17:48.449531183 -0400
@@ -45,8 +45,10 @@
/* unsigned int barrett_reduction(unsigned long val) */
FUNC_START(barrett_reduction)
- lis r4,.constants@ha
- la r4,.constants@l(r4)
+/* lis r4,.constants@ha */
+/* la r4,.constants@l(r4) */
+ addis r4,r4,.constants@toc@ha
+ addi r4,r4,.constants@toc@l
li r5,16
vxor v1,v1,v1 /* zero v1 */
@@ -83,8 +85,10 @@
/* unsigned int barrett_reduction_reflected(unsigned long val) */
FUNC_START(barrett_reduction_reflected)
- lis r4,.bit_reflected_constants@ha
- la r4,.bit_reflected_constants@l(r4)
+/* lis r4,.bit_reflected_constants@ha */
+/* la r4,.bit_reflected_constants@l(r4) */
+ addis r4,r4,.bit_reflected_constants@toc@ha
+ addi r4,r4,.bit_reflected_constants@toc@l
li r5,16
vxor v1,v1,v1 /* zero v1 */
-55
View File
@@ -1,55 +0,0 @@
diff --git a/src/common/openssl_opts_handler.cc b/src/common/openssl_opts_handler.cc
index 81d0c4786..d9866f197 100644
--- a/src/common/openssl_opts_handler.cc
+++ b/src/common/openssl_opts_handler.cc
@@ -16,7 +16,10 @@
#include <openssl/bio.h>
#include <openssl/conf.h>
+#include <openssl/err.h>
+#ifndef OPENSSL_NO_ENGINE
#include <openssl/engine.h>
+#endif
#include <mutex>
#include <vector>
#include <algorithm>
@@ -116,11 +119,13 @@ void load_module(const string &engine_conf)
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+#ifndef OPENSSL_NO_ENGINE
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
ENGINE_load_builtin_engines();
#pragma clang diagnostic pop
#pragma GCC diagnostic pop
+#endif
if (CONF_modules_load(
conf, nullptr,
diff --git a/src/crypto/openssl/openssl_crypto_accel.cc b/src/crypto/openssl/openssl_crypto_accel.cc
index f99844a38..4944205dd 100644
--- a/src/crypto/openssl/openssl_crypto_accel.cc
+++ b/src/crypto/openssl/openssl_crypto_accel.cc
@@ -14,7 +14,6 @@
#include "crypto/openssl/openssl_crypto_accel.h"
#include <openssl/evp.h>
-#include <openssl/engine.h>
#include "common/debug.h"
// -----------------------------------------------------------------------------
diff --git a/src/jaegertracing/opentelemetry-cpp/third_party/prometheus-cpp/3rdparty/civetweb/src/civetweb.c b/src/jaegertracing/opentelemetry-cpp/third_party/prometheus-cpp/3rdparty/civetweb/src/civetweb.c
index fea9e6f98..c7eddb20b 100644
--- a/src/jaegertracing/opentelemetry-cpp/third_party/prometheus-cpp/3rdparty/civetweb/src/civetweb.c
+++ b/src/jaegertracing/opentelemetry-cpp/third_party/prometheus-cpp/3rdparty/civetweb/src/civetweb.c
@@ -1744,7 +1744,9 @@ typedef struct SSL_CTX SSL_CTX;
#include <openssl/conf.h>
#include <openssl/crypto.h>
#include <openssl/dh.h>
+#if (OPENSSL_VERSION_NUMBER < 0x10100000L)
#include <openssl/engine.h>
+#endif
#include <openssl/err.h>
#include <openssl/opensslv.h>
#include <openssl/pem.h>
-16
View File
@@ -1,16 +0,0 @@
--- ceph-19.2.0/src/mds/CMakeLists.txt.orig 2024-12-20 17:15:47.632569537 -0500
+++ ceph-19.2.0/src/mds/CMakeLists.txt 2024-12-20 17:16:48.945481957 -0500
@@ -45,12 +45,11 @@
QuiesceDbManager.cc
QuiesceAgent.cc
MDSRankQuiesce.cc
- BoostUrlImpl.cc
${CMAKE_SOURCE_DIR}/src/common/TrackedOp.cc
${CMAKE_SOURCE_DIR}/src/common/MemoryModel.cc
${CMAKE_SOURCE_DIR}/src/osdc/Journaler.cc
${CMAKE_SOURCE_DIR}/src/mgr/MDSPerfMetricTypes.cc)
add_library(mds STATIC ${mds_srcs})
target_link_libraries(mds PRIVATE
- heap_profiler cpu_profiler osdc ${LUA_LIBRARIES})
+ boost_url heap_profiler cpu_profiler osdc ${LUA_LIBRARIES})
target_include_directories(mds PRIVATE "${LUA_INCLUDE_DIR}")
@@ -1,20 +0,0 @@
--- ceph-19.2.0/src/rocksdb/db/blob/blob_file_meta.h.orig 2025-01-16 08:16:41.762758595 -0500
+++ ceph-19.2.0/src/rocksdb/db/blob/blob_file_meta.h 2025-01-16 08:17:37.172784779 -0500
@@ -10,6 +10,7 @@
#include <memory>
#include <string>
#include <unordered_set>
+#include <cstdint>
#include "rocksdb/rocksdb_namespace.h"
--- ceph-19.2.0/src/rocksdb/include/rocksdb/trace_record.h.orig 2025-01-16 09:04:19.196962397 -0500
+++ ceph-19.2.0/src/rocksdb/include/rocksdb/trace_record.h 2025-01-16 09:04:33.885701684 -0500
@@ -8,6 +8,7 @@
#include <memory>
#include <string>
#include <vector>
+#include <cstdint>
#include "rocksdb/rocksdb_namespace.h"
#include "rocksdb/slice.h"
-257
View File
@@ -1,257 +0,0 @@
--- ceph-19.2.0/src/rgw/driver/posix/zpp_bits.h.orig 2024-09-18 12:27:51.000000000 -0400
+++ ceph-19.2.0/src/rgw/driver/posix/zpp_bits.h 2025-01-16 14:58:48.471438398 -0500
@@ -2687,8 +2687,12 @@
{
using type = std::remove_cvref_t<decltype(container)>;
using value_type = typename type::value_type;
- constexpr auto is_const = std::is_const_v<
- std::remove_reference_t<decltype(container[0])>>;
+ constexpr auto is_const =
+ std::is_const_v<std::remove_reference_t<value_type>> ||
+ requires {
+ requires std::is_const_v<
+ std::remove_reference_t<decltype(container[0])>>;
+ };
if constexpr (!std::is_void_v<SizeType> &&
(requires(type container) { container.resize(1); } ||
@@ -2827,9 +2831,7 @@
if constexpr (requires { typename type::mapped_type; }) {
using value_type = std::pair<typename type::key_type,
typename type::mapped_type>;
- std::aligned_storage_t<sizeof(value_type),
- alignof(value_type)>
- storage;
+ alignas(value_type) std::byte storage[sizeof(value_type)];
auto object = access::placement_new<value_type>(
std::addressof(storage));
@@ -2843,9 +2845,7 @@
} else {
using value_type = typename type::value_type;
- std::aligned_storage_t<sizeof(value_type),
- alignof(value_type)>
- storage;
+ alignas(value_type) std::byte storage[sizeof(value_type)];
auto object = access::placement_new<value_type>(
std::addressof(storage));
@@ -2903,8 +2903,7 @@
return result;
}
} else {
- std::aligned_storage_t<sizeof(value_type), alignof(value_type)>
- storage;
+ alignas(value_type) std::byte storage[sizeof(value_type)];
auto object =
access::placement_new<value_type>(std::addressof(storage));
@@ -2947,9 +2946,7 @@
}
return serialize_one(*std::get_if<element_type>(&variant));
} else {
- std::aligned_storage_t<sizeof(element_type),
- alignof(element_type)>
- storage;
+ alignas(element_type) std::byte storage[sizeof(element_type)];
auto object = access::placement_new<element_type>(
std::addressof(storage));
@@ -2996,8 +2993,7 @@
return self.serialize_one(
*std::get_if<Types>(&variant));
} else {
- std::aligned_storage_t<sizeof(Types), alignof(Types)>
- storage;
+ alignas(Types) std::byte storage[sizeof(Types)];
auto object = access::placement_new<Types>(
std::addressof(storage));
@@ -3008,6 +3004,7 @@
return result;
}
variant = std::move(*object);
+ return errc{};
}
}...};
@@ -3307,7 +3304,7 @@
ZPP_BITS_INLINE constexpr static auto serialize(auto & serializer,
auto & self)
{
- return serializer.template serialize_one(self.variant, self.id);
+ return serializer.serialize_one(self.variant, self.id);
}
Variant & variant;
@@ -3448,13 +3445,14 @@
}
constexpr explicit value_or_errc(error_type error) :
- m_error(std::forward<decltype(error)>(error))
+ m_error(std::forward<decltype(error)>(error)),
+ m_failure(true)
{
}
constexpr value_or_errc(value_or_errc && other) noexcept
{
- if (other.is_value()) {
+ if (other.success()) {
if constexpr (!std::is_void_v<Type>) {
if constexpr (!std::is_reference_v<Type>) {
::new (std::addressof(m_return_value))
@@ -3752,16 +3750,16 @@
requires(decltype(in.remaining_data()) & data) {
(context.*Function)(data);
}) {
- struct _
+ struct guard
{
decltype(in) archive;
decltype(in.remaining_data()) data;
- constexpr ~_()
+ constexpr ~guard()
{
archive.position() += data.size();
}
- } _{in, in.remaining_data()};
- return (context.*Function)(_.data);
+ } guard{in, in.remaining_data()};
+ return (context.*Function)(guard.data);
} else {
return (context.*Function)();
}
@@ -3776,16 +3774,16 @@
requires(decltype(in.remaining_data()) & data) {
Function(data);
}) {
- struct _
+ struct guard
{
decltype(in) archive;
decltype(in.remaining_data()) data;
- constexpr ~_()
+ constexpr ~guard()
{
archive.position() += data.size();
}
- } _{in, in.remaining_data()};
- return Function(_.data);
+ } guard{in, in.remaining_data()};
+ return Function(guard.data);
} else {
return Function();
}
@@ -5029,9 +5027,7 @@
serialize use();
};
- std::aligned_storage_t<sizeof(value_type),
- alignof(value_type)>
- storage;
+ alignas(value_type) std::byte storage[sizeof(value_type)];
auto object =
access::placement_new<value_type>(std::addressof(storage));
@@ -5111,9 +5107,7 @@
return errc{};
}
} else {
- std::aligned_storage_t<sizeof(value_type),
- alignof(value_type)>
- storage;
+ alignas(value_type) std::byte storage[sizeof(value_type)];
auto object = access::placement_new<value_type>(
std::addressof(storage));
@@ -5382,47 +5376,47 @@
};
auto align = [](auto v, auto a) { return (v + (a - 1)) / a * a; };
- auto h0 = big_endian{0x6a09e667u};
- auto h1 = big_endian{0xbb67ae85u};
- auto h2 = big_endian{0x3c6ef372u};
- auto h3 = big_endian{0xa54ff53au};
- auto h4 = big_endian{0x510e527fu};
- auto h5 = big_endian{0x9b05688cu};
- auto h6 = big_endian{0x1f83d9abu};
- auto h7 = big_endian{0x5be0cd19u};
-
- std::array k{big_endian{0x428a2f98u}, big_endian{0x71374491u},
- big_endian{0xb5c0fbcfu}, big_endian{0xe9b5dba5u},
- big_endian{0x3956c25bu}, big_endian{0x59f111f1u},
- big_endian{0x923f82a4u}, big_endian{0xab1c5ed5u},
- big_endian{0xd807aa98u}, big_endian{0x12835b01u},
- big_endian{0x243185beu}, big_endian{0x550c7dc3u},
- big_endian{0x72be5d74u}, big_endian{0x80deb1feu},
- big_endian{0x9bdc06a7u}, big_endian{0xc19bf174u},
- big_endian{0xe49b69c1u}, big_endian{0xefbe4786u},
- big_endian{0x0fc19dc6u}, big_endian{0x240ca1ccu},
- big_endian{0x2de92c6fu}, big_endian{0x4a7484aau},
- big_endian{0x5cb0a9dcu}, big_endian{0x76f988dau},
- big_endian{0x983e5152u}, big_endian{0xa831c66du},
- big_endian{0xb00327c8u}, big_endian{0xbf597fc7u},
- big_endian{0xc6e00bf3u}, big_endian{0xd5a79147u},
- big_endian{0x06ca6351u}, big_endian{0x14292967u},
- big_endian{0x27b70a85u}, big_endian{0x2e1b2138u},
- big_endian{0x4d2c6dfcu}, big_endian{0x53380d13u},
- big_endian{0x650a7354u}, big_endian{0x766a0abbu},
- big_endian{0x81c2c92eu}, big_endian{0x92722c85u},
- big_endian{0xa2bfe8a1u}, big_endian{0xa81a664bu},
- big_endian{0xc24b8b70u}, big_endian{0xc76c51a3u},
- big_endian{0xd192e819u}, big_endian{0xd6990624u},
- big_endian{0xf40e3585u}, big_endian{0x106aa070u},
- big_endian{0x19a4c116u}, big_endian{0x1e376c08u},
- big_endian{0x2748774cu}, big_endian{0x34b0bcb5u},
- big_endian{0x391c0cb3u}, big_endian{0x4ed8aa4au},
- big_endian{0x5b9cca4fu}, big_endian{0x682e6ff3u},
- big_endian{0x748f82eeu}, big_endian{0x78a5636fu},
- big_endian{0x84c87814u}, big_endian{0x8cc70208u},
- big_endian{0x90befffau}, big_endian{0xa4506cebu},
- big_endian{0xbef9a3f7u}, big_endian{0xc67178f2u}};
+ auto h0 = big_endian{std::uint32_t{0x6a09e667u}};
+ auto h1 = big_endian{std::uint32_t{0xbb67ae85u}};
+ auto h2 = big_endian{std::uint32_t{0x3c6ef372u}};
+ auto h3 = big_endian{std::uint32_t{0xa54ff53au}};
+ auto h4 = big_endian{std::uint32_t{0x510e527fu}};
+ auto h5 = big_endian{std::uint32_t{0x9b05688cu}};
+ auto h6 = big_endian{std::uint32_t{0x1f83d9abu}};
+ auto h7 = big_endian{std::uint32_t{0x5be0cd19u}};
+
+ std::array k{big_endian{std::uint32_t{0x428a2f98u}}, big_endian{std::uint32_t{0x71374491u}},
+ big_endian{std::uint32_t{0xb5c0fbcfu}}, big_endian{std::uint32_t{0xe9b5dba5u}},
+ big_endian{std::uint32_t{0x3956c25bu}}, big_endian{std::uint32_t{0x59f111f1u}},
+ big_endian{std::uint32_t{0x923f82a4u}}, big_endian{std::uint32_t{0xab1c5ed5u}},
+ big_endian{std::uint32_t{0xd807aa98u}}, big_endian{std::uint32_t{0x12835b01u}},
+ big_endian{std::uint32_t{0x243185beu}}, big_endian{std::uint32_t{0x550c7dc3u}},
+ big_endian{std::uint32_t{0x72be5d74u}}, big_endian{std::uint32_t{0x80deb1feu}},
+ big_endian{std::uint32_t{0x9bdc06a7u}}, big_endian{std::uint32_t{0xc19bf174u}},
+ big_endian{std::uint32_t{0xe49b69c1u}}, big_endian{std::uint32_t{0xefbe4786u}},
+ big_endian{std::uint32_t{0x0fc19dc6u}}, big_endian{std::uint32_t{0x240ca1ccu}},
+ big_endian{std::uint32_t{0x2de92c6fu}}, big_endian{std::uint32_t{0x4a7484aau}},
+ big_endian{std::uint32_t{0x5cb0a9dcu}}, big_endian{std::uint32_t{0x76f988dau}},
+ big_endian{std::uint32_t{0x983e5152u}}, big_endian{std::uint32_t{0xa831c66du}},
+ big_endian{std::uint32_t{0xb00327c8u}}, big_endian{std::uint32_t{0xbf597fc7u}},
+ big_endian{std::uint32_t{0xc6e00bf3u}}, big_endian{std::uint32_t{0xd5a79147u}},
+ big_endian{std::uint32_t{0x06ca6351u}}, big_endian{std::uint32_t{0x14292967u}},
+ big_endian{std::uint32_t{0x27b70a85u}}, big_endian{std::uint32_t{0x2e1b2138u}},
+ big_endian{std::uint32_t{0x4d2c6dfcu}}, big_endian{std::uint32_t{0x53380d13u}},
+ big_endian{std::uint32_t{0x650a7354u}}, big_endian{std::uint32_t{0x766a0abbu}},
+ big_endian{std::uint32_t{0x81c2c92eu}}, big_endian{std::uint32_t{0x92722c85u}},
+ big_endian{std::uint32_t{0xa2bfe8a1u}}, big_endian{std::uint32_t{0xa81a664bu}},
+ big_endian{std::uint32_t{0xc24b8b70u}}, big_endian{std::uint32_t{0xc76c51a3u}},
+ big_endian{std::uint32_t{0xd192e819u}}, big_endian{std::uint32_t{0xd6990624u}},
+ big_endian{std::uint32_t{0xf40e3585u}}, big_endian{std::uint32_t{0x106aa070u}},
+ big_endian{std::uint32_t{0x19a4c116u}}, big_endian{std::uint32_t{0x1e376c08u}},
+ big_endian{std::uint32_t{0x2748774cu}}, big_endian{std::uint32_t{0x34b0bcb5u}},
+ big_endian{std::uint32_t{0x391c0cb3u}}, big_endian{std::uint32_t{0x4ed8aa4au}},
+ big_endian{std::uint32_t{0x5b9cca4fu}}, big_endian{std::uint32_t{0x682e6ff3u}},
+ big_endian{std::uint32_t{0x748f82eeu}}, big_endian{std::uint32_t{0x78a5636fu}},
+ big_endian{std::uint32_t{0x84c87814u}}, big_endian{std::uint32_t{0x8cc70208u}},
+ big_endian{std::uint32_t{0x90befffau}}, big_endian{std::uint32_t{0xa4506cebu}},
+ big_endian{std::uint32_t{0xbef9a3f7u}}, big_endian{std::uint32_t{0xc67178f2u}}};
constexpr auto original_message = to_bytes<Object>();
constexpr auto chunk_size = 512 / CHAR_BIT;
-42
View File
@@ -1,42 +0,0 @@
--- ceph-19.2.0/src/googletest/googletest/CMakeLists.txt.orig 2025-01-23 07:43:33.314970694 -0500
+++ ceph-19.2.0/src/googletest/googletest/CMakeLists.txt 2025-01-23 07:44:13.529250429 -0500
@@ -63,6 +63,8 @@
set_up_hermetic_build()
endif()
+option(BUILD_SHARED_LIBS "Build shared libraries (DLLs)." OFF)
+
# These commands only run if this is the main project
if(CMAKE_PROJECT_NAME STREQUAL "gtest" OR CMAKE_PROJECT_NAME STREQUAL "googletest-distribution")
@@ -126,9 +128,9 @@
# are used for other targets, to ensure that gtest can be compiled by a user
# aggressive about warnings.
cxx_library(gtest "${cxx_strict}" src/gtest-all.cc)
-set_target_properties(gtest PROPERTIES VERSION ${GOOGLETEST_VERSION})
+#set_target_properties(gtest PROPERTIES VERSION ${GOOGLETEST_VERSION})
cxx_library(gtest_main "${cxx_strict}" src/gtest_main.cc)
-set_target_properties(gtest_main PROPERTIES VERSION ${GOOGLETEST_VERSION})
+#set_target_properties(gtest_main PROPERTIES VERSION ${GOOGLETEST_VERSION})
# If the CMake version supports it, attach header directory information
# to the targets for when we are part of a parent build (ie being pulled
# in via add_subdirectory() rather than being a standalone build).
--- ceph-19.2.0/src/googletest/googlemock/CMakeLists.txt.orig 2025-01-23 07:40:52.399853240 -0500
+++ ceph-19.2.0/src/googletest/googlemock/CMakeLists.txt 2025-01-23 07:43:18.466236642 -0500
@@ -54,6 +54,7 @@
# if they are the same (the default).
add_subdirectory("${gtest_dir}" "${gmock_BINARY_DIR}/${gtest_dir}")
+option(BUILD_SHARED_LIBS "Build shared libraries (DLLs)." OFF)
# These commands only run if this is the main project
if(CMAKE_PROJECT_NAME STREQUAL "gmock" OR CMAKE_PROJECT_NAME STREQUAL "googletest-distribution")
@@ -100,7 +101,7 @@
else()
cxx_library(gmock "${cxx_strict}" src/gmock-all.cc)
target_link_libraries(gmock PUBLIC gtest)
- set_target_properties(gmock PROPERTIES VERSION ${GOOGLETEST_VERSION})
+ # set_target_properties(gmock PROPERTIES VERSION ${GOOGLETEST_VERSION})
cxx_library(gmock_main "${cxx_strict}" src/gmock_main.cc)
target_link_libraries(gmock_main PUBLIC gmock)
set_target_properties(gmock_main PROPERTIES VERSION ${GOOGLETEST_VERSION})
-11
View File
@@ -1,11 +0,0 @@
--- ceph-19.2.0/src/tracing/CMakeLists.txt.orig 2025-01-23 17:51:43.874162594 -0500
+++ ceph-19.2.0/src/tracing/CMakeLists.txt 2025-01-23 17:54:21.877186735 -0500
@@ -6,6 +6,8 @@
set(header_dir ${working_dir}/tracing)
file(MAKE_DIRECTORY ${header_dir})
+set(CMAKE_C99_EXTENSION_COMPILE_OPTION "-std=gnu23")
+
add_custom_target(tracepoint_libraries)
file(GLOB tps "*.tp")
@@ -1,30 +0,0 @@
--- ceph-19.2.0/src/test/neorados/common_tests.h.orig 2024-09-18 12:27:51.000000000 -0400
+++ ceph-19.2.0/src/test/neorados/common_tests.h 2025-01-26 19:31:32.545762972 -0500
@@ -47,6 +47,18 @@
#include "gtest/gtest.h"
+#if !defined(GTEST_DISALLOW_COPY_AND_ASSIGN_)
+#define GTEST_DISALLOW_COPY_AND_ASSIGN_(type) \
+ type(type const&) = delete; \
+ type& operator=(type const&) = delete
+#endif
+
+#if !defined(GTEST_DISALLOW_MOVE_AND_ASSIGN_)
+#define GTEST_DISALLOW_MOVE_AND_ASSIGN_(type) \
+ type(type&&) noexcept = delete; \
+ type& operator=(type&&) noexcept = delete
+#endif
+
/// \file test/neorados/common_tests.h
///
/// \brief Tools for testing neorados code
@@ -398,7 +410,7 @@
\
private: \
boost::asio::awaitable<void> CoTestBody() override; \
- static ::testing::TestInfo *const test_info_ GTEST_ATTRIBUTE_UNUSED_; \
+ static ::testing::TestInfo *const test_info_ __attribute__((unused)); \
}; \
\
::testing::TestInfo *const GTEST_TEST_CLASS_NAME_(test_suite_name, \
@@ -1,37 +0,0 @@
From 8c78a22d2cf69892570f635735d9735169b64a75 Mon Sep 17 00:00:00 2001
From: Peter Sabaini <peter.sabaini@canonical.com>
Date: Wed, 11 Sep 2024 16:56:50 +0200
Subject: [PATCH] ceph-volume: fix importlib.metadata compat
The importlib.metadata library removed older shims in releases >5.0.0
where EntryPoints objects use .select() instead of dict-like access.
Fixes: https://tracker.ceph.com/issues/68032
Signed-off-by: Peter Sabaini <peter.sabaini@canonical.com>
---
src/ceph-volume/ceph_volume/main.py | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/src/ceph-volume/ceph_volume/main.py b/src/ceph-volume/ceph_volume/main.py
index f8eca65ec497c..4f27f429e89e2 100644
--- a/src/ceph-volume/ceph_volume/main.py
+++ b/src/ceph-volume/ceph_volume/main.py
@@ -11,8 +11,16 @@
from importlib.metadata import entry_points
def get_entry_points(group: str): # type: ignore
- return entry_points().get(group, []) # type: ignore
+ eps = entry_points()
+ if hasattr(eps, 'select'):
+ # New importlib.metadata uses .select()
+ return eps.select(group=group)
+ else:
+ # Fallback to older EntryPoints that returns dicts
+ return eps.get(group, []) # type: ignore
+
except ImportError:
+ # Fallback to `pkg_resources` for older versions
from pkg_resources import iter_entry_points as entry_points # type: ignore
def get_entry_points(group: str): # type: ignore
@@ -1,53 +0,0 @@
From 5924df771f850c249396a37a62f97ac242bf2f96 Mon Sep 17 00:00:00 2001
From: Hector Martin <marcan@marcan.st>
Date: Wed, 20 Aug 2025 13:34:08 +0900
Subject: [PATCH 1/2] mgr/dashboard: Make saml2 robust against module load
errors
Loading saml2 can fail due to issues with the xmlsec package (possibly
subinterpreter related):
File "/usr/share/ceph/mgr/dashboard/controllers/saml2.py", line 6, in <module>
from onelogin.saml2.auth import OneLogin_Saml2_Auth
File "/lib/python3.13/site-packages/onelogin/saml2/auth.py", line 12, in <module>
import xmlsec
xmlsec.Error: (100, 'lxml & xmlsec libxml2 library version mismatch')
Instead of taking down the entire dashboard module, treat this exception
like a missing saml2 package.
Signed-off-by: Hector Martin <marcan@marcan.st>
---
src/pybind/mgr/dashboard/controllers/saml2.py | 2 +-
src/pybind/mgr/dashboard/services/sso.py | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/pybind/mgr/dashboard/controllers/saml2.py b/src/pybind/mgr/dashboard/controllers/saml2.py
index c11b18a27bc7..e859f558cdc4 100644
--- a/src/pybind/mgr/dashboard/controllers/saml2.py
+++ b/src/pybind/mgr/dashboard/controllers/saml2.py
@@ -8,7 +8,7 @@ try:
from onelogin.saml2.settings import OneLogin_Saml2_Settings
python_saml_imported = True
-except ImportError:
+except Exception:
python_saml_imported = False
from .. import mgr
diff --git a/src/pybind/mgr/dashboard/services/sso.py b/src/pybind/mgr/dashboard/services/sso.py
index 2290e6ea3e15..38910ca4aa34 100644
--- a/src/pybind/mgr/dashboard/services/sso.py
+++ b/src/pybind/mgr/dashboard/services/sso.py
@@ -20,7 +20,7 @@ try:
from onelogin.saml2.settings import OneLogin_Saml2_Settings as Saml2Settings
python_saml_imported = True
-except ImportError:
+except Exception:
python_saml_imported = False
--
2.50.1
@@ -1,44 +0,0 @@
From 76af91b516bb31ae0a79f55f315bef2c2105a06e Mon Sep 17 00:00:00 2001
From: Nizamudeen A <nia@redhat.com>
Date: Thu, 26 Jun 2025 12:55:22 +0530
Subject: [PATCH 2/2] mgr/dashboard: catch protobuf error due to mismatch in
version
Signed-off-by: Nizamudeen A <nia@redhat.com>
(cherry picked from commit acb0f19c4a50b2ea68f328a61a14a2da06be298b)
Conflicts:
src/pybind/mgr/dashboard/services/nvmeof_client.py
- only kept relavant portion applicable for squid
---
src/pybind/mgr/dashboard/services/nvmeof_client.py | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/src/pybind/mgr/dashboard/services/nvmeof_client.py b/src/pybind/mgr/dashboard/services/nvmeof_client.py
index e0ea6d1e48b3..be2b5edbaa52 100644
--- a/src/pybind/mgr/dashboard/services/nvmeof_client.py
+++ b/src/pybind/mgr/dashboard/services/nvmeof_client.py
@@ -1,3 +1,5 @@
+# pylint: disable=unexpected-keyword-arg
+
import functools
import logging
from collections.abc import Iterable
@@ -9,6 +11,14 @@ from .nvmeof_conf import NvmeofGatewaysConfig
logger = logging.getLogger("nvmeof_client")
try:
+ # if the protobuf version is newer than what we generated with
+ # proto file import will fail (because of differences between what's
+ # available in centos and ubuntu).
+ # this "hack" should be removed once we update both the
+ # distros; centos and ubuntu.
+ import os
+ os.environ["PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION"] = "python"
+
import grpc # type: ignore
import grpc._channel # type: ignore
from google.protobuf.message import Message # type: ignore
--
2.50.1
@@ -1,152 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: "Max R. Carrara" <m.carrara@proxmox.com>
Date: Wed, 16 Jul 2025 13:14:39 +0200
Subject: [PATCH 58/59] pybind/mgr/restful: provide workaround for PyO3
ImportError
Move the self-signed cert generation into a separate module
inside python-common/ceph and run the module in a separate Python
process.
This provides a workaround for the ImportError thrown by PyO3 when
the `restful` module is loaded in the context of multiple Python
sub-interpreters being present. In particular, the ImportError is
thrown by the `crypto` module of the `OpenSSL` package.
Inspired by an upstream PR [0].
[0]: https://github.com/ceph/ceph/pull/62951
Signed-off-by: Max R. Carrara <m.carrara@proxmox.com>
---
src/pybind/mgr/restful/module.py | 24 +++------
src/python-common/ceph/_crypto_wrap.py | 69 ++++++++++++++++++++++++++
2 files changed, 76 insertions(+), 17 deletions(-)
create mode 100644 src/python-common/ceph/_crypto_wrap.py
diff --git a/src/pybind/mgr/restful/module.py b/src/pybind/mgr/restful/module.py
index 0f8c78e0bd8..7f93c41f1e6 100644
--- a/src/pybind/mgr/restful/module.py
+++ b/src/pybind/mgr/restful/module.py
@@ -7,6 +7,7 @@ import json
import time
import errno
import inspect
+import subprocess
import tempfile
import threading
import traceback
@@ -19,7 +20,6 @@ from . import context
from uuid import uuid4
from pecan import jsonify, make_app
-from OpenSSL import crypto
from pecan.rest import RestController
from werkzeug.serving import make_server, make_ssl_devcert
@@ -401,24 +401,14 @@ class Module(MgrModule):
def create_self_signed_cert(self):
- # create a key pair
- pkey = crypto.PKey()
- pkey.generate_key(crypto.TYPE_RSA, 2048)
-
- # create a self-signed cert
- cert = crypto.X509()
- cert.get_subject().O = "IT"
- cert.get_subject().CN = "ceph-restful"
- cert.set_serial_number(int(uuid4()))
- cert.gmtime_adj_notBefore(0)
- cert.gmtime_adj_notAfter(10*365*24*60*60)
- cert.set_issuer(cert.get_subject())
- cert.set_pubkey(pkey)
- cert.sign(pkey, 'sha512')
+ cmd = ["python3", "-m", "ceph._crypto_wrap", "create_self_signed_cert"]
+
+ response = subprocess.run(cmd, capture_output=True, check=True)
+ response_obj = json.loads(response.stdout)
return (
- crypto.dump_certificate(crypto.FILETYPE_PEM, cert),
- crypto.dump_privatekey(crypto.FILETYPE_PEM, pkey)
+ response_obj["cert"].encode("utf-8"),
+ response_obj["key"].encode("utf-8"),
)
diff --git a/src/python-common/ceph/_crypto_wrap.py b/src/python-common/ceph/_crypto_wrap.py
new file mode 100644
index 00000000000..16a19a5345e
--- /dev/null
+++ b/src/python-common/ceph/_crypto_wrap.py
@@ -0,0 +1,69 @@
+"""CLI wrapper for cryptographic functions of the :mod:`restful` module.
+
+To be called via :func:`subprocess.run()` as a workaround for
+:class:`ImportError`s related to PyO3's current lack of sub-interpreter
+support.
+
+Note:
+ Since this module is installed as part of the ``ceph`` package,
+ it should be called like so::
+
+ python3 -m ceph._crypto_wrap create_self_signed_cert
+"""
+
+import argparse
+import sys
+import json
+
+from argparse import Namespace
+from typing import Any
+from uuid import uuid4
+
+from OpenSSL import crypto
+
+
+def _respond(data: dict[str, Any]) -> None:
+ json.dump(data, sys.stdout)
+ sys.stdout.flush()
+
+
+def create_self_signed_cert(args: Namespace) -> None:
+ cert_key_pair = _create_self_signed_cert()
+ _respond(cert_key_pair)
+
+
+def _create_self_signed_cert() -> dict[str, str]:
+ # create a key pair
+ pubkey = crypto.PKey()
+ pubkey.generate_key(crypto.TYPE_RSA, 2048)
+
+ # create a self-signed cert
+ cert = crypto.X509()
+ cert.get_subject().O = "IT"
+ cert.get_subject().CN = "ceph-restful"
+ cert.set_serial_number(int(uuid4()))
+ cert.gmtime_adj_notBefore(0)
+ cert.gmtime_adj_notAfter(10 * 365 * 24 * 60 * 60)
+ cert.set_issuer(cert.get_subject())
+ cert.set_pubkey(pubkey)
+ cert.sign(pubkey, "sha512")
+
+ return {
+ "cert": crypto.dump_certificate(crypto.FILETYPE_PEM, cert).decode(),
+ "key": crypto.dump_privatekey(crypto.FILETYPE_PEM, pubkey).decode(),
+ }
+
+
+def main() -> None:
+ parser = argparse.ArgumentParser(prog="_crypto_wrap.py")
+ subparsers = parser.add_subparsers(required=True)
+
+ parser_cssc = subparsers.add_parser("create_self_signed_cert")
+ parser_cssc.set_defaults(func=create_self_signed_cert)
+
+ args = parser.parse_args()
+ args.func(args)
+
+
+if __name__ == "__main__":
+ main()
@@ -1,56 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: "Max R. Carrara" <m.carrara@proxmox.com>
Date: Wed, 16 Jul 2025 16:31:43 +0200
Subject: [PATCH 59/59] mgr: fix module import by making NOTIFY_TYPES in py
modules optional
If NOTIFY_TYPES isn't an attribute of the passed class, the Python
(sub-)interpreter raises an AttributeError that must be handled or cleared
explicitly via the Python C-API. Unfortunately, this isn't done here,
which means that the exception sticks around until handled.
This caused a call to PyModule::load_subclass_of() to fail and
incorrectly report the AttributeError as cause.
Checking whether the class has NOTIFY_TYPES as attribute in the first
place fixes this.
Note that there's an upstream PR [0] that wasn't backported that aimed
to fix this, but does so incorrectly, as the exception is still not
cleared there. The warnings regarding NOTIFY_TYPES missing also occurs
on Reef but doesn't cause any module imports to fail there. As the
affected Ceph code has stayed mostly the same between bookworm and
trixie releases, this suggests that some behavior between Python 3.11
and 3.13 likely changed.
Either way, avoiding the AttributeError altogether fixes this.
[0]: https://github.com/ceph/ceph/pull/57106
Signed-off-by: Max R. Carrara <m.carrara@proxmox.com>
---
src/mgr/PyModule.cc | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/src/mgr/PyModule.cc b/src/mgr/PyModule.cc
index 084cf3ffc1e..e6fd269dca5 100644
--- a/src/mgr/PyModule.cc
+++ b/src/mgr/PyModule.cc
@@ -513,11 +513,13 @@ int PyModule::register_options(PyObject *cls)
int PyModule::load_notify_types()
{
- PyObject *ls = PyObject_GetAttrString(pClass, "NOTIFY_TYPES");
- if (ls == nullptr) {
- derr << "Module " << get_name() << " has missing NOTIFY_TYPES member" << dendl;
- return -EINVAL;
+ if (!PyObject_HasAttrString(pClass, "NOTIFY_TYPES")) {
+ dout(10) << "Module " << get_name() << " has no NOTIFY_TYPES member" << dendl;
+ return 0;
}
+
+ PyObject *ls = PyObject_GetAttrString(pClass, "NOTIFY_TYPES");
+
if (!PyObject_TypeCheck(ls, &PyList_Type)) {
// Relatively easy mistake for human to make, e.g. defining COMMANDS
// as a {} instead of a []
+1184 -714
View File
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,13 @@
diff --git a/cmake/modules/BuildBoost.cmake b/cmake/modules/BuildBoost.cmake
index 2e92132366..3cb1e3d958 100644
--- a/cmake/modules/BuildBoost.cmake
+++ b/cmake/modules/BuildBoost.cmake
@@ -62,7 +62,7 @@ function(do_build_boost version)
else()
list(APPEND boost_features "address-model=32")
endif()
- set(BOOST_CXXFLAGS "-fPIC -w") # check on arm, etc <---XXX
+ set(BOOST_CXXFLAGS "-fPIC -w -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -ftemplate-depth-1024 -fno-new-ttp-matching -fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-free") # check on arm, etc <---XXX
list(APPEND boost_features "cxxflags=${BOOST_CXXFLAGS}")
set(boost_with_libs)
+1 -1
View File
@@ -1 +1 @@
SHA512 (ceph-19.2.3.tar.gz) = 278101d2df7bed5363b20c2b065d7a7b26252c8164511257e213ffaa58d509015558183de10bc9281bcbe4d9f85244bcac5bba4db9823e28df6a96d0b687d00a
SHA512 (ceph-16.2.13.tar.gz) = 39ec2bed1de0276f08bf93241f9fb275893041fd5f20ade75e68728107011ae5d01aed532d5afd8805951d09061a5a3d96c4311701c8897a29668f77126c19ab