public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/ceph] rawhide: ceph-21.1.0 RC0
@ 2026-07-20 18:17 Kaleb S. KEITHLEY
  0 siblings, 0 replies; only message in thread
From: Kaleb S. KEITHLEY @ 2026-07-20 18:17 UTC (permalink / raw)
  To: git-commits

A new commit has been pushed.

Repo   : rpms/ceph
Branch : rawhide
Commit : 53b0acef07362afb388d4624edcedfdaed1e9b4c
Author : Kaleb S. KEITHLEY <kkeithle@redhat.com>
Date   : 2026-07-20T14:14:07-04:00
Stats  : +604/-342 in 14 file(s)
URL    : https://src.fedoraproject.org/rpms/ceph/c/53b0acef07362afb388d4624edcedfdaed1e9b4c?branch=rawhide

Log:
ceph-21.1.0 RC0

---
diff --git a/0011-isa-l-CET-Add-CET-marker-to-x86-64-crc32-assembly-co.patch b/0011-isa-l-CET-Add-CET-marker-to-x86-64-crc32-assembly-co.patch
index 9cf4e6b..36a1944 100644
--- a/0011-isa-l-CET-Add-CET-marker-to-x86-64-crc32-assembly-co.patch
+++ b/0011-isa-l-CET-Add-CET-marker-to-x86-64-crc32-assembly-co.patch
@@ -12,19 +12,16 @@ for IBT and SHSTK compatibility.
  crc/crc32_ieee_01.asm           | 8 ++++++++
  crc/crc32_ieee_02.asm           | 9 +++++++++
  crc/crc32_ieee_by16_10.asm      | 9 +++++++++
- crc/crc32_ieee_by4.asm          | 9 +++++++++
- crc/crc32_iscsi_00.asm          | 8 ++++++++
- crc/crc32_iscsi_01.asm          | 8 ++++++++
  9 files changed, 78 insertions(+)
 
 diff --git a/src/isa-l/crc/crc32_gzip_refl_by16_10.asm b/src/isa-l/crc/crc32_gzip_refl_by16_10.asm
 index 40236f6..b16874d 100644
 --- a/src/isa-l/crc/crc32_gzip_refl_by16_10.asm
 +++ b/src/isa-l/crc/crc32_gzip_refl_by16_10.asm
-@@ -566,3 +566,12 @@ global no_ %+ FUNCTION_NAME
- no_ %+ FUNCTION_NAME %+ :
- %endif
- %endif ; (AS_FEATURE_LEVEL) >= 10
+@@ -569,3 +569,12 @@
+ mask:  dq     0xFFFFFFFFFFFFFFFF, 0x0000000000000000
+ mask2: dq     0xFFFFFFFF00000000, 0xFFFFFFFFFFFFFFFF
+ mask3: dq     0x8080808080808080, 0x8080808080808080
 +
 +%ifidn __OUTPUT_FORMAT__, elf64
 +; inform linker that this doesn't require executable stack
@@ -38,17 +35,16 @@ diff --git a/src/isa-l/crc/crc32_gzip_refl_by8.asm b/src/isa-l/crc/crc32_gzip_re
 index 62f7e7d..97b0c4a 100644
 --- a/src/isa-l/crc/crc32_gzip_refl_by8.asm
 +++ b/src/isa-l/crc/crc32_gzip_refl_by8.asm
-@@ -622,3 +622,12 @@ dq 0x0706050403020100, 0x000e0d0c0b0a0908
- 
- ;;;       func        core, ver, snum
- slversion crc32_gzip_refl_by8, 01,   00,  002c
+ ;       dq 0x060504030201008f, 0x0e0d0c0b0a090807 ; shl 1  (16-15) / shr15
+ dq 0x8786858483828100, 0x8f8e8d8c8b8a8988
+ dq 0x0706050403020100, 0x000e0d0c0b0a0908
 +
 +%ifidn __OUTPUT_FORMAT__, elf64
 +; inform linker that this doesn't require executable stack
 +section .note.GNU-stack noalloc noexec nowrite progbits
 +; inform linker that this is compatible with IBT and SHSTK
 +section .note.gnu.property  note  alloc noexec align=8
-+DD 0x00000004,0x00000010,0x00000005,0x00554e47
++DD 0x00000004,0x00000010,0x00000005,0x00554e47 
 +DD 0xc0000002,0x00000004,0x00000003,0x00000000
 +%endif
 diff --git a/src/isa-l/crc/crc32_gzip_refl_by8_02.asm b/src/isa-l/crc/crc32_gzip_refl_by8_02.asm
@@ -72,10 +68,11 @@ diff --git a/src/isa-l/crc/crc32_ieee_01.asm b/src/isa-l/crc/crc32_ieee_01.asm
 index 32495ed..cfc443b 100644
 --- a/src/isa-l/crc/crc32_ieee_01.asm
 +++ b/src/isa-l/crc/crc32_ieee_01.asm
-@@ -653,3 +653,11 @@ dq 0x0706050403020100, 0x000e0d0c0b0a0908
- ;;;       func        core, ver, snum
- slversion crc32_ieee_01, 01,   06,  0011
- 
+@@ -737,3 +737,12 @@
+ ;	dq 0x060504030201008f, 0x0e0d0c0b0a090807 ; shl 1  (16-15) / shr15
+ dq 0x8786858483828100, 0x8f8e8d8c8b8a8988
+ dq 0x0706050403020100, 0x000e0d0c0b0a0908
++
 +%ifidn __OUTPUT_FORMAT__, elf64
 +; inform linker that this doesn't require executable stack
 +section .note.GNU-stack noalloc noexec nowrite progbits
@@ -105,66 +102,17 @@ diff --git a/src/isa-l/crc/crc32_ieee_by16_10.asm b/src/isa-l/crc/crc32_ieee_by1
 index 200fd93..2afd597 100644
 --- a/src/isa-l/crc/crc32_ieee_by16_10.asm
 +++ b/src/isa-l/crc/crc32_ieee_by16_10.asm
-@@ -582,3 +582,12 @@ global no_ %+ FUNCTION_NAME
- no_ %+ FUNCTION_NAME %+ :
- %endif
- %endif ; (AS_FEATURE_LEVEL) >= 10
-+
-+%ifidn __OUTPUT_FORMAT__, elf64
-+; inform linker that this doesn't require executable stack
-+section .note.GNU-stack noalloc noexec nowrite progbits
-+; inform linker that this is compatible with IBT and SHSTK
-+section .note.gnu.property  note  alloc noexec align=8
-+DD 0x00000004,0x00000010,0x00000005,0x00554e47
-+DD 0xc0000002,0x00000004,0x00000003,0x00000000
-+%endif
-diff --git a/src/isa-l/crc/crc32_ieee_by4.asm b/src/isa-l/crc/crc32_ieee_by4.asm
-index 39bed5a..847d0bd 100644
---- a/src/isa-l/crc/crc32_ieee_by4.asm
-+++ b/src/isa-l/crc/crc32_ieee_by4.asm
-@@ -563,3 +563,12 @@ SHUF_MASK	dq 0x08090A0B0C0D0E0F, 0x0001020304050607
- 
- ;;;       func             core, ver, snum
- slversion crc32_ieee_by4, 05,   02,  0017
+@@ -606,3 +606,12 @@
+ dq 0x0706050403020100, 0x000e0d0c0b0a0908
+ dq 0x8080808080808080, 0x0f0e0d0c0b0a0908
+ dq 0x8080808080808080, 0x8080808080808080
 +
 +%ifidn __OUTPUT_FORMAT__, elf64
 +; inform linker that this doesn't require executable stack
 +section .note.GNU-stack noalloc noexec nowrite progbits
 +; inform linker that this is compatible with IBT and SHSTK
 +section .note.gnu.property  note  alloc noexec align=8
