[packages/ceph] - up to 19.2.0

baggins baggins at pld-linux.org
Sun Dec 22 02:24:01 CET 2024


commit 15575e11ebaaf777088fac2e6dccbd7a5a5cc2aa
Author: Jan Rękorajski <baggins at pld-linux.org>
Date:   Sun Dec 22 01:30:05 2024 +0100

    - up to 19.2.0
    
    Disabled arrow and parquet as the bundled libs are antiques and
    they're not present as PLD packages.

 boost-1.86.patch     |  94 +++++++++++++++
 boost-1.87.patch     | 320 +++++++++++++++++++++++++++++++++++++++++++++++++++
 boost1.81.patch      |  49 --------
 ceph-arrow-re2.patch |  11 --
 ceph-gcc12.patch     |  52 ---------
 ceph-gcc14-2.patch   | 253 ----------------------------------------
 ceph-glibc.patch     |  10 --
 ceph-libfmt.patch    | 184 -----------------------------
 ceph-liburing.patch  |  11 --
 ceph-qat.patch       | 139 ----------------------
 ceph.spec            |  82 ++++++-------
 types.patch          |  13 +--
 12 files changed, 449 insertions(+), 769 deletions(-)
---
diff --git a/ceph.spec b/ceph.spec
index 5de3587..7d9af30 100644
--- a/ceph.spec
+++ b/ceph.spec
@@ -17,9 +17,6 @@
 %bcond_with	angular		# Angular-based mgr/dashboard frontend (built using npm, too outdated currently)
 %bcond_without	bluefs		# BlueFS library
 %bcond_with	dpdk		# DPDK messaging
-# 15.2.x/16.2.x build fails with:
-# src/rgw/rgw_fcgi_process.cc:92:53: error: 'class rgw::sal::RGWRadosStore' has no member named 'get_new_req_id'
-%bcond_with	fcgi		# RADOS Gateway FCGI frontend
 %bcond_with	fio		# FIO engines support (16.x: downloads fio as internal subproject)
 %bcond_with	jaeger		# jaegertracing support (NFY, BR: thrift >= 0.13)
 %bcond_with	kerberos	# GSSAPI/KRB5 support
@@ -53,14 +50,14 @@
 Summary:	User space components of the Ceph file system
 Summary(pl.UTF-8):	Działające w przestrzeni użytkownika elementy systemu plików Ceph
 Name:		ceph
-Version:	18.2.4
+Version:	19.2.0
 Release:	1
 License:	LGPL v2.1 (libraries), GPL v2 (some programs)
 Group:		Base
 Source0:	http://download.ceph.com/tarballs/%{name}-%{version}.tar.gz
-# Source0-md5:	28ab44c5c5a05786ec02b25ae5300b2b
-Source1:	ceph.sysconfig
-Source3:	ceph.tmpfiles
+# Source0-md5:	876d7144df5c7061ddbd5bc5c3709a35
+Source1:	%{name}.sysconfig
+Source3:	%{name}.tmpfiles
 Patch0:		%{name}-python.patch
 Patch1:		%{name}-fio.patch
 Patch2:		%{name}-cmake-static.patch
@@ -71,19 +68,12 @@ Patch6:		types.patch
 Patch7:		use-provided-cpu-flag-values.patch
 Patch8:		ix86-no-asm.patch
 Patch9:		long-int-time_t.patch
-Patch10:	%{name}-qat.patch
-Patch11:	%{name}-liburing.patch
-Patch12:	%{name}-glibc.patch
-Patch13:	%{name}-libfmt.patch
-Patch14:	%{name}-system-rocksdb.patch
-# https://src.fedoraproject.org/rpms/ceph/blob/rawhide/f/0017-gcc-12-omnibus.patch
-Patch15:	%{name}-gcc12.patch
+Patch10:	%{name}-system-rocksdb.patch
 # https://src.fedoraproject.org/rpms/ceph/blob/rawhide/f/0020-src-arrow-cpp-cmake_modules-ThirdpartyToolchain.cmake.patch
-Patch16:	%{name}-system-xsimd.patch
-Patch17:	boost1.81.patch
-Patch18:	%{name}-gcc14.patch
-Patch19:	%{name}-gcc14-2.patch
-Patch20:	%{name}-arrow-re2.patch
+Patch11:	%{name}-system-xsimd.patch
+Patch12:	%{name}-gcc14.patch
+Patch13:	boost-1.86.patch
+Patch14:	boost-1.87.patch
 URL:		https://ceph.io/
 %{?with_qatzip:BuildRequires:	QATzip-devel}
 %{?with_babeltrace:BuildRequires:	babeltrace-devel}
@@ -100,7 +90,6 @@ BuildRequires:	dpdk-devel
 %endif
 BuildRequires:	doxygen
 BuildRequires:	expat-devel >= 1.95
-%{?with_fcgi:BuildRequires:	fcgi-devel}
 %{?with_fio:BuildRequires:	fio-devel >= 3.15}
 BuildRequires:	gdbm-devel
 %{?with_seastar:BuildRequires:	gnutls-devel >= 3.3.26}
@@ -156,12 +145,12 @@ BuildRequires:	python3-PyYAML
 BuildRequires:	python3-devel >= 1:3.6.0
 BuildRequires:	python3-modules >= 1:3.6.0
 %{?with_tests:BuildRequires:	python3-tox >= 2.9.1}
+%{?with_qat:BuildRequires:	qatlib-devel}
 BuildRequires:	rabbitmq-c-devel
 %{?with_seastar:BuildRequires:	ragel >= 6.10}
 BuildRequires:	re2-devel
 %{?with_system_rocksdb:BuildRequires:	rocksdb-devel >= 5.14}
 BuildRequires:	rpmbuild(macros) >= 2.021
-%{?with_qat:BuildRequires:	qatlib-devel}
 BuildRequires:	sed >= 4.0
 BuildRequires:	snappy-devel
 BuildRequires:	sphinx-pdg >= 4.4.0
@@ -169,8 +158,8 @@ BuildRequires:	sqlite3-devel >= 3
 # >= 0.13.0 wanted, but seems to build with 0.11.0 when jaeger is disabled
 BuildRequires:	thrift-devel
 BuildRequires:	udev-devel
-%{?with_dpdk:BuildRequires:	xorg-lib-libpciaccess-devel}
 BuildRequires:	xfsprogs-devel
+%{?with_dpdk:BuildRequires:	xorg-lib-libpciaccess-devel}
 BuildRequires:	xsimd-devel
 %{?with_seastar:BuildRequires:	yaml-cpp-devel >= 0.5.1}
 %ifarch %{x8664}
@@ -224,14 +213,13 @@ Requires:	%{name}-libs = %{version}-%{release}
 Requires:	boost-devel >= 1.79
 Requires:	curl-devel >= 7.32
 Requires:	expat-devel >= 1.95
-Requires:	fcgi-devel
-Requires:	nss-devel >= 3
 Requires:	leveldb-devel >= 1.23-2
 Requires:	libatomic_ops
 Requires:	libblkid-devel >= 2.17
 Requires:	libstdc++-devel >= 6:11
 Requires:	libuuid-devel
-%{?with_lttng:Requires:	lttng-ust-devel}
+%{?with_lttng:Requires: lttng-ust-devel}
+Requires:	nss-devel >= 3
 Requires:	openldap-devel
 Obsoletes:	ceph-static < 12
 
@@ -341,29 +329,23 @@ uruchamiania demonów.
 
 %prep
 %setup -q
-%patch0 -p1
-%patch1 -p1
-%patch2 -p1
-%patch3 -p1
-%patch4 -p1
-%patch5 -p1
-%patch6 -p1
-%patch7 -p1
-%patch8 -p1
+%patch -P 0 -p1
+%patch -P 1 -p1
+%patch -P 2 -p1
+%patch -P 3 -p1
+%patch -P 4 -p1
+%patch -P 5 -p1
+%patch -P 6 -p1
+%patch -P 7 -p1
+%patch -P 8 -p1
 %ifarch %{ix86}
-%patch9 -p1
+%patch -P 9 -p1
 %endif
-%patch10 -p1
-%patch11 -p1
-%patch12 -p1
-%patch13 -p1
-%patch14 -p1
-%patch15 -p1
-%patch16 -p1
-%patch17 -p1
-%patch18 -p1
-%patch19 -p1
-%patch20 -p1
+%patch -P 10 -p1
+%patch -P 11 -p1
+%patch -P 12 -p1
+%patch -P 13 -p1
+%patch -P 14 -p1
 
 %{__sed} -i -e '1s,/usr/bin/env bash,/bin/bash,' \
 	src/{ceph-post-file.in,rbd-replay-many,rbdmap} \
@@ -420,7 +402,8 @@ cd build
 	%{!?with_angular:-DWITH_MGR_DASHBOARD_FRONTEND=OFF} \
 	-DWITH_OCF=ON \
 	-DWITH_PYTHON3=%{py3_ver} \
-	%{?with_fcgi:-DWITH_RADOSGW_FCGI_FRONTEND=ON} \
+	-DWITH_RADOSGW_SELECT_PARQUET=OFF \
+	-DWITH_RADOSGW_ARROW_FLIGHT=OFF \
 	%{!?with_rdma:-DWITH_RDMA=OFF} \
 	-DWITH_REENTRANT_STRSIGNAL=ON \
 	%{?with_qat:-DWITH_QAT=ON} \
@@ -512,7 +495,6 @@ fi
 %{systemdunitdir}/ceph.service
 %{systemdunitdir}/ceph.target
 %{systemdunitdir}/ceph-crash.service
-%{systemdunitdir}/ceph-exporter.service
 %{systemdunitdir}/ceph-fuse.target
 %{systemdunitdir}/ceph-fuse at .service
 %{systemdunitdir}/ceph-immutable-object-cache.target
@@ -704,6 +686,7 @@ fi
 %{_mandir}/man8/rbd-replay-prep.8*
 %{_mandir}/man8/rbdmap.8*
 %{_mandir}/man8/rgw-orphan-list.8*
+%{_mandir}/man8/rgw-restore-bucket-index.8*
 
 %dir %{_localstatedir}/lib/ceph
 %dir %{_localstatedir}/lib/ceph/bootstrap-mds
@@ -726,6 +709,8 @@ fi
 %endif
 %attr(755,root,root) %{_libdir}/libcephfs.so.*.*.*
 %attr(755,root,root) %ghost %{_libdir}/libcephfs.so.2
+%attr(755,root,root) %{_libdir}/libmgr_op_tp.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libmgr_op_tp.so.1
 %attr(755,root,root) %{_libdir}/libos_tp.so.*.*.*
 %attr(755,root,root) %ghost %{_libdir}/libos_tp.so.1
 %attr(755,root,root) %{_libdir}/libosd_tp.so.*.*.*
@@ -753,6 +738,7 @@ fi
 %files devel
 %defattr(644,root,root,755)
 %attr(755,root,root) %{_libdir}/libcephfs.so
+%attr(755,root,root) %{_libdir}/libmgr_op_tp.so
 %attr(755,root,root) %{_libdir}/libos_tp.so
 %attr(755,root,root) %{_libdir}/libosd_tp.so
 %attr(755,root,root) %{_libdir}/librados.so
diff --git a/boost-1.86.patch b/boost-1.86.patch
new file mode 100644
index 0000000..b8a0949
--- /dev/null
+++ b/boost-1.86.patch
@@ -0,0 +1,94 @@
+From 01306208eac492ee0e67bff143fc32d0551a2a6f Mon Sep 17 00:00:00 2001
+From: Luc Ritchie <luc.ritchie at gmail.com>
+Date: Fri, 6 Sep 2024 19:17:53 -0400
+Subject: [PATCH] src/include/uuid.h: fix for boost 1.86.0
+
+Boost 1.86.0 includes a significant rewrite of the UUID library. The
+Changelog[^1] notes that:
+
+> u.data(), where u is of type uuid, now returns a pointer to the first
+> uint8_t of the representation (same as u.begin().) For backward
+> compatibility, data is a function object with operator(), rather than
+> a member function, which allows most existing uses of data as a
+> public member to remain valid, if no longer encouraged.
+
+I don't know enough about C++ to judge how that should have worked, but
+it leads to a compile error here. This patch uses BOOST_VERSION to
+decide whether to access .data as a member or .data() as a function.
+
+[^1]: https://www.boost.org/doc/libs/1_86_0/libs/uuid/doc/html/uuid.html#changes
+
+Signed-off-by: Luc Ritchie <luc.ritchie at gmail.com>
+---
+ src/include/uuid.h | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/src/include/uuid.h b/src/include/uuid.h
+index f6ef9878daee7..a5d63c372977a 100644
+--- a/src/include/uuid.h
++++ b/src/include/uuid.h
+@@ -60,7 +60,11 @@ struct uuid_d {
+   }
+ 
+   const char *bytes() const {
++#if BOOST_VERSION >= 108600
++    return (const char*)uuid.data();
++#else
+     return (const char*)uuid.data;
++#endif
+   }
+ 
+   void encode(::ceph::buffer::list::contiguous_appender& p) const {
+diff --git a/src/mgr/PyModule.cc b/src/mgr/PyModule.cc
+index 084cf3ffc1e..010a1177a88 100644
+--- a/src/mgr/PyModule.cc
++++ b/src/mgr/PyModule.cc
+@@ -36,6 +36,11 @@ std::string PyModule::mgr_store_prefix = "mgr/";
+ 
+ // Courtesy of http://stackoverflow.com/questions/1418015/how-to-get-python-exception-text
+ #define BOOST_BIND_GLOBAL_PLACEHOLDERS
++// Fix instances of "'BOOST_PP_ITERATION_02' was not declared in this scope; did you mean 'BOOST_PP_ITERATION_05'"
++// and related macro error bullshit that spans 300 lines of errors
++//
++// Apparently you can't include boost/python stuff _and_ have this header defined
++#undef BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+ // Boost apparently can't be bothered to fix its own usage of its own
+ // deprecated features.
+ #include <boost/python/extract.hpp>
+diff --git a/src/test/objectstore/Allocator_aging_fragmentation.cc b/src/test/objectstore/Allocator_aging_fragmentation.cc
+index 220f8841b8e..6ddfb02b1dd 100755
+--- a/src/test/objectstore/Allocator_aging_fragmentation.cc
++++ b/src/test/objectstore/Allocator_aging_fragmentation.cc
+@@ -19,6 +19,7 @@
+ #include "os/bluestore/Allocator.h"
+ 
+ #include <boost/random/uniform_int.hpp>
++#include <boost/random/mersenne_twister.hpp>
+ 
+ typedef boost::mt11213b gen_type;
+ 
+diff --git a/src/test/objectstore/Allocator_bench.cc b/src/test/objectstore/Allocator_bench.cc
+index 0d04a854e9a..5218207d2c2 100644
+--- a/src/test/objectstore/Allocator_bench.cc
++++ b/src/test/objectstore/Allocator_bench.cc
+@@ -15,6 +15,7 @@
+ #include "os/bluestore/Allocator.h"
+ 
+ #include <boost/random/uniform_int.hpp>
++#include <boost/random/mersenne_twister.hpp>
+ typedef boost::mt11213b gen_type;
+ 
+ #include "common/debug.h"
+diff --git a/src/test/objectstore/Allocator_test.cc b/src/test/objectstore/Allocator_test.cc
+index b006500153c..0edea1d4ac1 100644
+--- a/src/test/objectstore/Allocator_test.cc
++++ b/src/test/objectstore/Allocator_test.cc
+@@ -14,6 +14,8 @@
+ #include "include/Context.h"
+ #include "os/bluestore/Allocator.h"
+ 
++#include <boost/random/mersenne_twister.hpp>
++
+ using namespace std;
+ 
+ typedef boost::mt11213b gen_type;
diff --git a/boost-1.87.patch b/boost-1.87.patch
new file mode 100644
index 0000000..baf009c
--- /dev/null
+++ b/boost-1.87.patch
@@ -0,0 +1,320 @@
+From 42986304aeebea7fc0b972ae781bd14000ac1452 Mon Sep 17 00:00:00 2001
+From: Adam Emerson <aemerson at redhat.com>
+Date: Thu, 12 Dec 2024 16:11:04 -0500
+Subject: [PATCH] common/Graylog: Fix Asio resolve call
+
+Signed-off-by: Adam Emerson <aemerson at redhat.com>
+---
+ src/common/Graylog.cc | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/src/common/Graylog.cc b/src/common/Graylog.cc
+index 099acacd803b8..e9c2565df62eb 100644
+--- a/src/common/Graylog.cc
++++ b/src/common/Graylog.cc
+@@ -37,8 +37,7 @@ void Graylog::set_destination(const std::string& host, int port)
+ {
+   try {
+     boost::asio::ip::udp::resolver resolver(m_io_service);
+-    boost::asio::ip::udp::resolver::query query(host, std::to_string(port));
+-    m_endpoint = *resolver.resolve(query);
++    m_endpoint = *resolver.resolve(host, std::to_string(port)).cbegin();
+     m_log_dst_valid = true;
+   } catch (boost::system::system_error const& e) {
+     cerr << "Error resolving graylog destination: " << e.what() << std::endl;
+From 7f394d095e5620ca3fe860a539ad841affc5e31f Mon Sep 17 00:00:00 2001
+From: Adam Emerson <aemerson at redhat.com>
+Date: Fri, 13 Dec 2024 15:21:49 -0500
+Subject: [PATCH] immutable_object_cache: Asio deprecations
+
+Signed-off-by: Adam Emerson <aemerson at redhat.com>
+---
+ src/tools/immutable_object_cache/CacheClient.cc |  6 +++---
+ src/tools/immutable_object_cache/CacheClient.h  |  5 +++--
+ src/tools/immutable_object_cache/CacheServer.cc | 10 +++++-----
+ 3 files changed, 11 insertions(+), 10 deletions(-)
+
+diff --git a/src/tools/immutable_object_cache/CacheClient.cc b/src/tools/immutable_object_cache/CacheClient.cc
+index 44686529547d3..32a199dbe2102 100644
+--- a/src/tools/immutable_object_cache/CacheClient.cc
++++ b/src/tools/immutable_object_cache/CacheClient.cc
+@@ -20,7 +20,7 @@ namespace ceph {
+ namespace immutable_obj_cache {
+ 
+   CacheClient::CacheClient(const std::string& file, CephContext* ceph_ctx)
+-    : m_cct(ceph_ctx), m_io_service_work(m_io_service),
++    : m_cct(ceph_ctx), m_io_service_work(m_io_service.get_executor()),
+       m_dm_socket(m_io_service), m_ep(stream_protocol::endpoint(file)),
+       m_io_thread(nullptr), m_session_work(false), m_writing(false),
+       m_reading(false), m_sequence_id(0) {
+@@ -30,7 +30,7 @@ namespace immutable_obj_cache {
+ 
+     if (m_worker_thread_num != 0) {
+       m_worker = new boost::asio::io_context();
+-      m_worker_io_service_work = new boost::asio::io_context::work(*m_worker);
++      m_worker_io_service_work = new boost::asio::executor_work_guard<boost::asio::io_context::executor_type>(m_worker->get_executor());
+       for (uint64_t i = 0; i < m_worker_thread_num; i++) {
+         std::thread* thd = new std::thread([this](){m_worker->run();});
+         m_worker_threads.push_back(thd);
+@@ -299,7 +299,7 @@ namespace immutable_obj_cache {
+     });
+ 
+     if (m_worker_thread_num != 0) {
+-      m_worker->post([process_reply]() {
++      boost::asio::post(*m_worker, [process_reply]() {
+         process_reply->complete(true);
+       });
+     } else {
+diff --git a/src/tools/immutable_object_cache/CacheClient.h b/src/tools/immutable_object_cache/CacheClient.h
+index 7dc4aa76c1324..5122e0906b91b 100644
+--- a/src/tools/immutable_object_cache/CacheClient.h
++++ b/src/tools/immutable_object_cache/CacheClient.h
+@@ -5,6 +5,7 @@
+ #define CEPH_CACHE_CACHE_CLIENT_H
+ 
+ #include <atomic>
++#include <boost/asio/executor_work_guard.hpp>
+ #include <boost/asio/io_context.hpp>
+ #include <boost/asio/local/stream_protocol.hpp>
+ #include <boost/algorithm/string.hpp>
+@@ -58,7 +59,7 @@ class CacheClient {
+  private:
+   CephContext* m_cct;
+   boost::asio::io_context m_io_service;
+-  boost::asio::io_context::work m_io_service_work;
++  boost::asio::executor_work_guard<boost::asio::io_context::executor_type> m_io_service_work;
+   stream_protocol::socket m_dm_socket;
+   stream_protocol::endpoint m_ep;
+   std::shared_ptr<std::thread> m_io_thread;
+@@ -67,7 +68,7 @@ class CacheClient {
+   uint64_t m_worker_thread_num;
+   boost::asio::io_context* m_worker;
+   std::vector<std::thread*> m_worker_threads;
+-  boost::asio::io_context::work* m_worker_io_service_work;
++  boost::asio::executor_work_guard<boost::asio::io_context::executor_type>* m_worker_io_service_work;
+ 
+   std::atomic<bool> m_writing;
+   std::atomic<bool> m_reading;
+diff --git a/src/tools/immutable_object_cache/CacheServer.cc b/src/tools/immutable_object_cache/CacheServer.cc
+index 14deddce561b3..a4c4e3bc36ce1 100644
+--- a/src/tools/immutable_object_cache/CacheServer.cc
++++ b/src/tools/immutable_object_cache/CacheServer.cc
+@@ -35,10 +35,10 @@ int CacheServer::run() {
+     return ret;
+   }
+ 
+-  boost::system::error_code ec;
+-  ret = m_io_service.run(ec);
+-  if (ec) {
+-    ldout(cct, 1) << "m_io_service run fails: " << ec.message() << dendl;
++  try {
++    ret = m_io_service.run();
++  } catch (const std::exception& e) {
++    ldout(cct, 1) << "m_io_service run fails: " << e.what() << dendl;
+     return -1;
+   }
+   return 0;
+@@ -66,7 +66,7 @@ int CacheServer::start_accept() {
+     return -ec.value();
+   }
+ 
+-  m_acceptor.listen(boost::asio::socket_base::max_connections, ec);
++  m_acceptor.listen(boost::asio::socket_base::max_listen_connections, ec);
+   if (ec) {
+     lderr(cct) << "failed to listen on domain socket: " << ec.message()
+                << dendl;
+From 8a04d36cb4738f88c0d60cf0bc83ce052ee3594d Mon Sep 17 00:00:00 2001
+From: Adam Emerson <aemerson at redhat.com>
+Date: Thu, 12 Dec 2024 16:11:32 -0500
+Subject: [PATCH] test/neorados: Use `asio::post` free function
+
+Signed-off-by: Adam Emerson <aemerson at redhat.com>
+---
+ src/test/neorados/completions.cc | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/src/test/neorados/completions.cc b/src/test/neorados/completions.cc
+index b6286130bbea0..a4684e4dc51c5 100644
+--- a/src/test/neorados/completions.cc
++++ b/src/test/neorados/completions.cc
+@@ -1,4 +1,5 @@
+ #include <boost/asio/io_context.hpp>
++#include <boost/asio/post.hpp>
+ 
+ constexpr int max_completions = 10'000'000;
+ int completed = 0;
+@@ -7,11 +8,11 @@ boost::asio::io_context c;
+ 
+ void nested_cb() {
+   if (++completed < max_completions)
+-    c.post(&nested_cb);
++    boost::asio::post(c, &nested_cb);
+ }
+ 
+ int main(void) {
+-  c.post(&nested_cb);
++  boost::asio::post(c, &nested_cb);
+   c.run();
+   assert(completed == max_completions);
+   return 0;
+From 8e5e07659f92a416039cb1153b1c45970a2ee42a Mon Sep 17 00:00:00 2001
+From: Adam Emerson <aemerson at redhat.com>
+Date: Fri, 13 Dec 2024 15:22:22 -0500
+Subject: [PATCH] exporter: Asio deprecations
+
+Signed-off-by: Adam Emerson <aemerson at redhat.com>
+---
+ src/exporter/DaemonMetricCollector.cc | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/exporter/DaemonMetricCollector.cc b/src/exporter/DaemonMetricCollector.cc
+index d27b3ac43c59c..80cdf24458618 100644
+--- a/src/exporter/DaemonMetricCollector.cc
++++ b/src/exporter/DaemonMetricCollector.cc
+@@ -48,7 +48,7 @@ void DaemonMetricCollector::request_loop() {
+     dump_asok_metrics(false, -1, true, dump_response, schema_response, true);
+     auto stats_period = g_conf().get_val<int64_t>("exporter_stats_period");
+     // time to wait before sending requests again
+-    timer.expires_from_now(std::chrono::seconds(stats_period));
++    timer.expires_after(std::chrono::seconds(stats_period));
+     request_loop(timer);
+   });
+ }
+From f4ac2f80851628318190685d2041b0e04e066333 Mon Sep 17 00:00:00 2001
+From: Adam Emerson <aemerson at redhat.com>
+Date: Fri, 13 Dec 2024 15:22:12 -0500
+Subject: [PATCH] rgw: Asio deprecations
+
+Signed-off-by: Adam Emerson <aemerson at redhat.com>
+---
+ src/rgw/driver/rados/rgw_notify.cc | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/src/rgw/driver/rados/rgw_notify.cc b/src/rgw/driver/rados/rgw_notify.cc
+index 5734284d1a364..14eeb73dac26b 100644
+--- a/src/rgw/driver/rados/rgw_notify.cc
++++ b/src/rgw/driver/rados/rgw_notify.cc
+@@ -178,7 +178,7 @@ class Manager : public DoutPrefixProvider {
+       if (pending_tokens == 0) {
+         return;
+       }
+-      timer.expires_from_now(infinite_duration);
++      timer.expires_after(infinite_duration);
+       boost::system::error_code ec; 
+       timer.async_wait(yield[ec]);
+       ceph_assert(ec == boost::system::errc::operation_canceled);
+@@ -297,7 +297,7 @@ class Manager : public DoutPrefixProvider {
+           << ". error: " << ret << dendl;
+       }
+       Timer timer(io_context);
+-      timer.expires_from_now(std::chrono::seconds(reservations_cleanup_period_s));
++      timer.expires_after(std::chrono::seconds(reservations_cleanup_period_s));
+       boost::system::error_code ec;
+ 	    timer.async_wait(yield[ec]);
+     }
+@@ -380,7 +380,7 @@ class Manager : public DoutPrefixProvider {
+       // if queue was empty the last time, sleep for idle timeout
+       if (is_idle) {
+         Timer timer(io_context);
+-        timer.expires_from_now(std::chrono::microseconds(queue_idle_sleep_us));
++        timer.expires_after(std::chrono::microseconds(queue_idle_sleep_us));
+         boost::system::error_code ec;
+ 	      timer.async_wait(yield[ec]);
+       }
+@@ -657,7 +657,7 @@ class Manager : public DoutPrefixProvider {
+       const auto duration = (has_error ? 
+         std::chrono::milliseconds(queues_update_retry_ms) : std::chrono::milliseconds(queues_update_period_ms)) + 
+         std::chrono::milliseconds(duration_jitter(rnd_gen));
+-      timer.expires_from_now(duration);
++      timer.expires_after(duration);
+       const auto tp = ceph::coarse_real_time::clock::to_time_t(ceph::coarse_real_time::clock::now() + duration);
+       ldpp_dout(this, 20) << "INFO: next queues processing will happen at: " << std::ctime(&tp)  << dendl;
+       boost::system::error_code ec;
+@@ -743,7 +743,7 @@ class Manager : public DoutPrefixProvider {
+     Timer timer(io_context);
+     while (processed_queue_count > 0) {
+       ldpp_dout(this, 5) << "INFO: manager stopped. " << processed_queue_count << " queues are still being processed" << dendl;
+-      timer.expires_from_now(std::chrono::milliseconds(queues_update_retry_ms));
++      timer.expires_after(std::chrono::milliseconds(queues_update_retry_ms));
+       boost::system::error_code ec;
+       timer.async_wait(yield[ec]);
+     }
+From 857eedbe6c9ed80ed0625bd0aa27b1a1e85f8d59 Mon Sep 17 00:00:00 2001
+From: Adam Emerson <aemerson at redhat.com>
+Date: Mon, 20 May 2024 16:22:28 -0400
+Subject: [PATCH] mds: Use Boost::url rather than `src.hpp`
+
+As `src.hpp` is no longer supported.
+
+Signed-off-by: Adam Emerson <aemerson at redhat.com>
+---
+ CMakeLists.txt              | 2 +-
+ src/mds/BoostUrlImpl.cc     | 8 --------
+ src/mds/CMakeLists.txt      | 3 +--
+ src/test/mds/CMakeLists.txt | 3 +--
+ 4 files changed, 3 insertions(+), 13 deletions(-)
+ delete mode 100644 src/mds/BoostUrlImpl.cc
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index ba5798e0be9fe..33cd2d81370c8 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -700,7 +700,7 @@ option(WITH_SYSTEM_BOOST "require and build with system Boost" OFF)
+ # Boost::thread depends on Boost::atomic, so list it explicitly.
+ set(BOOST_COMPONENTS
+   atomic chrono thread system regex random program_options date_time
+-  iostreams context coroutine)
++  iostreams context coroutine url)
+ set(BOOST_HEADER_COMPONENTS container)
+ 
+ if(WITH_MGR)
+diff --git a/src/mds/BoostUrlImpl.cc b/src/mds/BoostUrlImpl.cc
+deleted file mode 100644
+index 479f4c6d75d0d..0000000000000
+--- a/src/mds/BoostUrlImpl.cc
++++ /dev/null
+@@ -1,8 +0,0 @@
+-/*
+- * https://www.boost.org/doc/libs/1_82_0/libs/url/doc/html/url/overview.html#url.overview.requirements
+- *
+- * To use the library as header-only; that is, to eliminate the requirement 
+- * to link a program to a static or dynamic Boost.URL library, 
+- * simply place the following line in exactly one source file in your project.
+- */
+-#include <boost/url/src.hpp>
+diff --git a/src/mds/CMakeLists.txt b/src/mds/CMakeLists.txt
+index ffa9dc28d8a69..f3980c7e04b50 100644
+--- a/src/mds/CMakeLists.txt
++++ b/src/mds/CMakeLists.txt
+@@ -45,7 +45,6 @@ set(mds_srcs
+   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
+@@ -51,5 +51,5 @@
+   ${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}")
+diff --git a/src/test/mds/CMakeLists.txt b/src/test/mds/CMakeLists.txt
+index f80abe75083f1..18ebb648e680c 100644
+--- a/src/test/mds/CMakeLists.txt
++++ b/src/test/mds/CMakeLists.txt
+@@ -18,11 +18,10 @@ target_link_libraries(unittest_mds_sessionfilter mds osdc ceph-common global ${B
+ add_executable(unittest_mds_quiesce_db
+   TestQuiesceDb.cc
+   ../../../src/mds/QuiesceDbManager.cc
+-  ../../../src/mds/BoostUrlImpl.cc
+   $<TARGET_OBJECTS:unit-main>
+ )
+ add_ceph_unittest(unittest_mds_quiesce_db)
+-target_link_libraries(unittest_mds_quiesce_db ceph-common global)
++target_link_libraries(unittest_mds_quiesce_db ceph-common global Boost::url)
+ 
+ # unittest_mds_quiesce_agent
+ add_executable(unittest_mds_quiesce_agent
diff --git a/boost1.81.patch b/boost1.81.patch
deleted file mode 100644
index 2dd06ed..0000000
--- a/boost1.81.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-https://bugs.gentoo.org/887481
---- a/src/rgw/rgw_asio_client.cc
-+++ b/src/rgw/rgw_asio_client.cc
-@@ -39,11 +39,11 @@
-     const auto& value = header->value();
- 
-     if (field == beast::http::field::content_length) {
--      env.set("CONTENT_LENGTH", value.to_string());
-+      env.set("CONTENT_LENGTH", value);
-       continue;
-     }
-     if (field == beast::http::field::content_type) {
--      env.set("CONTENT_TYPE", value.to_string());
-+      env.set("CONTENT_TYPE", value);
-       continue;
-     }
- 
-@@ -62,26 +62,26 @@
-     }
-     *dest = '\0';
- 
--    env.set(buf, value.to_string());
-+    env.set(buf, value);
-   }
- 
-   int major = request.version() / 10;
-   int minor = request.version() % 10;
-   env.set("HTTP_VERSION", std::to_string(major) + '.' + std::to_string(minor));
- 
--  env.set("REQUEST_METHOD", request.method_string().to_string());
-+  env.set("REQUEST_METHOD", request.method_string());
- 
-   // split uri from query
-   auto uri = request.target();
-   auto pos = uri.find('?');
-   if (pos != uri.npos) {
-     auto query = uri.substr(pos + 1);
--    env.set("QUERY_STRING", query.to_string());
-+    env.set("QUERY_STRING", query);
-     uri = uri.substr(0, pos);
-   }
--  env.set("SCRIPT_URI", uri.to_string());
-+  env.set("SCRIPT_URI", uri);
- 
--  env.set("REQUEST_URI", request.target().to_string());
-+  env.set("REQUEST_URI", request.target());
- 
-   char port_buf[16];
-   snprintf(port_buf, sizeof(port_buf), "%d", local_endpoint.port());
diff --git a/ceph-arrow-re2.patch b/ceph-arrow-re2.patch
deleted file mode 100644
index 34d8053..0000000
--- a/ceph-arrow-re2.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- ceph-18.2.4/src/arrow/cpp/src/arrow/compute/kernels/scalar_string.cc.orig	2021-11-10 03:04:48.000000000 +0100
-+++ ceph-18.2.4/src/arrow/cpp/src/arrow/compute/kernels/scalar_string.cc	2024-09-04 19:26:35.961458373 +0200
-@@ -3012,7 +3012,7 @@ struct ExtractRegex : public ExtractRege
-         result->value.reserve(group_count);
-         for (int i = 0; i < group_count; i++) {
-           result->value.push_back(
--              std::make_shared<ScalarType>(found_values[i].as_string()));
-+              std::make_shared<ScalarType>(std::string(found_values[i])));
-         }
-         result->is_valid = true;
-       } else {
diff --git a/ceph-gcc12.patch b/ceph-gcc12.patch
deleted file mode 100644
index 3e0874e..0000000
--- a/ceph-gcc12.patch
+++ /dev/null
@@ -1,52 +0,0 @@
---- 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-18.2.3/src/test/librados/tier_cxx.cc.orig	2024-04-24 21:57:21.000000000 +0200
-+++ ceph-18.2.3/src/test/librados/tier_cxx.cc	2024-05-29 06:30:11.278773257 +0200
-@@ -120,7 +120,7 @@ static inline void buf_to_hex(const unsi
- }
- 
- 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();
-@@ -148,7 +148,7 @@ void check_fp_oid_refcount(librados::IoC
-   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-17.0.0-10335-gfd206722/src/s3select/include/s3select_functions.h.orig	2022-02-11 17:21:40.268627997 -0500
-+++ ceph-17.0.0-10335-gfd206722/src/s3select/include/s3select_functions.h	2022-02-11 17:21:57.155325437 -0500
-@@ -466,7 +466,7 @@
- 
-   std::string  print(int ident) override
-   {
--    return std::string(0);
-+    return std::string("");
-   }
- 
-   void push_argument(base_statement* arg)
diff --git a/ceph-gcc14-2.patch b/ceph-gcc14-2.patch
deleted file mode 100644
index 334de92..0000000
--- a/ceph-gcc14-2.patch
+++ /dev/null
@@ -1,253 +0,0 @@
-From f9aea9105b6c1a8d7bff0ec0675f84f2ffb1db6f Mon Sep 17 00:00:00 2001
-From: Florian Weimer <fweimer at redhat.com>
-Date: Wed, 20 Dec 2023 14:16:19 +0100
-Subject: [PATCH 1/2] tracing: Fix C type errors in librados tracing
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-This fixes type errors like this:
-
-In file included from /usr/include/lttng/tracepoint-event.h:69,
-                 from …-build/include/tracing/librados.h:4143,
-                 from …/src/tracing/librados.c:6
-:
-…-build/include/tracing/librados.h:
- In function ‘lttng_ust__event_probe__librados___rados_mon_command_exit’:
-…-build/include/tracing/librados.h:477:9: error: initialization of ‘size_t’ {aka ‘long unsigned int’} from ‘size_t *’ {aka ‘long unsigned int *’} makes integer from pointer without a cast
-  477 |         ceph_ctf_integerp(size_t, outslen, outslen)
-      |         ^~~~~~~~~~~~~~~~~
-
-GCC 14 will likely treat these type mismatches as an error
-and fail the build.
-
-Signed-off-by: Florian Weimer <fweimer at redhat.com>
----
- src/tracing/librados.tp      | 4 ++--
- src/tracing/tracing-common.h | 2 +-
- 2 files changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/src/tracing/librados.tp b/src/tracing/librados.tp
-index 8b5e78ef15d65..8e116124b83d5 100644
---- a/src/tracing/librados.tp
-+++ b/src/tracing/librados.tp
-@@ -2628,7 +2628,7 @@ TRACEPOINT_EVENT(librados, rados_watch3_enter,
-     TP_FIELDS(
-         ctf_integer_hex(rados_ioctx_t, ioctx, ioctx)
-         ctf_string(oid, oid)
--        ctf_integer_hex(uint64_t, phandle, phandle)
-+        ctf_integer_hex(uint64_t*, phandle, phandle)
-         ctf_integer_hex(rados_watchcb2_t, callback, callback)
-         ctf_integer(uint32_t, timeout, timeout)
-         ctf_integer_hex(void*, arg, arg)
-@@ -2658,7 +2658,7 @@ TRACEPOINT_EVENT(librados, rados_aio_watch2_enter,
-         ctf_integer_hex(rados_ioctx_t, ioctx, ioctx)
-         ctf_string(oid, oid)
-         ctf_integer_hex(rados_completion_t, completion, completion)
--        ctf_integer_hex(uint64_t, phandle, phandle)
-+        ctf_integer_hex(uint64_t*, phandle, phandle)
-         ctf_integer_hex(rados_watchcb2_t, callback, callback)
-         ctf_integer(uint32_t, timeout, timeout)
-         ctf_integer_hex(void*, arg, arg)
-diff --git a/src/tracing/tracing-common.h b/src/tracing/tracing-common.h
-index 3e07f9de8e85c..03449ab588615 100644
---- a/src/tracing/tracing-common.h
-+++ b/src/tracing/tracing-common.h
-@@ -21,7 +21,7 @@
- // type should be an integer type
- // val should have type type*
- #define ceph_ctf_integerp(type, field, val) \
--    ctf_integer(type, field, (val) == NULL ? 0 : (val)) \
-+    ctf_integer(type, field, (val) == NULL ? 0 : *(val)) \
-     ctf_integer(uint8_t, field##_isnull, (val) == NULL)
- 
- // val should have type char*
-
-From a49d154f4a8e493baf2296a15c7b5c56cd25e993 Mon Sep 17 00:00:00 2001
-From: Florian Weimer <fweimer at redhat.com>
-Date: Wed, 20 Dec 2023 14:59:19 +0100
-Subject: [PATCH 2/2] pybind: Fix C type errors in Cython-generated Python
- bindings
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Several Ceph APIs use bool * types, which correspond to
-libcpp.bool * types in Cython.  The bint type has an incorrect
-size 4 and cannot be used as a replacement.
-
-This prevents a compilation failure with future compilers:
-
-…-build/src/pybind/rbd/rbd.c: In function ‘__pyx_pf_3rbd_3RBD_104namespace_exists’:
-…-build/src/pybind/rbd/rbd.c:42165:76: error: passing argument 3 of ‘rbd_namespace_exists’ from incompatible pointer type
-42165 |         __pyx_v_ret = rbd_namespace_exists(__pyx_v__ioctx, __pyx_v__name, (&__pyx_v__exists));
-      |                                                                           ~^~~~~~~~~~~~~~~~~
-      |                                                                            |
-      |                                                                            int *
-In file included from …-build/src/pybind/rbd/rbd.c:1268:
-…/src/include/rbd/librbd.h:1496:45: note: expected ‘_Bool *’ but argument is of type ‘int *’
- 1496 |                                       bool *exists);
-      |                                             ^
-
-Signed-off-by: Florian Weimer <fweimer at redhat.com>
----
- src/pybind/rbd/c_rbd.pxd    | 5 +++--
- src/pybind/rbd/mock_rbd.pxi | 9 +++++++--
- src/pybind/rbd/rbd.pyx      | 9 +++++----
- src/pybind/rgw/mock_rgw.pxi | 9 +++++++--
- src/pybind/rgw/rgw.pyx      | 3 ++-
- 5 files changed, 24 insertions(+), 11 deletions(-)
-
-diff --git a/src/pybind/rbd/c_rbd.pxd b/src/pybind/rbd/c_rbd.pxd
-index 885f7bd46abde..bda23bbc4735f 100644
---- a/src/pybind/rbd/c_rbd.pxd
-+++ b/src/pybind/rbd/c_rbd.pxd
-@@ -2,6 +2,7 @@
- 
- from libc.stdint cimport *
- from ctime cimport time_t, timespec
-+cimport libcpp
- 
- cdef extern from "rados/librados.h":
-     enum:
-@@ -525,7 +526,7 @@ cdef extern from "rbd/librbd.h" nogil:
-     int rbd_snap_unprotect(rbd_image_t image, const char *snap_name)
-     int rbd_snap_is_protected(rbd_image_t image, const char *snap_name,
-                               int *is_protected)
--    int rbd_snap_exists(rbd_image_t image, const char *snapname, bint *exists)
-+    int rbd_snap_exists(rbd_image_t image, const char *snapname, libcpp.bool *exists)
-     int rbd_snap_get_limit(rbd_image_t image, uint64_t *limit)
-     int rbd_snap_set_limit(rbd_image_t image, uint64_t limit)
-     int rbd_snap_get_timestamp(rbd_image_t image, uint64_t snap_id, timespec *timestamp)
-@@ -711,7 +712,7 @@ cdef extern from "rbd/librbd.h" nogil:
-     int rbd_namespace_list(rados_ioctx_t io, char *namespace_names,
-                            size_t *size)
-     int rbd_namespace_exists(rados_ioctx_t io, const char *namespace_name,
--                             bint *exists)
-+                             libcpp.bool *exists)
- 
-     int rbd_pool_init(rados_ioctx_t, bint force)
- 
-diff --git a/src/pybind/rbd/mock_rbd.pxi b/src/pybind/rbd/mock_rbd.pxi
-index 11872bd8146de..364f965fbad43 100644
---- a/src/pybind/rbd/mock_rbd.pxi
-+++ b/src/pybind/rbd/mock_rbd.pxi
-@@ -3,6 +3,11 @@
- from libc.stdint cimport *
- from ctime cimport time_t, timespec
- 
-+# Make the bool type available as libcpp.bool, for both C and C++.
-+cimport libcpp
-+cdef extern from "<stdbool.h>":
-+    pass
-+
- cdef nogil:
-     enum:
-         _LIBRADOS_SNAP_HEAD "LIBRADOS_SNAP_HEAD"
-@@ -637,7 +642,7 @@ cdef nogil:
-     int rbd_snap_is_protected(rbd_image_t image, const char *snap_name,
-                               int *is_protected):
-         pass
--    int rbd_snap_exists(rbd_image_t image, const char *snapname, bint *exists):
-+    int rbd_snap_exists(rbd_image_t image, const char *snapname, libcpp.bool *exists):
-         pass
-     int rbd_snap_get_limit(rbd_image_t image, uint64_t *limit):
-         pass
-@@ -896,7 +901,7 @@ cdef nogil:
-                            size_t *size):
-         pass
-     int rbd_namespace_exists(rados_ioctx_t io, const char *namespace_name,
--                             bint *exists):
-+                             libcpp.bool *exists):
-         pass
-     int rbd_pool_init(rados_ioctx_t io, bint force):
-         pass
-diff --git a/src/pybind/rbd/rbd.pyx b/src/pybind/rbd/rbd.pyx
-index fcb2fb3470600..f59ba23f0fe21 100644
---- a/src/pybind/rbd/rbd.pyx
-+++ b/src/pybind/rbd/rbd.pyx
-@@ -23,6 +23,7 @@ from libc cimport errno
- from libc.stdint cimport *
- from libc.stdlib cimport malloc, realloc, free
- from libc.string cimport strdup, memset
-+cimport libcpp
- 
- try:
-     from collections.abc import Iterable
-@@ -1935,12 +1936,12 @@ class RBD(object):
-         cdef:
-             rados_ioctx_t _ioctx = convert_ioctx(ioctx)
-             const char *_name = name
--            bint _exists = False
-+            libcpp.bool _exists = False
-         with nogil:
-             ret = rbd_namespace_exists(_ioctx, _name, &_exists)
-         if ret != 0:
-             raise make_ex(ret, 'error verifying namespace')
--        return bool(_exists != 0)
-+        return _exists
- 
-     def namespace_list(self, ioctx):
-         """
-@@ -3679,12 +3680,12 @@ cdef class Image(object):
-         name = cstr(name, 'name')
-         cdef:
-             char *_name = name
--            bint _exists = False
-+            libcpp.bool _exists = False
-         with nogil:
-             ret = rbd_snap_exists(self.image, _name, &_exists)
-         if ret != 0:
-             raise make_ex(ret, 'error getting snapshot exists for %s' % self.name)
--        return bool(_exists != 0)
-+        return _exists
- 
-     @requires_not_closed
-     def get_snap_limit(self):
-diff --git a/src/pybind/rgw/mock_rgw.pxi b/src/pybind/rgw/mock_rgw.pxi
-index ca893a5bb8a16..806d4df75de05 100644
---- a/src/pybind/rgw/mock_rgw.pxi
-+++ b/src/pybind/rgw/mock_rgw.pxi
-@@ -1,5 +1,10 @@
- # cython: embedsignature=True
- 
-+# Make the bool type available as libcpp.bool, for both C and C++.
-+cimport libcpp
-+cdef extern from "<stdbool.h>":
-+    pass
-+
- cdef nogil:
-     ctypedef void* librgw_t
- 
-@@ -111,8 +116,8 @@ cdef nogil:
- 
-     int rgw_readdir(rgw_fs *fs,
-                     rgw_file_handle *parent_fh, uint64_t *offset,
--                    bint (*cb)(const char *name, void *arg, uint64_t offset, stat *st, uint32_t st_mask, uint32_t flags) nogil except? -9000,
--                    void *cb_arg, bint *eof, uint32_t flags) except? -9000:
-+                    libcpp.bool (*cb)(const char *name, void *arg, uint64_t offset, stat *st, uint32_t st_mask, uint32_t flags) nogil except? -9000,
-+                    void *cb_arg, libcpp.bool *eof, uint32_t flags) except? -9000:
-         pass
- 
-     int rgw_getattr(rgw_fs *fs,
-diff --git a/src/pybind/rgw/rgw.pyx b/src/pybind/rgw/rgw.pyx
-index 9bbcdfff586a8..d210a70bbb8e3 100644
---- a/src/pybind/rgw/rgw.pyx
-+++ b/src/pybind/rgw/rgw.pyx
-@@ -7,6 +7,7 @@ from cpython cimport PyObject, ref, exc, array
- from libc.stdint cimport *
- from libc.stdlib cimport malloc, realloc, free
- from cstat cimport stat
-+cimport libcpp
- 
- IF BUILD_DOC:
-     include "mock_rgw.pxi"
-@@ -373,7 +374,7 @@ cdef class LibRGWFS(object):
-         cdef:
-             rgw_file_handle *_dir_handler = <rgw_file_handle*>dir_handler.handler
-             uint64_t _offset = offset
--            bint _eof
-+            libcpp.bool _eof
-             uint32_t _flags = flags
-         with nogil:
-             ret = rgw_readdir(self.fs, _dir_handler, &_offset, &readdir_cb,
diff --git a/ceph-glibc.patch b/ceph-glibc.patch
deleted file mode 100644
index 403dd69..0000000
--- a/ceph-glibc.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- ceph-17.2.3/src/seastar/include/seastar/core/file.hh.orig	2021-12-19 23:02:10.000000000 +0100
-+++ ceph-17.2.3/src/seastar/include/seastar/core/file.hh	2022-08-29 19:50:21.853290757 +0200
-@@ -32,7 +32,6 @@
- #include <system_error>
- #include <sys/statvfs.h>
- #include <sys/ioctl.h>
--#include <linux/fs.h>
- #include <sys/uio.h>
- #include <unistd.h>
- 
diff --git a/ceph-libfmt.patch b/ceph-libfmt.patch
deleted file mode 100644
index f6bd3f4..0000000
--- a/ceph-libfmt.patch
+++ /dev/null
@@ -1,184 +0,0 @@
---- ceph-17.2.7/src/common/LogEntry.h	2023-10-26 01:46:16.000000000 +0200
-+++ ceph-17.2.7.mod/src/common/LogEntry.h	2024-03-02 07:42:35.321554400 +0100
-@@ -18,6 +18,7 @@
- #include <fmt/format.h>
- 
- #include "include/utime.h"
-+#include "include/utime_fmt.h"
- #include "msg/msg_fmt.h"
- #include "msg/msg_types.h"
- #include "common/entity_name.h"
-@@ -194,6 +195,9 @@
-              << e.channel << " " << e.prio << " " << e.msg;
- }
- 
-+template <>
-+struct fmt::formatter<clog_type> : ostream_formatter {};
-+
- template <> struct fmt::formatter<EntityName> : fmt::formatter<std::string_view> {
-   template <typename FormatContext>
-   auto format(const EntityName& e, FormatContext& ctx) {
---- ceph-18.2.3/src/include/types.h.orig	2024-04-24 21:57:21.000000000 +0200
-+++ ceph-18.2.3/src/include/types.h	2024-05-29 06:11:52.665464115 +0200
-@@ -612,6 +612,12 @@ inline std::ostream &operator<<(std::ost
- 
- #if FMT_VERSION >= 90000
- template <uint8_t S> struct fmt::formatter<sha_digest_t<S>> : fmt::ostream_formatter {};
-+
-+template <typename T>
-+struct fmt::formatter<ceph_le<T>> : ostream_formatter {};
-+
-+template <>
-+struct fmt::formatter<shard_id_t> : ostream_formatter {};
- #endif
- 
- using sha1_digest_t = sha_digest_t<20>;
---- ceph-18.2.3/src/msg/async/frames_v2.cc.orig	2024-05-29 06:09:22.381732484 +0200
-+++ ceph-18.2.3/src/msg/async/frames_v2.cc	2024-05-29 22:07:02.928224740 +0200
-@@ -12,12 +12,11 @@
-  *
-  */
- 
-+#include <fmt/format.h>
- #include "frames_v2.h"
- 
- #include <ostream>
- 
--#include <fmt/format.h>
--
- namespace ceph::msgr::v2 {
- 
- // Unpads bufferlist to unpadded_len.
---- ceph-17.2.7/src/tools/neorados.cc	2024-03-03 19:54:51.414457588 +0100
-+++ ceph-17.2.7.mod/src/tools/neorados.cc	2024-03-03 15:18:02.793213584 +0100
-@@ -143,7 +143,7 @@
-     throw bs::system_error(ec,
- 			   fmt::format(
- 			     "when creating object '{}' in pool '{}'",
--			     obj, pname));
-+			     fmt::streamed(obj), pname));
- }
- 
- inline constexpr std::size_t io_size = 4 << 20;
-@@ -179,7 +179,7 @@
-     if (ec)
-       throw bs::system_error(ec, fmt::format(
- 			       "when writing object '{}' in pool '{}'",
--			       obj, pname));
-+			       fmt::streamed(obj), pname));
-   }
- }
- 
-@@ -200,7 +200,7 @@
-       throw bs::system_error(
- 	ec,
- 	fmt::format("when getting length of object '{}' in pool '{}'",
--		    obj, pname));
-+		    fmt::streamed(obj), pname));
-   }
- 
-   std::size_t off = 0;
-@@ -213,7 +213,7 @@
-       throw bs::system_error(
- 	ec,
- 	fmt::format("when reading from object '{}' in pool '{}'",
--		    obj, pool));
-+		    fmt::streamed(obj), pool));
- 
-     off += bl.length();
-     bl.write_stream(std::cout);
-@@ -234,7 +234,7 @@
-   if (ec)
-     throw bs::system_error(ec, fmt::format(
- 			     "when removing object '{}' in pool '{}'",
--			     obj, pname));
-+			     fmt::streamed(obj), pname));
- }
- 
- static constexpr auto version = std::make_tuple(0ul, 0ul, 1ul);
---- ceph-18.2.3/src/osd/scrubber/pg_scrubber.cc.orig	2024-04-24 21:57:21.000000000 +0200
-+++ ceph-18.2.3/src/osd/scrubber/pg_scrubber.cc	2024-05-29 22:24:08.877821930 +0200
-@@ -1,14 +1,15 @@
- // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
- // vim: ts=2 sw=2 smarttab
- 
-+#include <fmt/chrono.h>
-+#include <fmt/ranges.h>
-+
- #include "./pg_scrubber.h"  // '.' notation used to affect clang-format order
- 
- #include <cmath>
- #include <iostream>
- #include <vector>
- 
--#include <fmt/ranges.h>
--
- #include "debug.h"
- 
- #include "common/ceph_time.h"
-@@ -2818,7 +2819,7 @@ ReplicaReservations::no_reply_t::no_repl
-   m_abort_callback = new LambdaContext([this, now_is]([[maybe_unused]] int r) {
-     // behave as if a REJECT was received
-     m_osds->clog->warn() << fmt::format(
--      "{} timeout on replica reservations (since {})", m_log_prfx, now_is);
-+      "{} timeout on replica reservations (since {})", m_log_prfx, fmt::streamed(now_is));
-     m_parent.handle_no_reply_timeout();
-   });
- 
---- ceph-18.2.3/src/osd/osd_types_fmt.h.orig	2024-04-24 21:57:21.000000000 +0200
-+++ ceph-18.2.3/src/osd/osd_types_fmt.h	2024-05-30 08:08:23.439099461 +0200
-@@ -57,7 +57,7 @@ struct fmt::formatter<chunk_info_t> {
-   constexpr auto parse(format_parse_context& ctx) { return ctx.begin(); }
- 
-   template <typename FormatContext>
--  auto format(const chunk_info_t& ci, FormatContext& ctx)
-+  auto format(const chunk_info_t& ci, FormatContext& ctx) const
-   {
-     return fmt::format_to(ctx.out(), "(len: {} oid: {} offset: {} flags: {})",
- 			  ci.length, ci.oid, ci.offset,
---- ceph-18.2.3/src/osd/scrubber/scrub_backend.cc.orig	2024-04-24 21:57:21.000000000 +0200
-+++ ceph-18.2.3/src/osd/scrubber/scrub_backend.cc	2024-05-30 08:44:07.822017763 +0200
-@@ -1,12 +1,12 @@
- // -*- m_mode_desc:C++; tab-width:8; c-basic-offset:2; indent-tabs-m_mode_desc:t
- // -*- vim: ts=2 sw=2 smarttab
- 
-+#include <fmt/ranges.h>
-+
- #include "./scrub_backend.h"
- 
- #include <algorithm>
- 
--#include <fmt/ranges.h>
--
- #include "common/debug.h"
- 
- #include "include/utime_fmt.h"
---- ceph-18.2.3/src/osd/SnapMapper.cc.orig	2024-04-24 21:57:21.000000000 +0200
-+++ ceph-18.2.3/src/osd/SnapMapper.cc	2024-05-30 10:36:46.329449365 +0200
-@@ -211,7 +211,7 @@ string SnapMapper::get_prefix(int64_t po
-   return fmt::sprintf("%s%lld_%.16X_",
- 		      MAPPING_PREFIX,
- 		      pool,
--		      snap);
-+		      snap.val);
- }
- 
- string SnapMapper::to_raw_key(
-@@ -650,7 +650,7 @@ string SnapMapper::make_purged_snap_key(
-   return fmt::sprintf("%s_%lld_%016llx",
- 		      PURGED_SNAP_PREFIX,
- 		      pool,
--		      last);
-+		      last.val);
- }
- 
- void SnapMapper::make_purged_snap_key_value(
-@@ -866,7 +866,7 @@ string SnapMapper::get_legacy_prefix(sna
- {
-   return fmt::sprintf("%s%.16X_",
- 		      LEGACY_MAPPING_PREFIX,
--		      snap);
-+		      snap.val);
- }
- 
- string SnapMapper::to_legacy_raw_key(
diff --git a/ceph-liburing.patch b/ceph-liburing.patch
deleted file mode 100644
index 9d58e7a..0000000
--- a/ceph-liburing.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- ceph-16.2.7/cmake/modules/Finduring.cmake.orig	2021-12-07 17:15:49.000000000 +0100
-+++ ceph-16.2.7/cmake/modules/Finduring.cmake	2022-02-16 22:00:07.850162837 +0100
-@@ -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 uring)
- 
- include(FindPackageHandleStandardArgs)
- find_package_handle_standard_args(uring DEFAULT_MSG URING_LIBRARIES URING_INCLUDE_DIR)
diff --git a/ceph-qat.patch b/ceph-qat.patch
deleted file mode 100644
index 76d5380..0000000
--- a/ceph-qat.patch
+++ /dev/null
@@ -1,139 +0,0 @@
---- ceph-17.2.3/CMakeLists.txt.orig	2022-07-28 23:52:12.000000000 +0200
-+++ ceph-17.2.3/CMakeLists.txt	2022-08-28 14:39:36.852487766 +0200
-@@ -278,7 +278,7 @@ option(WITH_BLUEFS "libbluefs library" O
- 
- option(WITH_QAT "Enable Qat driver" OFF)
- if(WITH_QAT)
--  find_package(QatDrv REQUIRED COMPONENTS qat_s usdm_drv_s)
-+  find_package(QatDrv REQUIRED COMPONENTS qat usdm)
-   set(HAVE_QATDRV $(QatDrv_FOUND))
- endif()
- 
---- ceph-17.2.3/src/crypto/qat/CMakeLists.txt.orig	2022-07-28 23:52:12.000000000 +0200
-+++ ceph-17.2.3/src/crypto/qat/CMakeLists.txt	2022-08-28 14:39:51.893274653 +0200
-@@ -12,8 +12,8 @@ add_library(ceph_crypto_qat SHARED ${qat
- add_dependencies(crypto_plugins ceph_crypto_qat)
- 
- target_link_libraries(ceph_crypto_qat PRIVATE
--                      QatDrv::qat_s
--                      QatDrv::usdm_drv_s)
-+                      QatDrv::qat
-+                      QatDrv::usdm)
- 
- add_dependencies(crypto_plugins ceph_crypto_qat)
- set_target_properties(ceph_crypto_qat PROPERTIES VERSION 1.0.0 SOVERSION 1)
---- ceph-17.2.3/cmake/modules/FindQatDrv.cmake.orig	2022-07-28 23:52:12.000000000 +0200
-+++ ceph-17.2.3/cmake/modules/FindQatDrv.cmake	2022-08-28 17:59:19.158087689 +0200
-@@ -39,23 +39,15 @@ function(get_qatdrv_version versionfile)
- endfunction()
- 
- find_path(QATDRV_INCLUDE_DIR
--  name quickassist/include/cpa.h
--  HINTS $ENV{ICP_ROOT} /opt/APP/driver/QAT
--  NO_DEFAULT_PATH)
-+  name qat/cpa.h
-+  HINTS $ENV{ICP_ROOT}
-+  )
- if(QATDRV_INCLUDE_DIR)
--  get_qatdrv_version(${QATDRV_INCLUDE_DIR}/versionfile)
--  set(QatDrv_INCLUDE_DIRS
--      ${QATDRV_INCLUDE_DIR}/quickassist/include
--      ${QATDRV_INCLUDE_DIR}/quickassist/include/dc
--      ${QATDRV_INCLUDE_DIR}/quickassist/lookaside/access_layer/include
--      ${QATDRV_INCLUDE_DIR}/quickassist/include/lac
--      ${QATDRV_INCLUDE_DIR}/quickassist/utilities/libusdm_drv
--      ${QATDRV_INCLUDE_DIR}/quickassist/utilities/libusdm_drv/include)
-+  set(QatDrv_INCLUDE_DIRS ${QATDRV_INCLUDE_DIR})
- endif()
- foreach(component ${QatDrv_FIND_COMPONENTS})
-   find_library(QatDrv_${component}_LIBRARIES
--               NAMES ${component}
--               HINTS ${QATDRV_INCLUDE_DIR}/build/)
-+               NAMES ${component})
-   mark_as_advanced(QatDrv_INCLUDE_DIRS
-                    QatDrv_${component}_LIBRARIES)
-   list(APPEND QatDrv_LIBRARIES "${QatDrv_${component}_LIBRARIES}")  
-@@ -71,7 +63,7 @@ find_package_handle_standard_args(QatDrv
- 
- foreach(component ${QatDrv_FIND_COMPONENTS})
-   if(NOT TARGET QatDrv::${component})
--    add_library(QatDrv::${component} STATIC IMPORTED GLOBAL)
-+    add_library(QatDrv::${component} SHARED IMPORTED GLOBAL)
-     set_target_properties(QatDrv::${component} PROPERTIES
-                           INTERFACE_INCLUDE_DIRECTORIES "${QatDrv_INCLUDE_DIRS}"
-                           IMPORTED_LINK_INTERFACE_LANGUAGES "C"
---- ceph-18.2.3/src/compressor/CMakeLists.txt.orig	2024-05-28 22:34:42.686872365 +0200
-+++ ceph-18.2.3/src/compressor/CMakeLists.txt	2024-05-28 22:35:39.740566246 +0200
-@@ -8,8 +8,8 @@ add_library(compressor_objs OBJECT ${com
- add_dependencies(compressor_objs common-objs)
- if(HAVE_QATZIP AND HAVE_QATDRV)
-   target_link_libraries(compressor_objs PRIVATE
--                        QatDrv::qat_s
--                        QatDrv::usdm_drv_s
-+                        QatDrv::qat
-+                        QatDrv::usdm
-                         qatzip::qatzip
-                        )
- endif()
---- ceph-17.2.3/src/crypto/qat/qcccrypto.h.orig	2022-07-28 23:52:12.000000000 +0200
-+++ ceph-17.2.3/src/crypto/qat/qcccrypto.h	2022-08-28 20:18:02.916194325 +0200
-@@ -8,13 +8,15 @@
- #include <pthread.h>
- #include <queue>
- extern "C" {
--#include "cpa.h"
--#include "lac/cpa_cy_sym.h"
--#include "lac/cpa_cy_im.h"
--#include "qae_mem.h"
--#include "icp_sal_user.h"
--#include "icp_sal_poll.h"
--#include "qae_mem_utils.h"
-+#include "qat/cpa.h"
-+#include "qat/cpa_cy_sym.h"
-+#include "qat/cpa_cy_im.h"
-+#include "qat/qae_mem.h"
-+#include "qat/icp_sal_user.h"
-+#include "qat/icp_sal_poll.h"
-+
-+CpaStatus qaeMemInit(void);
-+void qaeMemDestroy(void);
- }
- 
- class QccCrypto {
---- ceph-18.2.3/src/compressor/QatAccel.cc.orig	2024-04-24 21:57:21.000000000 +0200
-+++ ceph-18.2.3/src/compressor/QatAccel.cc	2024-05-29 20:08:56.061825894 +0200
-@@ -42,14 +42,20 @@ void QzSessionDeleter::operator() (struc
-   delete session;
- }
- 
--static bool get_qz_params(const std::string &alg, QzSessionParams_T &params) {
-+static bool get_qz_params(const std::string &alg, QzSessionParams_T &params, QzSessionParamsDeflate_T &deflate_params) {
-   int rc;
-   rc = qzGetDefaults(&params);
-   if (rc != QZ_OK)
-     return false;
-   params.direction = QZ_DIR_BOTH;
--  params.is_busy_polling = true;
-   if (alg == "zlib") {
-+    rc = qzGetDefaultsDeflate(&deflate_params);
-+    if (rc != QZ_OK)
-+      return false;
-+    deflate_params.common_params.polling_mode = QZ_BUSY_POLLING;
-+    rc = qzSetDefaultsDeflate(&deflate_params);
-+    if (rc != QZ_OK)
-+      return false;
-     params.comp_algorithm = QZ_DEFLATE;
-     params.data_fmt = QZ_DEFLATE_RAW;
-     params.comp_lvl = g_ceph_context->_conf->compressor_zlib_level;
-@@ -114,9 +120,10 @@ QatAccel::session_ptr QatAccel::get_sess
-   // If there are no available session to use, we try allocate a new
-   // session.
-   QzSessionParams_T params = {(QzHuffmanHdr_T)0,};
-+  QzSessionParamsDeflate_T deflate_params = {};
-   session_ptr session(new struct QzSession_S());
-   memset(session.get(), 0, sizeof(struct QzSession_S));
--  if (get_qz_params(alg_name, params) && setup_session(session, params)) {
-+  if (get_qz_params(alg_name, params, deflate_params) && setup_session(session, params)) {
-     return session;
-   } else {
-     return nullptr;
diff --git a/types.patch b/types.patch
index 85fabe6..17eb6d6 100644
--- a/types.patch
+++ b/types.patch
@@ -20,17 +20,6 @@
    };
    if (alloc[dev]) {
      alloc[dev]->foreach(iterated_allocation);
---- ceph-16.2.7/src/tools/neorados.cc~	2021-12-07 17:15:49.000000000 +0100
-+++ ceph-16.2.7/src/tools/neorados.cc	2022-02-12 22:23:25.836643956 +0100
-@@ -205,7 +205,7 @@
- 
-   std::size_t off = 0;
-   ceph::buffer::list bl;
--  while (auto toread = std::max(len - off, io_size)) {
-+  while (auto toread = std::max(len - off, (uint64_t)io_size)) {
-     R::ReadOp op;
-     op.read(off, toread, &bl);
-     r.execute(obj, pool, std::move(op), nullptr, y[ec]);
 --- ceph-16.2.7/src/tools/cephfs_mirror/FSMirror.cc.orig	2021-12-07 17:15:49.000000000 +0100
 +++ ceph-16.2.7/src/tools/cephfs_mirror/FSMirror.cc	2022-02-12 22:30:46.487298972 +0100
 @@ -345,7 +345,7 @@
@@ -56,7 +45,7 @@
 @@ -313,7 +313,7 @@ posix_file_impl::close() noexcept {
  
  future<uint64_t>
- blockdev_file_impl::size(void) noexcept {
+ blockdev_file_impl::size() noexcept {
 -    return engine()._thread_pool->submit<syscall_result_extra<size_t>>([this] {
 +    return engine()._thread_pool->submit<syscall_result_extra<uint64_t>>([this] {
          uint64_t size;
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/ceph.git/commitdiff/15575e11ebaaf777088fac2e6dccbd7a5a5cc2aa



More information about the pld-cvs-commit mailing list