-+DD 0x00000004,0x00000010,0x00000005,0x00554e47
-+DD 0xc0000002,0x00000004,0x00000003,0x00000000
-+%endif
-diff --git a/src/isa-l/crc/crc32_iscsi_00.asm b/src/isa-l/crc/crc32_iscsi_00.asm
-index 4f81e3a..3d6b2d1 100644
---- a/src/isa-l/crc/crc32_iscsi_00.asm
-+++ b/src/isa-l/crc/crc32_iscsi_00.asm
-@@ -669,3 +669,11 @@ DD 0x54851c7f,0x89e3d7c4,0xeba4fdf8,0x36c23643
- ;;;       func            core, ver, snum
- slversion crc32_iscsi_00, 00,   04,  0014
- 
-+%ifidn __OUTPUT_FORMAT__, elf64
-+; inform linker that this doesn't require executable stack
-+section .note.GNU-stack noalloc noexec nowrite progbits
-+; inform linker that this is compatible with IBT and SHSTK
-+section .note.gnu.property  note  alloc noexec align=8
-+DD 0x00000004,0x00000010,0x00000005,0x00554e47
-+DD 0xc0000002,0x00000004,0x00000003,0x00000000
-+%endif
-diff --git a/src/isa-l/crc/crc32_iscsi_01.asm b/src/isa-l/crc/crc32_iscsi_01.asm
-index 2a81517..c048413 100644
---- a/src/isa-l/crc/crc32_iscsi_01.asm
-+++ b/src/isa-l/crc/crc32_iscsi_01.asm
-@@ -588,3 +588,11 @@ K_table:
- ;;;       func            core, ver, snum
- slversion crc32_iscsi_01, 01,   04,  0015
- 
-+%ifidn __OUTPUT_FORMAT__, elf64
-+; inform linker that this doesn't require executable stack
-+section .note.GNU-stack noalloc noexec nowrite progbits
-+; inform linker that this is compatible with IBT and SHSTK
-+section .note.gnu.property  note  alloc noexec align=8
-+DD 0x00000004,0x00000010,0x00000005,0x00554e47
++DD 0x00000004,0x00000010,0x00000005,0x00554e47 
 +DD 0xc0000002,0x00000004,0x00000003,0x00000000
 +%endif
 -- 

diff --git a/0018-src-rgw-store-dbstore-CMakeLists.txt.patch b/0018-src-rgw-store-dbstore-CMakeLists.txt.patch
index 874bbcd..904964e 100644
--- a/0018-src-rgw-store-dbstore-CMakeLists.txt.patch
+++ b/0018-src-rgw-store-dbstore-CMakeLists.txt.patch
@@ -6,10 +6,10 @@
  
 -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 @@
+ if(COMPILER_SUPPORTS_VLA_ERROR)
+   target_compile_options(dbstore_lib PRIVATE $<$<COMPILE_LANGUAGE:CXX>:-Werror=vla>)
+ endif()
+@@ -52,6 +52,7 @@
  
  # add pthread library
  set (CMAKE_LINK_LIBRARIES ${CMAKE_LINK_LIBRARIES} pthread)

diff --git a/0029-src-rgw-rgw_amqp.cc.patch b/0029-src-rgw-rgw_amqp.cc.patch
deleted file mode 100644
index 8cd8fa9..0000000
--- a/0029-src-rgw-rgw_amqp.cc.patch
+++ /dev/null
@@ -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>

diff --git a/0034-src-pybind-rbd-rbd.pyx.patch b/0034-src-pybind-rbd-rbd.pyx.patch
index 1f5ff7a..82f6b0f 100644
--- a/0034-src-pybind-rbd-rbd.pyx.patch
+++ b/0034-src-pybind-rbd-rbd.pyx.patch
@@ -1,8 +1,8 @@
---- 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
+--- ceph-20.3.0/src/pybind/rbd/rbd.pyx.orig	2026-03-11 07:32:09.000000000 -0400
++++ ceph-20.3.0/src/pybind/rbd/rbd.pyx	2026-03-17 14:03:14.089738661 -0400
+@@ -399,10 +399,10 @@
+     return <rados_ioctx_t>ioctx.io
+ {{endif}}
  
 -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:
@@ -13,7 +13,7 @@
      return 0
  
  def cstr(val, name, encoding="utf-8", opt=False):
-@@ -426,7 +426,7 @@
+@@ -454,7 +454,7 @@
  
  cdef class Completion
  

diff --git a/0041-src-boost-boost-python-call_method.hpp.patch b/0041-src-boost-boost-python-call_method.hpp.patch
deleted file mode 100644
index 7f908b2..0000000
--- a/0041-src-boost-boost-python-call_method.hpp.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- ceph-18.2.3/src/boost/boost/python/call_method.hpp.orig	2024-06-07 11:14:58.579734749 -0400
-+++ ceph-18.2.3/src/boost/boost/python/call_method.hpp	2024-06-07 11:19:06.754520504 -0400
-@@ -59,7 +59,7 @@
-     )
- {
-     PyObject* const result = 
--        PyEval_CallMethod(
-+        PyObject_CallMethod(
-             self
-             , const_cast<char*>(name)
-             , const_cast<char*>("(" BOOST_PP_REPEAT_1ST(N, BOOST_PYTHON_FIXED, "O") ")")

diff --git a/0041-src-mgr-PyModule.cc.patch b/0041-src-mgr-PyModule.cc.patch
index 04293fd..937a18a 100644
--- a/0041-src-mgr-PyModule.cc.patch
+++ b/0041-src-mgr-PyModule.cc.patch
@@ -1,6 +1,6 @@
---- ceph-20.2.2/src/mgr/PyModule.cc.orig	2026-06-15 10:56:49.000000000 -0400
-+++ ceph-20.2.2/src/mgr/PyModule.cc	2026-06-16 15:45:32.516059621 -0400
-@@ -330,6 +330,16 @@
+--- 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;
  }
  
@@ -17,12 +17,3 @@
  int PyModule::load(PyThreadState *pMainThreadState)
  {
    ceph_assert(pMainThreadState != nullptr);
-@@ -369,7 +379,7 @@
- 
-     int r;
- 
--    pPickleModule = PyImport_ImportModuleNoBlock("pickle");
-+    pPickleModule = PyImport_ImportModule("pickle");
-     if (!pPickleModule) {
-       derr << "Unable to load pickle" << dendl;
-       return -EINVAL;

diff --git a/0057-src-json_spirit-json_spirit_reader_template.h.patch b/0057-src-json_spirit-json_spirit_reader_template.h.patch
deleted file mode 100644
index efc08cf..0000000
--- a/0057-src-json_spirit-json_spirit_reader_template.h.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- ceph-20.0.0-2099-gc62cbb7d/src/json_spirit/json_spirit_reader_template.h.orig	2025-06-09 11:56:21.534808695 -0400
-+++ ceph-20.0.0-2099-gc62cbb7d/src/json_spirit/json_spirit_reader_template.h	2025-06-09 12:01:56.358334353 -0400
-@@ -136,6 +136,7 @@
-     {
-         typedef typename String_type::const_iterator Iter_type;
- 
-+        if( end - begin < 1 ) return String_type();
-         if( end - begin < 2 ) return String_type( begin, end );
- 
-         String_type result;

diff --git a/0058-src-CMakeLists.txt.patch b/0058-src-CMakeLists.txt.patch
deleted file mode 100644
index eba46fa..0000000
--- a/0058-src-CMakeLists.txt.patch
+++ /dev/null
@@ -1,13 +0,0 @@
---- ceph-20.2.0/src/CMakeLists.txt.orig	2026-01-20 14:31:56.764231793 -0500
-+++ ceph-20.2.0/src/CMakeLists.txt	2026-01-20 14:35:21.258787691 -0500
-@@ -1051,8 +1051,8 @@
- if(WITH_RADOSGW)
-   if(WITH_RADOSGW_SELECT_PARQUET OR WITH_RADOSGW_ARROW_FLIGHT)
-     if(WITH_SYSTEM_ARROW)
--      find_package(Arrow 4 REQUIRED QUIET)
--      find_package(Parquet 4 REQUIRED QUIET)
-+      find_package(Arrow REQUIRED QUIET)
-+      find_package(Parquet REQUIRED QUIET)
-     else()
-       # find arrow's dependencies
-       if (WITH_SYSTEM_UTF8PROC)

diff --git a/0060-src-crimson-common-smp_helpers.h.patch b/0060-src-crimson-common-smp_helpers.h.patch
deleted file mode 100644
index c44f215..0000000
--- a/0060-src-crimson-common-smp_helpers.h.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- ceph-20.2.0/src/crimson/common/smp_helpers.h.orig	2025-12-04 10:38:34.906915674 -0500
-+++ ceph-20.2.0/src/crimson/common/smp_helpers.h	2025-12-04 10:38:45.200845804 -0500
-@@ -8,6 +8,7 @@
- #include <optional>
- #include <type_traits>
- #include <vector>
-+#include <coroutine>
- 
- #include <seastar/core/shared_future.hh>
- #include <seastar/core/smp.hh>

diff --git a/0061-gcc-16.patch b/0061-gcc-16.patch
deleted file mode 100644
index 2ba7bad..0000000
--- a/0061-gcc-16.patch
+++ /dev/null
@@ -1,70 +0,0 @@
---- ceph-20.2.0/src/common/Formatter.h.orig	2026-01-06 17:47:18.437014517 -0500
-+++ ceph-20.2.0/src/common/Formatter.h	2026-01-06 17:47:53.015404074 -0500
-@@ -12,6 +12,7 @@
- #include <memory>
- #include <vector>
- #include <stdarg.h>
-+#include <cstdint>
- #include <sstream>
- #include <map>
- #include <vector>
---- ceph-20.2.0/src/mds/Locker.cc.orig	2026-01-07 10:34:12.731210930 -0500
-+++ ceph-20.2.0/src/mds/Locker.cc	2026-01-07 10:34:35.627823155 -0500
-@@ -4489,7 +4489,7 @@
-       dout(7) << "handle_client_lease client." << client << " renew on " << *dn
- 	      << (!dn->lock.can_lease(client)?", revoking lease":"") << dendl;
-       if (dn->lock.can_lease(client)) {
--        auto reply = make_message<MClientLease>(*m);
-+        auto reply = ceph::make_message<MClientLease>(*m);
- 	int pool = 1;   // fixme.. do something smart!
- 	reply->h.duration_ms = (int)(1000 * mdcache->client_lease_durations[pool]);
- 	reply->h.seq = ++l->seq;
---- ceph-20.2.0/src/mds/Server.cc.orig	2026-01-07 11:27:13.532097596 -0500
-+++ ceph-20.2.0/src/mds/Server.cc	2026-01-07 11:28:42.411581266 -0500
-@@ -150,7 +150,7 @@
-       }
-     }
-     batch_reqs.clear();
--    server->reply_client_request(mdr, make_message<MClientReply>(*mdr->client_request, r));
-+    server->reply_client_request(mdr, ceph::make_message<MClientReply>(*mdr->client_request, r));
-   }
-   void print(std::ostream& o) const override {
-     o << "[batch front=" << *mdr << "]";
-@@ -2142,7 +2142,7 @@
-       dout(20) << __func__ << ": batch head " << *mdr << dendl;
-       mdr->release_batch_op()->respond(r);
-     } else {
--     reply_client_request(mdr, make_message<MClientReply>(*mdr->client_request, r));
-+     reply_client_request(mdr, ceph::make_message<MClientReply>(*mdr->client_request, r));
-     }
-   } else if (mdr->internal_op > -1) {
-     dout(10) << __func__ << ": completing with result " << cpp_strerror(r) << " on internal " << *mdr << dendl;
-@@ -2290,7 +2290,7 @@
-   }
- 
- 
--  auto reply = make_message<MClientReply>(*req, 0);
-+  auto reply = ceph::make_message<MClientReply>(*req, 0);
-   reply->set_unsafe();
- 
-   // mark xlocks "done", indicating that we are exposing uncommitted changes.
-@@ -2632,7 +2632,7 @@
- 	   req->get_op() != CEPH_MDS_OP_OPEN &&
- 	   req->get_op() != CEPH_MDS_OP_CREATE)) {
- 	dout(5) << "already completed " << req->get_reqid() << dendl;
--        auto reply = make_message<MClientReply>(*req, 0);
-+        auto reply = ceph::make_message<MClientReply>(*req, 0);
- 	if (created != inodeno_t()) {
- 	  bufferlist extra;
- 	  set_reply_extra_bl(req, created, extra);
---- ceph-20.2.0/src/mds/MDCache.cc.orig	2026-01-07 11:28:48.882470871 -0500
-+++ ceph-20.2.0/src/mds/MDCache.cc	2026-01-07 11:29:12.405069562 -0500
-@@ -10535,7 +10535,7 @@
- 
- 
-   CInode *cur = 0;
--  auto reply = make_message<MDiscoverReply>(*dis);
-+  auto reply = ceph::make_message<MDiscoverReply>(*dis);
- 
-   snapid_t snapid = dis->get_snapid();
- 

diff --git a/0064-src-rgw-rgw_lua_utils.cc.patch b/0064-src-rgw-rgw_lua_utils.cc.patch
deleted file mode 100644
index 45750d4..0000000
--- a/0064-src-rgw-rgw_lua_utils.cc.patch
+++ /dev/null
@@ -1,14 +0,0 @@
---- ceph-20.2.0/src/rgw/rgw_lua_utils.cc.orig	2026-02-17 11:46:05.677894827 -0500
-+++ ceph-20.2.0/src/rgw/rgw_lua_utils.cc	2026-02-17 11:50:06.106569226 -0500
-@@ -115,7 +115,11 @@
- 
- // create new lua state together with reference to the guard
- lua_State* newstate(lua_state_guard* guard) {
-+#if (LUA_VERSION_NUM < 505)
-   lua_State* L = lua_newstate(allocator, guard);
-+#else
-+  lua_State* L = lua_newstate(allocator, guard, 314159);
-+#endif
-   if (L) {
-     lua_atpanic(L, [](lua_State* L) -> int {
-       const char* msg = lua_tostring(L, -1);

diff --git a/0065-src-os-memstore-CMakelists.txt.patch b/0065-src-os-memstore-CMakelists.txt.patch
new file mode 100644
index 0000000..d722b50
--- /dev/null
+++ b/0065-src-os-memstore-CMakelists.txt.patch
@@ -0,0 +1,10 @@
+--- ceph-20.3.0/src/os/memstore/CMakeLists.txt.orig	2026-03-17 11:19:40.790594587 -0400
++++ ceph-20.3.0/src/os/memstore/CMakeLists.txt	2026-03-17 11:19:49.669445856 -0400
+@@ -1,6 +1,6 @@
+ include(CheckCXXCompilerFlag)
+ 
+-add_library(memstore
++add_library(memstore STATIC
+   MemStore.cc)
+ target_link_libraries(memstore PRIVATE os)
+ check_cxx_compiler_flag("-Wno-maybe-uninitialized"

diff --git a/ceph.spec b/ceph.spec
index e96f38d..9308292 100644
--- a/ceph.spec
+++ b/ceph.spec
@@ -88,7 +88,7 @@
 %bcond_with lua_packages
 %endif
 %endif
-%bcond_with crimson
+%bcond_without crimson
 %if 0%{?suse_version}
 %bcond_with jaeger
 %else
@@ -143,13 +143,18 @@
 %global _find_debuginfo_dwz_opts %{nil}
 %endif
 %bcond_with sccache
+%if 0%{?rhel} && 0%{?rhel} >= 10
+%bcond_without pypkg
+%else
+%bcond_with pypkg
+%endif
 
 %{!?_udevrulesdir: %global _udevrulesdir /lib/udev/rules.d}
 %{!?tmpfiles_create: %global tmpfiles_create systemd-tmpfiles --create}
 %{!?python3_pkgversion: %global python3_pkgversion 3}
 %{!?python3_version_nodots: %global python3_version_nodots 3}
 %{!?python3_version: %global python3_version 3}
-### %define _lto_cflags %{nil}
+%define _lto_cflags %{nil}
 
 %if ! 0%{?suse_version}
 # use multi-threaded xz compression: xz level 7 using ncpus threads
@@ -157,6 +162,18 @@
 %global _binary_payload w7T%{_smp_build_ncpus}.xzdio
 %endif
 
+# $1==1: fresh install; $1==0: removal. Skip try-restart on upgrade ($1>1).
+%define ceph_mgr_module_scripts() \
+%post %1\
+if [ $1 -eq 1 ] ; then\
+    /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || :\
+fi\
+\
+%postun %1\
+if [ $1 -eq 1 ] ; then\
+    /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || :\
+fi
+
 %if 0%{?_smp_ncpus_max} == 0
 %if 0%{?__isa_bits} == 32
 # 32-bit builds can use 3G memory max, which is not enough even for -j2
@@ -179,8 +196,8 @@
 # main package definition
 #################################################################################
 Name:		ceph
-Version:	20.2.2
-Release:	3%{?dist}
+Version:	21.1.0
+Release:	1%{?dist}
 %if 0%{?fedora} || 0%{?rhel}
 Epoch:		2
 %endif
@@ -195,8 +212,8 @@ License:	LGPL-2.1-or-later AND LGPL-3.0-only AND CC-BY-SA-3.0 AND GPL-2.0-only A
 Group:		System/Filesystems
 %endif
 URL:		http://ceph.com/
-Source:		https://download.ceph.com/tarballs/ceph-%{version}.tar.gz
-#Source0:	https://1.chacra.ceph.com/r/ceph/tentacle/
+Source:	https://download.ceph.com/tarballs/ceph-%{version}.tar.gz
+#Source0:	https://1.chacra.ceph.com/r/ceph/umbrella/
 Patch:		0001-src-common-crc32c_intel_fast.patch
 Patch:		0003-src-common-bitstr.h.patch
 Patch:		0010-CET-Add-CET-marker-to-crc32c_intel_fast_zero_asm.s.patch
@@ -216,13 +233,10 @@ Patch:		0051-src-googletest-nosharedlibs.patch
 Patch:		0052-src-tracing.patch
 Patch:		0053-src-test-neorados-common_tests.h.patch
 Patch:		0056-libarrow-20.0.0.patch
-Patch:		0057-src-json_spirit-json_spirit_reader_template.h.patch
-Patch:		0058-src-CMakeLists.txt.patch
 Patch:		0059-iso646.patch
-Patch:		0061-gcc-16.patch
 Patch:		0062-src-rgw-driver-dbstore-CMakeLists.txt.patch
 Patch:		0063-src-jaegertracing-opentelemetry-cpp-CMakeLists.txt.patch
-Patch:		0064-src-rgw-rgw_lua_utils.cc.patch
+Patch:		0065-src-os-memstore-CMakelists.txt.patch
 
 # ceph 14.0.1 does not support 32-bit architectures, bugs #1727788, #1727787
 ExcludeArch:	i686 armv7hl
@@ -254,7 +268,7 @@ BuildRequires:	selinux-policy-devel
 %endif
 BuildRequires:	gperf
 BuildRequires:	cmake > 3.5
-BuildRequires:	fuse3-devel
+BuildRequires:	pkgconfig(fuse3)
 BuildRequires:	grpc-devel
 BuildRequires:	gcc-c++
 BuildRequires:	libzstd-devel
@@ -303,6 +317,8 @@ BuildRequires:	python%{python3_pkgversion}
 BuildRequires:	python%{python3_pkgversion}-devel
 BuildRequires:	python%{python3_pkgversion}-setuptools
 BuildRequires:	python%{python3_pkgversion}-Cython
+BuildRequires:	python%{python3_pkgversion}-pip
+BuildRequires:	python%{python3_pkgversion}-wheel
 BuildRequires:	snappy-devel
 BuildRequires:	sqlite-devel
 BuildRequires:	sudo
@@ -392,8 +408,8 @@ BuildRequires:	ragel
 BuildRequires:	systemtap-sdt-devel
 BuildRequires:	libubsan
 BuildRequires:	libasan
-BuildRequires:	protobuf3-devel
-BuildRequires:	protobuf3-compiler
+BuildRequires:	protobuf-devel
+BuildRequires:	protobuf-compiler
 %endif
 #################################################################################
 # distro-conditional dependencies
@@ -509,6 +525,8 @@ BuildRequires:	libnuma-devel
 %endif
 %endif
 BuildRequires:	python-rpm-macros
+# Catch2 v3 is catch in Fedora and EPEL. Crazy
+BuildRequires: catch-devel
 
 %description
 Ceph is a massively scalable, open-source, distributed storage system that runs
@@ -567,14 +585,39 @@ Requires:	which
 %if 0%{?weak_deps}
 Recommends:	podman >= 2.0.2
 %endif
+# Cephadm zipapp: CMake sets CEPHADM_BUNDLED_DEPENDENCIES to pip, rpm, or none
+# (see build / cmake block below):
+#  - with cephadm_bundling, with cephadm_pip_deps: pip at build, no stanzas here
+#  - with cephadm_bundling, without cephadm_pip_deps: build-time RPM deps only
+#  - without cephadm_bundling: unbundled cephadm, runtime Requires for yaml/jinja2
+# CentOS Storage SIG #75389 needs the unbundled branch (--without cephadm_bundling)
+# after dropping downstream patch 0036; pip-mode SIG builds are a separate SIG fix.
 %if 0%{with cephadm_bundling}
 %if 0%{without cephadm_pip_deps}
+# Zipapp built from system RPMs at build time; bundled zipapp is self-contained at runtime.
+# SUSE and RHEL/Fedora use different PyPI RPM names (Jinja2/PyYAML vs jinja2/pyyaml).
+%if 0%{?suse_version}
+BuildRequires:	python%{python3_pkgversion}-Jinja2 >= 2.10
+BuildRequires:	python%{python3_pkgversion}-PyYAML
+%else
 BuildRequires:	python%{python3_pkgversion}-jinja2 >= 2.10
+BuildRequires:	python%{python3_pkgversion}-pyyaml
+%endif
+%dnl suse/else: rpm bundle, distinct RPM names only (not duplicate stanzas)
 %endif
+%dnl end without cephadm_pip_deps (CEPHADM_BUNDLED_DEPENDENCIES=rpm)
+%else
+# Unbundled cephadm: host must provide yaml and jinja2 at runtime.
+%if 0%{?suse_version}
+Requires:	python%{python3_pkgversion}-Jinja2 >= 2.10
+Requires:	python%{python3_pkgversion}-PyYAML
 %else
 Requires:	python%{python3_pkgversion}-jinja2 >= 2.10
 Requires:	python%{python3_pkgversion}-pyyaml
 %endif
+%dnl suse/else: unbundled cephadm (CEPHADM_BUNDLED_DEPENDENCIES=none)
+%endif
+%dnl end with cephadm_bundling
 %description -n cephadm
 Utility to bootstrap a Ceph cluster and manage Ceph daemons deployed
 with systemd and podman.
@@ -656,11 +699,30 @@ Requires:	ceph-base = %{_epoch_prefix}%{version}-%{release}
 Requires:	ceph-mgr-modules-core = %{_epoch_prefix}%{version}-%{release}
 Requires:	libcephsqlite = %{_epoch_prefix}%{version}-%{release}
 %if 0%{?weak_deps}
+Recommends:	ceph-mgr-alerts = %{_epoch_prefix}%{version}-%{release}
+Recommends:	ceph-mgr-cephadm = %{_epoch_prefix}%{version}-%{release}
+Recommends:	ceph-mgr-cli-api = %{_epoch_prefix}%{version}-%{release}
 Recommends:	ceph-mgr-dashboard = %{_epoch_prefix}%{version}-%{release}
 Recommends:	ceph-mgr-diskprediction-local = %{_epoch_prefix}%{version}-%{release}
+Recommends:	ceph-mgr-influx = %{_epoch_prefix}%{version}-%{release}
+Recommends:	ceph-mgr-insights = %{_epoch_prefix}%{version}-%{release}
+Recommends:	ceph-mgr-iostat = %{_epoch_prefix}%{version}-%{release}
 Recommends:	ceph-mgr-k8sevents = %{_epoch_prefix}%{version}-%{release}
-Recommends:	ceph-mgr-cephadm = %{_epoch_prefix}%{version}-%{release}
-Recommends:	python%{python3_pkgversion}-influxdb
+Recommends:	ceph-mgr-localpool = %{_epoch_prefix}%{version}-%{release}
+Recommends:	ceph-mgr-mds-autoscaler = %{_epoch_prefix}%{version}-%{release}
+Recommends:	ceph-mgr-mirroring = %{_epoch_prefix}%{version}-%{release}
+Recommends:	ceph-mgr-nfs = %{_epoch_prefix}%{version}-%{release}
+Recommends:	ceph-mgr-nvmeof = %{_epoch_prefix}%{version}-%{release}
+Recommends:	ceph-mgr-osd-perf-query = %{_epoch_prefix}%{version}-%{release}
+Recommends:	ceph-mgr-osd-support = %{_epoch_prefix}%{version}-%{release}
+Recommends:	ceph-mgr-prometheus = %{_epoch_prefix}%{version}-%{release}
+Recommends:	ceph-mgr-rgw = %{_epoch_prefix}%{version}-%{release}
+Recommends:	ceph-mgr-selftest = %{_epoch_prefix}%{version}-%{release}
+Recommends:	ceph-mgr-smb = %{_epoch_prefix}%{version}-%{release}
+Recommends:	ceph-mgr-snap-schedule = %{_epoch_prefix}%{version}-%{release}
+Recommends:	ceph-mgr-stats = %{_epoch_prefix}%{version}-%{release}
+Recommends:	ceph-mgr-telegraf = %{_epoch_prefix}%{version}-%{release}
+Recommends:	ceph-mgr-test-orchestrator = %{_epoch_prefix}%{version}-%{release}
 %endif
 %description mgr
 ceph-mgr enables python modules that provide services (such as the REST
@@ -675,6 +737,7 @@ BuildArch:	noarch
 Group:		System/Filesystems
 %endif
 Requires:	ceph-mgr = %{_epoch_prefix}%{version}-%{release}
+Requires:	ceph-mgr-smb = %{_epoch_prefix}%{version}-%{release}
 Requires:	ceph-grafana-dashboards = %{_epoch_prefix}%{version}-%{release}
 Requires:	ceph-prometheus-alerts = %{_epoch_prefix}%{version}-%{release}
 %if 0%{?fedora} || 0%{?rhel}
@@ -727,18 +790,13 @@ BuildArch:	noarch
 %if 0%{?suse_version}
 Group:		System/Filesystems
 %endif
-Requires:	python%{python3_pkgversion}-bcrypt
-Requires:	python%{python3_pkgversion}-packaging
-Requires:	python%{python3_pkgversion}-pyOpenSSL
+Requires:	python%{python3_pkgversion}-prettytable
 Requires:	python%{python3_pkgversion}-requests
 Requires:	python%{python3_pkgversion}-dateutil
-Requires:	python%{python3_pkgversion}-setuptools
 %if 0%{?fedora} || 0%{?rhel}
-Requires:	python%{python3_pkgversion}-cherrypy
 Requires:	python%{python3_pkgversion}-pyyaml
 %endif
 %if 0%{?suse_version}
-Requires:	python%{python3_pkgversion}-CherryPy
 Requires:	python%{python3_pkgversion}-PyYAML
 %endif
 %if 0%{?weak_deps}
@@ -748,6 +806,38 @@ Recommends:	ceph-mgr-rook = %{_epoch_prefix}%{version}-%{release}
 ceph-mgr-modules-core provides a set of modules which are always
 enabled by ceph-mgr.
 
+%package mgr-modules-standard
+BuildArch:	noarch
+Summary:	Ceph Manager modules without heavy external dependencies
+%if 0%{?suse_version}
+Group:		System/Filesystems
+%endif
+Requires:	ceph-mgr-modules-core = %{_epoch_prefix}%{version}-%{release}
+Requires:	ceph-mgr-alerts = %{_epoch_prefix}%{version}-%{release}
+Requires:	ceph-mgr-influx = %{_epoch_prefix}%{version}-%{release}
+Requires:	ceph-mgr-insights = %{_epoch_prefix}%{version}-%{release}
+Requires:	ceph-mgr-iostat = %{_epoch_prefix}%{version}-%{release}
+Requires:	ceph-mgr-localpool = %{_epoch_prefix}%{version}-%{release}
+Requires:	ceph-mgr-mds-autoscaler = %{_epoch_prefix}%{version}-%{release}
+Requires:	ceph-mgr-mirroring = %{_epoch_prefix}%{version}-%{release}
+Requires:	ceph-mgr-nfs = %{_epoch_prefix}%{version}-%{release}
+Requires:	ceph-mgr-nvmeof = %{_epoch_prefix}%{version}-%{release}
+Requires:	ceph-mgr-osd-perf-query = %{_epoch_prefix}%{version}-%{release}
+Requires:	ceph-mgr-osd-support = %{_epoch_prefix}%{version}-%{release}
+Requires:	ceph-mgr-prometheus = %{_epoch_prefix}%{version}-%{release}
+Requires:	ceph-mgr-rgw = %{_epoch_prefix}%{version}-%{release}
+Requires:	ceph-mgr-selftest = %{_epoch_prefix}%{version}-%{release}
+Requires:	ceph-mgr-smb = %{_epoch_prefix}%{version}-%{release}
+Requires:	ceph-mgr-snap-schedule = %{_epoch_prefix}%{version}-%{release}
+Requires:	ceph-mgr-stats = %{_epoch_prefix}%{version}-%{release}
+Requires:	ceph-mgr-telegraf = %{_epoch_prefix}%{version}-%{release}
+Requires:	ceph-mgr-test-orchestrator = %{_epoch_prefix}%{version}-%{release}
+%description mgr-modules-standard
+ceph-mgr-modules-standard is a meta-package with no files of its own.
+It pulls in the full set of ceph-mgr modules that were formerly shipped
+together in ceph-mgr-modules-core, so that existing users or scripts
+that want the complete standard module set can depend on a single package.
+
 %package mgr-rook
 BuildArch:	noarch
 Summary:	Ceph Manager module for Rook-based orchestration
@@ -755,6 +845,7 @@ Summary:	Ceph Manager module for Rook-based orchestration
 Group:		System/Filesystems
 %endif
 Requires:	ceph-mgr = %{_epoch_prefix}%{version}-%{release}
+Requires:	ceph-mgr-nfs = %{_epoch_prefix}%{version}-%{release}
 Requires:	python%{python3_pkgversion}-kubernetes
 Requires:	python%{python3_pkgversion}-jsonpatch
 %description mgr-rook
@@ -797,6 +888,255 @@ Requires:	python%{python3_pkgversion}-jinja2
 ceph-mgr-cephadm is a ceph-mgr module for orchestration functions using
 the integrated cephadm deployment tool management operations.
 
+%package mgr-cli-api
+BuildArch:      noarch
+Summary:        Ceph Manager module providing a CLI REST API
+%if 0%{?suse_version}
+Group:          System/Filesystems
+%endif
+Requires:       ceph-mgr = %{_epoch_prefix}%{version}-%{release}
+%description mgr-cli-api
+ceph-mgr-cli-api is a ceph-mgr module that provides a REST-like API
+for the Ceph command-line interface.
+
+%package mgr-alerts
+BuildArch:      noarch
+Summary:        Ceph Manager module for sending alerts on health state changes
+%if 0%{?suse_version}
+Group:          System/Filesystems
+%endif
+Requires:       ceph-mgr = %{_epoch_prefix}%{version}-%{release}
+Obsoletes:      ceph-mgr-modules-core < %{_epoch_prefix}%{version}-%{release}
+%description mgr-alerts
+ceph-mgr-alerts is a ceph-mgr module that sends email notifications
+on cluster health state changes.
+
+%package mgr-influx
+BuildArch:      noarch
+Summary:        Ceph Manager module for sending metrics to InfluxDB
+%if 0%{?suse_version}
+Group:          System/Filesystems
+%endif
+Requires:       ceph-mgr = %{_epoch_prefix}%{version}-%{release}
+%if 0%{?weak_deps}
+Recommends:     python%{python3_pkgversion}-influxdb
+%endif
+Obsoletes:      ceph-mgr-modules-core < %{_epoch_prefix}%{version}-%{release}
+%description mgr-influx
+ceph-mgr-influx is a ceph-mgr module that sends performance metrics
+to an InfluxDB time-series database.
+
+%package mgr-insights
+BuildArch:      noarch
+Summary:        Ceph Manager module for recording cluster health history
+%if 0%{?suse_version}
+Group:          System/Filesystems
+%endif
+Requires:       ceph-mgr = %{_epoch_prefix}%{version}-%{release}
+Obsoletes:      ceph-mgr-modules-core < %{_epoch_prefix}%{version}-%{release}
+%description mgr-insights
+ceph-mgr-insights is a ceph-mgr module that records cluster health
+history to support cluster analysis.
+
+%package mgr-iostat
+BuildArch:      noarch
+Summary:        Ceph Manager module for displaying I/O statistics
+%if 0%{?suse_version}
+Group:          System/Filesystems
+%endif
+Requires:       ceph-mgr = %{_epoch_prefix}%{version}-%{release}
+Obsoletes:      ceph-mgr-modules-core < %{_epoch_prefix}%{version}-%{release}
+%description mgr-iostat
+ceph-mgr-iostat is a ceph-mgr module that displays a running summary
+of I/O statistics across the cluster.
+
+%package mgr-localpool
+BuildArch:      noarch
+Summary:        Ceph Manager module for creating per-host CRUSH rules and pools
+%if 0%{?suse_version}
+Group:          System/Filesystems
+%endif
+Requires:       ceph-mgr = %{_epoch_prefix}%{version}-%{release}
+Obsoletes:      ceph-mgr-modules-core < %{_epoch_prefix}%{version}-%{release}
+%description mgr-localpool
+ceph-mgr-localpool is a ceph-mgr module that automatically creates
+per-host CRUSH rules and pools.
+
+%package mgr-mds-autoscaler
+BuildArch:      noarch
+Summary:        Ceph Manager module for automatically scaling MDS daemons
+%if 0%{?suse_version}
+Group:          System/Filesystems
+%endif
+Requires:       ceph-mgr = %{_epoch_prefix}%{version}-%{release}
+Obsoletes:      ceph-mgr-modules-core < %{_epoch_prefix}%{version}-%{release}
+%description mgr-mds-autoscaler
+ceph-mgr-mds-autoscaler is a ceph-mgr module that automatically scales
+the number of MDS daemons based on file system needs.
+
+%package mgr-mirroring
+BuildArch:      noarch
+Summary:        Ceph Manager module for managing CephFS mirroring
+%if 0%{?suse_version}
+Group:          System/Filesystems
+%endif
+Requires:       ceph-mgr = %{_epoch_prefix}%{version}-%{release}
+Obsoletes:      ceph-mgr-modules-core < %{_epoch_prefix}%{version}-%{release}
+%description mgr-mirroring
+ceph-mgr-mirroring is a ceph-mgr module that provides management
+commands for CephFS mirroring.
+
+%package mgr-nfs
+BuildArch:      noarch
+Summary:        Ceph Manager module for managing NFS gateway deployments
+%if 0%{?suse_version}
+Group:          System/Filesystems
+%endif
+Requires:       ceph-mgr = %{_epoch_prefix}%{version}-%{release}
+Obsoletes:      ceph-mgr-modules-core < %{_epoch_prefix}%{version}-%{release}
+%description mgr-nfs
+ceph-mgr-nfs is a ceph-mgr module that manages NFS gateway deployments
+on top of CephFS and RGW.
+
+%package mgr-nvmeof
+BuildArch:      noarch
+Summary:        Ceph Manager module for managing NVMe-oF gateway deployments
+%if 0%{?suse_version}
+Group:          System/Filesystems
+%endif
+Requires:       ceph-mgr = %{_epoch_prefix}%{version}-%{release}
+Obsoletes:      ceph-mgr-modules-core < %{_epoch_prefix}%{version}-%{release}
+%description mgr-nvmeof
+ceph-mgr-nvmeof is a ceph-mgr module that manages NVMe-oF gateway
+deployments for Ceph RBD.
+
+%package mgr-osd-perf-query
+BuildArch:      noarch
+Summary:        Ceph Manager module for OSD performance counter queries
+%if 0%{?suse_version}
+Group:          System/Filesystems
+%endif
+Requires:       ceph-mgr = %{_epoch_prefix}%{version}-%{release}
+Requires:       python%{python3_pkgversion}-prettytable
+Obsoletes:      ceph-mgr-modules-core < %{_epoch_prefix}%{version}-%{release}
+%description mgr-osd-perf-query
+ceph-mgr-osd-perf-query is a ceph-mgr module that exposes OSD
+performance counter query functionality.
+
+%package mgr-osd-support
+BuildArch:      noarch
+Summary:        Ceph Manager module for additional OSD management commands
+%if 0%{?suse_version}
+Group:          System/Filesystems
+%endif
+Requires:       ceph-mgr = %{_epoch_prefix}%{version}-%{release}
+Obsoletes:      ceph-mgr-modules-core < %{_epoch_prefix}%{version}-%{release}
+%description mgr-osd-support
+ceph-mgr-osd-support is a ceph-mgr module that provides additional
+OSD management commands.
+
+%package mgr-prometheus
+BuildArch:      noarch
+Summary:        Ceph Manager module for exposing metrics to Prometheus
+%if 0%{?suse_version}
+Group:          System/Filesystems
+%endif
+Requires:       ceph-mgr = %{_epoch_prefix}%{version}-%{release}
+Obsoletes:      ceph-mgr-modules-core < %{_epoch_prefix}%{version}-%{release}
+%if 0%{?fedora} || 0%{?rhel} >= 8 || 0%{?openEuler}
+Requires:       python%{python3_pkgversion}-cherrypy
+%endif
+%if 0%{?suse_version}
+Requires:       python%{python3_pkgversion}-CherryPy
+%endif
+%description mgr-prometheus
+ceph-mgr-prometheus is a ceph-mgr module that exposes cluster metrics
+in Prometheus exposition format.
+
+%package mgr-rgw
+BuildArch:      noarch
+Summary:        Ceph Manager module for RADOS Gateway management
+%if 0%{?suse_version}
+Group:          System/Filesystems
+%endif
+Requires:       ceph-mgr = %{_epoch_prefix}%{version}-%{release}
+Obsoletes:      ceph-mgr-modules-core < %{_epoch_prefix}%{version}-%{release}
+%description mgr-rgw
+ceph-mgr-rgw is a ceph-mgr module that provides management and status
+commands for the RADOS Gateway.
+
+%package mgr-selftest
+BuildArch:      noarch
+Summary:        Ceph Manager module for testing the manager framework
+%if 0%{?suse_version}
+Group:          System/Filesystems
+%endif
+Requires:       ceph-mgr = %{_epoch_prefix}%{version}-%{release}
+Obsoletes:      ceph-mgr-modules-core < %{_epoch_prefix}%{version}-%{release}
+%description mgr-selftest
+ceph-mgr-selftest is a ceph-mgr module used for testing the manager
+framework.
+
+%package mgr-smb
+BuildArch:      noarch
+Summary:        Ceph Manager module for managing SMB gateway deployments
+%if 0%{?suse_version}
+Group:          System/Filesystems
+%endif
+Requires:       ceph-mgr = %{_epoch_prefix}%{version}-%{release}
+Obsoletes:      ceph-mgr-modules-core < %{_epoch_prefix}%{version}-%{release}
+%description mgr-smb
+ceph-mgr-smb is a ceph-mgr module that manages SMB gateway
+deployments on Ceph.
+
+%package mgr-snap-schedule
+BuildArch:      noarch
+Summary:        Ceph Manager module for automated CephFS snapshot schedules
+%if 0%{?suse_version}
+Group:          System/Filesystems
+%endif
+Requires:       ceph-mgr = %{_epoch_prefix}%{version}-%{release}
+Obsoletes:      ceph-mgr-modules-core < %{_epoch_prefix}%{version}-%{release}
+%description mgr-snap-schedule
+ceph-mgr-snap-schedule is a ceph-mgr module that manages automated
+CephFS snapshot schedules.
+
+%package mgr-stats
+BuildArch:      noarch
+Summary:        Ceph Manager module for exposing file system client I/O statistics
+%if 0%{?suse_version}
+Group:          System/Filesystems
+%endif
+Requires:       ceph-mgr = %{_epoch_prefix}%{version}-%{release}
+Obsoletes:      ceph-mgr-modules-core < %{_epoch_prefix}%{version}-%{release}
+%description mgr-stats
+ceph-mgr-stats is a ceph-mgr module that exposes file system client
+I/O statistics.
+
+%package mgr-telegraf
+BuildArch:      noarch
+Summary:        Ceph Manager module for sending metrics to Telegraf
+%if 0%{?suse_version}
+Group:          System/Filesystems
+%endif
+Requires:       ceph-mgr = %{_epoch_prefix}%{version}-%{release}
+Obsoletes:      ceph-mgr-modules-core < %{_epoch_prefix}%{version}-%{release}
+%description mgr-telegraf
+ceph-mgr-telegraf is a ceph-mgr module that sends performance metrics
+to a Telegraf agent.
+
+%package mgr-test-orchestrator
+BuildArch:      noarch
+Summary:        Ceph Manager module for testing the orchestrator framework
+%if 0%{?suse_version}
+Group:          System/Filesystems
+%endif
+Requires:       ceph-mgr = %{_epoch_prefix}%{version}-%{release}
+Obsoletes:      ceph-mgr-modules-core < %{_epoch_prefix}%{version}-%{release}
+%description mgr-test-orchestrator
+ceph-mgr-test-orchestrator is a ceph-mgr module used for testing the
+orchestrator framework.
+
 %package fuse
 Summary:	Ceph fuse-based client
 %if 0%{?suse_version}
@@ -921,28 +1261,50 @@ Summary:	Ceph Object Storage Daemon
 Group:		System/Filesystems
 %endif
 Requires:	ceph-base = %{_epoch_prefix}%{version}-%{release}
-Requires:	sudo
-Requires:	libstoragemgmt
+Requires:	ceph-osd-classic = %{_epoch_prefix}%{version}-%{release}
 %if 0%{with crimson}
-Requires:	protobuf3
+Requires:	protobuf
+Requires:	ceph-osd-crimson = %{_epoch_prefix}%{version}-%{release}
 %endif
+Requires:	sudo
+Requires:	libstoragemgmt
 %if 0%{?weak_deps}
 Recommends:	ceph-volume = %{_epoch_prefix}%{version}-%{release}
 %endif
 %description osd
 ceph-osd is the object storage daemon for the Ceph distributed file
+system.  It provides components shared between classic and crimson OSD
+implementations. It requires either the classic or crimson OSD
+to provide the core OSD daemon.
+
+%package osd-classic
+Summary:	Ceph Object Storage Daemon (classic)
+%if 0%{?suse_version}
+Group: System/Filesystems
+%endif
+Requires:	ceph-osd = %{_epoch_prefix}%{version}-%{release}
+Obsoletes:	ceph-osd < %{_epoch_prefix}%{version}-%{release}
+# libcares.so.2 doesn't carry the version, and only EL crosses 1.28 between a
+# rolling builder and a frozen older minor, so pin the c-ares floor there.
+%if 0%{?rhel} >= 10
+Requires:	c-ares%{?_isa} >= 1.28.0
+%endif
+%description osd-classic
+classic-osd is the object storage daemon for the Ceph distributed file
 system.  It is responsible for storing objects on a local file system
 and providing access to them over the network.
 
 %if 0%{with crimson}
-%package crimson-osd
+%package osd-crimson
 Summary:	Ceph Object Storage Daemon (crimson)
 %if 0%{?suse_version}
 Group:		System/Filesystems
 %endif
 Requires:	ceph-osd = %{_epoch_prefix}%{version}-%{release}
+Obsoletes:	ceph-osd = %{_epoch_prefix}%{version}-%{release}
 Requires:	binutils
-%description crimson-osd
+Requires:	protobuf
+%description osd-crimson
 crimson-osd is the object storage daemon for the Ceph distributed file
 system.  It is responsible for storing objects on a local file system
 and providing access to them over the network.
@@ -1241,6 +1603,9 @@ descriptions, and submitting the command to the appropriate daemon.
 Summary:	Python 3 utility libraries for Ceph
 %if 0%{?fedora} || 0%{?rhel}
 Requires:	python%{python3_pkgversion}-pyyaml
+%if %{with pypkg}
+Recommends:	python%{python3_pkgversion}-ceph-smb-ctl
+%endif
 %endif
 %if 0%{?suse_version}
 Requires:	python%{python3_pkgversion}-PyYAML
@@ -1389,6 +1754,22 @@ Group:		System/Monitoring
 %description node-proxy
 This package provides a Ceph hardware monitoring agent.
 
+%if %{with pypkg}
+%package -n python%{python3_pkgversion}-ceph-smb-ctl
+Summary:	Ceph SMB Service Remote-Control Client
+BuildArch:	noarch
+%if 0%{?suse_version}
+Group:		System/Filesystems
+%endif
+Requires:	python%{python3_pkgversion}-ceph-common = %{_epoch_prefix}%{version}-%{release}
+Requires:	python%{python3_pkgversion}-grpcio
+Requires:	python%{python3_pkgversion}-grpcio-reflection
+%description -n python%{python3_pkgversion}-ceph-smb-ctl
+This package provides a tool to interact with Ceph's SMB Service Remote-Control
+gRPC API as a client.
+%endif
+%dnl end package python%{python3_pkgversion}-ceph-smb-ctl
+
 #################################################################################
 # common
 #################################################################################
@@ -1450,6 +1831,7 @@ env | sort
 %if 0%{without ceph_test_package}
     -DWITH_TESTS:BOOL=OFF \
 %endif
+    -DWITH_SYSTEM_CATCH2=ON \
 %if 0%{with cephfs_java}
     -DJAVA_HOME=%{java_home} \
     -DJAVA_LIB_INSTALL_DIR=%{_jnidir} \
@@ -1552,6 +1934,9 @@ env | sort
 %if %{with sccache}
     -DWITH_SCCACHE=ON \
 %endif
+%if 0%{with pypkg}
+    -DWITH_PYPKG:BOOL=ON \
+%endif
 %ifarch aarch64
     -DWITH_UADK:BOOL=OFF \
 %endif
@@ -1588,9 +1973,9 @@ export GCC_COLORS=
 rm -f %{buildroot}/%{_sysconfdir}/init.d/ceph
 
 %if 0%{with crimson}
-# package crimson-osd with the name of ceph-osd
-install -m 0755 %{buildroot}%{_bindir}/crimson-osd %{buildroot}%{_bindir}/ceph-osd
+mv %{buildroot}%{_bindir}/crimson-osd %{buildroot}%{_bindir}/ceph-osd-crimson
 %endif
+mv %{buildroot}%{_bindir}/ceph-osd %{buildroot}%{_bindir}/ceph-osd-classic
 
 install -m 0644 -D src/etc-rbdmap %{buildroot}%{_sysconfdir}/ceph/rbdmap
 %if 0%{?fedora} || 0%{?rhel}
@@ -1778,6 +2163,7 @@ fi
 %{_bindir}/cephfs-data-scan
 %{_bindir}/cephfs-journal-tool
 %{_bindir}/cephfs-table-tool
+%{_bindir}/cephfs-tool
 %{_bindir}/crushdiff
 %{_bindir}/rados
 %{_bindir}/radosgw-admin
@@ -1866,13 +2252,6 @@ exit 0
 %post common
 %tmpfiles_create %{_tmpfilesdir}/ceph-common.conf
 
-%postun common
-# Package removal cleanup
-if [ "$1" -eq "0" ] ; then
-    rm -rf %{_localstatedir}/log/ceph
-    rm -rf %{_sysconfdir}/ceph
-fi
-
 %files mds
 %{_bindir}/ceph-mds
 %{_mandir}/man8/ceph-mds.8*
@@ -1964,98 +2343,142 @@ fi
 %files mgr-dashboard
 %{_datadir}/ceph/mgr/dashboard
 
-%post mgr-dashboard
-if [ $1 -eq 1 ] ; then
-    /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || :
-fi
-
-%postun mgr-dashboard
-if [ $1 -eq 1 ] ; then
-    /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || :
-fi
+%ceph_mgr_module_scripts mgr-dashboard
 
 %files mgr-diskprediction-local
 %{_datadir}/ceph/mgr/diskprediction_local
 
-%post mgr-diskprediction-local
-if [ $1 -eq 1 ] ; then
-    /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || :
-fi
-
-%postun mgr-diskprediction-local
-if [ $1 -eq 1 ] ; then
-    /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || :
-fi
+%ceph_mgr_module_scripts mgr-diskprediction-local
 
 %files mgr-modules-core
 %dir %{_datadir}/ceph/mgr
-%{_datadir}/ceph/mgr/alerts
 %{_datadir}/ceph/mgr/balancer
 %{_datadir}/ceph/mgr/crash
 %{_datadir}/ceph/mgr/devicehealth
+%{_datadir}/ceph/mgr/orchestrator
+%{_datadir}/ceph/mgr/pg_autoscaler
+%{_datadir}/ceph/mgr/progress
+%{_datadir}/ceph/mgr/rbd_support
+%{_datadir}/ceph/mgr/status
+%{_datadir}/ceph/mgr/telemetry
+%{_datadir}/ceph/mgr/volumes
+
+%files mgr-modules-standard
+
+%files mgr-alerts
+%{_datadir}/ceph/mgr/alerts
+
+%ceph_mgr_module_scripts mgr-alerts
+
+%files mgr-influx
 %{_datadir}/ceph/mgr/influx
+
+%ceph_mgr_module_scripts mgr-influx
+
+%files mgr-insights
 %{_datadir}/ceph/mgr/insights
+
+%ceph_mgr_module_scripts mgr-insights
+
+%files mgr-iostat
 %{_datadir}/ceph/mgr/iostat
+
+%ceph_mgr_module_scripts mgr-iostat
+
+%files mgr-localpool
 %{_datadir}/ceph/mgr/localpool
+
+%ceph_mgr_module_scripts mgr-localpool
+
+%files mgr-mds-autoscaler
 %{_datadir}/ceph/mgr/mds_autoscaler
+
+%ceph_mgr_module_scripts mgr-mds-autoscaler
+
+%files mgr-mirroring
 %{_datadir}/ceph/mgr/mirroring
+
+%ceph_mgr_module_scripts mgr-mirroring
+
+%files mgr-nfs
 %{_datadir}/ceph/mgr/nfs
-%{_datadir}/ceph/mgr/orchestrator
+
+%ceph_mgr_module_scripts mgr-nfs
+
+%files mgr-nvmeof
+%{_datadir}/ceph/mgr/nvmeof
+
+%ceph_mgr_module_scripts mgr-nvmeof
+
+%files mgr-osd-perf-query
 %{_datadir}/ceph/mgr/osd_perf_query
+
+%ceph_mgr_module_scripts mgr-osd-perf-query
+
+%files mgr-osd-support
 %{_datadir}/ceph/mgr/osd_support
-%{_datadir}/ceph/mgr/pg_autoscaler
-%{_datadir}/ceph/mgr/progress
+
+%ceph_mgr_module_scripts mgr-osd-support
+
+%files mgr-prometheus
 %{_datadir}/ceph/mgr/prometheus
-%{_datadir}/ceph/mgr/rbd_support
+
+%ceph_mgr_module_scripts mgr-prometheus
+
+%files mgr-rgw
 %{_datadir}/ceph/mgr/rgw
+
+%ceph_mgr_module_scripts mgr-rgw
+
+%files mgr-selftest
 %{_datadir}/ceph/mgr/selftest
+
+%ceph_mgr_module_scripts mgr-selftest
+
+%files mgr-smb
 %{_datadir}/ceph/mgr/smb
+
+%ceph_mgr_module_scripts mgr-smb
+
+%files mgr-snap-schedule
 %{_datadir}/ceph/mgr/snap_schedule
+
+%ceph_mgr_module_scripts mgr-snap-schedule
+
+%files mgr-stats
 %{_datadir}/ceph/mgr/stats
-%{_datadir}/ceph/mgr/status
+
+%ceph_mgr_module_scripts mgr-stats
+
+%files mgr-telegraf
 %{_datadir}/ceph/mgr/telegraf
-%{_datadir}/ceph/mgr/telemetry
+
+%ceph_mgr_module_scripts mgr-telegraf
+
+%files mgr-test-orchestrator
 %{_datadir}/ceph/mgr/test_orchestrator
-%{_datadir}/ceph/mgr/volumes
+
+%ceph_mgr_module_scripts mgr-test-orchestrator
 
 %files mgr-rook
 %{_datadir}/ceph/mgr/rook
 
-%post mgr-rook
-if [ $1 -eq 1 ] ; then
-    /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || :
-fi
-
-%postun mgr-rook
-if [ $1 -eq 1 ] ; then
-    /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || :
-fi
+%ceph_mgr_module_scripts mgr-rook
 
 %files mgr-k8sevents
 %{_datadir}/ceph/mgr/k8sevents
 
-%post mgr-k8sevents
-if [ $1 -eq 1 ] ; then
-    /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || :
-fi
-
-%postun mgr-k8sevents
-if [ $1 -eq 1 ] ; then
-    /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || :
-fi
+%ceph_mgr_module_scripts mgr-k8sevents
 
 %files mgr-cephadm
 %{_datadir}/ceph/mgr/cephadm
 
-%post mgr-cephadm
-if [ $1 -eq 1 ] ; then
-    /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || :
-fi
+%ceph_mgr_module_scripts mgr-cephadm
 
-%postun mgr-cephadm
-if [ $1 -eq 1 ] ; then
-    /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || :
-fi
+%files mgr-cli-api
+%{_datadir}/ceph/mgr/cli_api
+
+%ceph_mgr_module_scripts mgr-cli-api
 
 %files mon
 %{_bindir}/ceph-mon
@@ -2152,9 +2575,9 @@ if [ $1 -ge 1 ] ; then
   fi
 fi
 
-%files -n ceph-exporter
+%files exporter
 %{_bindir}/ceph-exporter
-%{_unitdir}/ceph-exporter.service
+%{_unitdir}/ceph-exporter@.service
 
 %files -n rbd-fuse
 %{_bindir}/rbd-fuse
@@ -2298,17 +2721,12 @@ fi
 
 %files osd
 %{_bindir}/ceph-clsinfo
-%{_bindir}/ceph-bluestore-tool
 %{_bindir}/ceph-erasure-code-tool
-%{_bindir}/ceph-objectstore-tool
-%{_bindir}/ceph-osd
 %{_libexecdir}/ceph/ceph-osd-prestart.sh
 %{_mandir}/man8/ceph-clsinfo.8*
 %{_mandir}/man8/ceph-osd.8*
-%{_mandir}/man8/ceph-bluestore-tool.8*
 %{_unitdir}/ceph-osd@.service
 %{_unitdir}/ceph-osd.target
-%attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/osd
 %config(noreplace) %{_sysctldir}/90-ceph-osd.conf
 
 %post osd
@@ -2347,11 +2765,37 @@ if [ $1 -ge 1 ] ; then
   fi
 fi
 
+%files osd-classic
+%{_bindir}/ceph-bluestore-tool
+%{_bindir}/ceph-objectstore-tool
+%{_bindir}/ceph-osd-classic
+%{_mandir}/man8/ceph-bluestore-tool.8*
+%attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/osd
+
 %if 0%{with crimson}
-%files crimson-osd
-%{_bindir}/crimson-osd
+%files osd-crimson
+%{_bindir}/ceph-osd-crimson
+%{_bindir}/crimson-objectstore-tool
+
+%posttrans osd-crimson
+%{_sbindir}/update-alternatives --install %{_bindir}/ceph-osd ceph-osd \
+    %{_bindir}/ceph-osd-crimson 50
+
+%preun osd-crimson
+if [ $1 -eq 0 ]; then
+    ${_sbindir}/update-alternatives --remove ceph-osd %{_bindir}/ceph-osd-crimson
+fi
 %endif
 
++%posttrans osd-classic
+%{_sbindir}/update-alternatives --install %{_bindir}/ceph-osd ceph-osd \
+    %{_bindir}/ceph-osd-classic 100
+
+%preun osd-classic
+if [ $1 -eq 0 ]; then
+    ${_sbindir}/update-alternatives --remove ceph-osd %{_bindir}/ceph-osd-classic
+fi
+
 %files volume
 %{_sbindir}/ceph-volume
 %{_sbindir}/ceph-volume-systemd
@@ -2437,10 +2881,12 @@ fi
 %{_includedir}/rados/librados_fwd.hpp
 %{_includedir}/rados/page.h
 %{_includedir}/rados/rados_types.hpp
+%{_includedir}/rados/cls_flags.hpp
+%{_includedir}/rados/cls_traits.hpp
 
 %files -n python%{python3_pkgversion}-rados
 %{python3_sitearch}/rados.cpython*.so
-%{python3_sitearch}/rados-*.egg-info
+%{python3_sitearch}/rados-*.dist-info
 
 %files -n libcephsqlite
 %{_libdir}/libcephsqlite.so
@@ -2505,11 +2951,11 @@ fi
 
 %files -n python%{python3_pkgversion}-rgw
 %{python3_sitearch}/rgw.cpython*.so
-%{python3_sitearch}/rgw-*.egg-info
+%{python3_sitearch}/rgw-*.dist-info
 
 %files -n python%{python3_pkgversion}-rbd
 %{python3_sitearch}/rbd.cpython*.so
-%{python3_sitearch}/rbd-*.egg-info
+%{python3_sitearch}/rbd-*.dist-info
 
 %files -n libcephfs2
 %{_libdir}/libcephfs.so.*
@@ -2534,13 +2980,16 @@ fi
 %{_includedir}/cephfs/types.h
 %dir %{_includedir}/cephfs/metrics
 %{_includedir}/cephfs/metrics/Types.h
+%{_includedir}/cephfs/dump.h
+%{_includedir}/cephfs/json.h
+%{_includedir}/cephfs/keys_and_values.h
 %{_libdir}/libcephfs.so
 %{_libdir}/libcephfs_proxy.so
 %{_libdir}/pkgconfig/cephfs.pc
 
 %files -n python%{python3_pkgversion}-cephfs
 %{python3_sitearch}/cephfs.cpython*.so
-%{python3_sitearch}/cephfs-*.egg-info
+%{python3_sitearch}/cephfs-*.dist-info
 
 %files -n python%{python3_pkgversion}-ceph-argparse
 %{python3_sitelib}/ceph_argparse.py
@@ -2550,7 +2999,7 @@ fi
 
 %files -n python%{python3_pkgversion}-ceph-common
 %{python3_sitelib}/ceph
-%{python3_sitelib}/ceph-*.egg-info
+%{python3_sitelib}/ceph-*.%{?with_pypkg:dist}%{!?with_pypkg:egg}-info
 
 %if 0%{with cephfs_shell}
 %files -n cephfs-shell
@@ -2572,12 +3021,12 @@ fi
 %{_bindir}/ceph_erasure_code_benchmark
 %{_bindir}/ceph_omapbench
 %{_bindir}/ceph_objectstore_bench
+%{_bindir}/ceph_ec_consistency_checker
 %{_bindir}/ceph_perf_objectstore
 %{_bindir}/ceph_perf_local
 %{_bindir}/ceph_perf_msgr_client
 %{_bindir}/ceph_perf_msgr_server
 %{_bindir}/ceph_psim
-%{_bindir}/ceph_radosacl
 %{_bindir}/ceph_rgw_jsonparser
 %{_bindir}/ceph_rgw_multiparser
 %{_bindir}/ceph_scratchtool
@@ -2589,6 +3038,7 @@ fi
 %{_bindir}/ceph-dedup-daemon
 %if 0%{with crimson}
 %{_bindir}/crimson-store-nbd
+%{_bindir}/crimson-store-bench
 %endif
 %{_mandir}/man8/ceph-debugpack.8*
 %dir %{_libdir}/ceph
@@ -2744,7 +3194,15 @@ exit 0
 %{python3_sitelib}/ceph_node_proxy/*
 %{python3_sitelib}/ceph_node_proxy-*
 
+%if %{with pypkg}
+%files -n python%{python3_pkgversion}-ceph-smb-ctl
+%{_bindir}/ceph-smb-ctl
+%endif
+
 %changelog
+* Mon Jul 20 2026 Kaleb S. KEITHLEY <kkeithle[at]redhat.com> - 2:21.1.0-1
+- ceph-21.1.0 RC0
+
 * Wed Jul 15 2026 Fedora Release Engineering <releng@fedoraproject.org> - 2:20.2.2-3
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild
 
@@ -2768,10 +3226,10 @@ exit 0
 
 * Tue Apr 28 2026 Kaleb S. KEITHLEY <kkeithle[at]redhat.com> - 2:20.2.1-2
 - Ceph 20.2.1, enable LTO
- 
+
 * Mon Apr 6 2026 Kaleb S. KEITHLEY <kkeithle[at]redhat.com> - 2:20.2.1-1
 - Ceph 20.2.1 GA
- 
+
 * Tue Mar 17 2026 Kaleb S. KEITHLEY <kkeithle[at]redhat.com> - 2:20.2.0-10
 - Requires: fuse -> fuse3
 

diff --git a/sources b/sources
index ebb0115..a5ffe0f 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (ceph-20.2.2.tar.gz) = 1977f384d2af5fde2a795e2eed71c12f519f1a2036ceb2e383c8534feca509740d744e99e77b73488f8e13193a83c7134e407fb6b21c4ba4c1f9ac9752b16fbc
+SHA512 (ceph-21.1.0.tar.gz) = 23e0c3904cb043d267c53c608ebee4f933aa63d5b09a9038a2d024d13bb3fbd92b470973c53fff5392e21fe023f28b832617dbc1d53aad5d62d1ae9f2a2e007f

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2026-07-20 18:17 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-07-20 18:17 [rpms/ceph] rawhide: ceph-21.1.0 RC0 Kaleb S. KEITHLEY

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox