[packages/ceph] - up to 19.2.3 with upstream fixes for rgw driver

baggins baggins at pld-linux.org
Wed Oct 15 09:58:30 CEST 2025


commit 8d8b0c0baeabef46319c53e4ec02cc87d55fe225
Author: Jan Rękorajski <baggins at pld-linux.org>
Date:   Wed Oct 15 11:58:07 2025 +0200

    - up to 19.2.3 with upstream fixes for rgw driver

 ceph.spec |   6 +-
 rgw.patch | 331 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 335 insertions(+), 2 deletions(-)
---
diff --git a/ceph.spec b/ceph.spec
index 589b1dd..903dbb1 100644
--- a/ceph.spec
+++ b/ceph.spec
@@ -53,12 +53,12 @@
 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:	19.2.2
+Version:	19.2.3
 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:	7c76143f9acf7be367559a2376cc646d
+# Source0-md5:	6e7082b1ad93745bb28094ae7d72c77f
 Source1:	%{name}.sysconfig
 Source3:	%{name}.tmpfiles
 Patch0:		%{name}-python.patch
@@ -81,6 +81,7 @@ Patch15:	x32.patch
 Patch16:	ix86.patch
 Patch17:	no-python-deps.patch
 Patch18:	install-cpp_redis.patch
+Patch19:	rgw.patch
 URL:		https://ceph.io/
 %{?with_qatzip:BuildRequires:	QATzip-devel}
 %{?with_babeltrace:BuildRequires:	babeltrace-devel}
@@ -363,6 +364,7 @@ uruchamiania demonów.
 %patch -P 16 -p1
 %patch -P 17 -p1
 %patch -P 18 -p1
+%patch -P 19 -p1
 
 %{__sed} -i -e '1s,/usr/bin/env bash,/bin/bash,' \
 	src/{ceph-post-file.in,rbd-replay-many,rbdmap} \
diff --git a/rgw.patch b/rgw.patch
new file mode 100644
index 0000000..b1dadfc
--- /dev/null
+++ b/rgw.patch
@@ -0,0 +1,331 @@
+From 830925f0dd196f920893b1947ae74171a202e825 Mon Sep 17 00:00:00 2001
+From: Kefu Chai <tchaikov at gmail.com>
+Date: Mon, 13 May 2024 08:16:46 +0800
+Subject: [PATCH] rgw/driver/posix: s/is_value()/success()/
+
+we have following build failure when building the tree:
+```
+ /home/kefu/dev/ceph/src/rgw/driver/posix/zpp_bits.h:3457:19: error: no member named 'is_value' in 'value_or_errc<Type>'
+  3457 |         if (other.is_value()) {
+       |             ~~~~~ ^
+ In file included from /home/kefu/dev/ceph/src/rgw/driver/posix/rgw_sal_posix.cc:16:
+ In file included from /home/kefu/dev/ceph/src/rgw/driver/posix/rgw_sal_posix.h:22:
+```
+it turns out the class of `value_or_errc` does not have the member
+function of `is_value()`, so let's use `success()` instead.
+
+Signed-off-by: Kefu Chai <tchaikov at gmail.com>
+---
+ src/rgw/driver/posix/zpp_bits.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/rgw/driver/posix/zpp_bits.h b/src/rgw/driver/posix/zpp_bits.h
+index 90e8916b0b055..c9e99ec59c2f4 100644
+--- a/src/rgw/driver/posix/zpp_bits.h
++++ b/src/rgw/driver/posix/zpp_bits.h
+@@ -3454,7 +3454,7 @@ struct [[nodiscard]] value_or_errc
+ 
+     constexpr value_or_errc(value_or_errc && other) noexcept
+     {
+-        if (other.is_value()) {
++        if (other.success()) {
+             if constexpr (!std::is_void_v<Type>) {
+                 if constexpr (!std::is_reference_v<Type>) {
+                     ::new (std::addressof(m_return_value))
+From 9b8d72f15a9b3529d7700aca5aa09d681a1917e1 Mon Sep 17 00:00:00 2001
+From: Daniel Gryniewicz <dang at fprintf.net>
+Date: Tue, 6 Aug 2024 08:19:20 -0400
+Subject: [PATCH] RGW - Zipper: pull in upstream fix for zpp_bits
+
+zpp_bits included code that required a newere compiler.  Pull in the
+upstream fix from:
+
+https://github.com/eyalz800/zpp_bits/pull/170
+
+Fixes: https://tracker.ceph.com/issues/67321
+
+Signed-off-by: Daniel Gryniewicz <dang at fprintf.net>
+---
+ src/rgw/driver/posix/zpp_bits.h | 16 ++++++++--------
+ 1 file changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/src/rgw/driver/posix/zpp_bits.h b/src/rgw/driver/posix/zpp_bits.h
+index c9e99ec59c2f4..229b0d6d20d99 100644
+--- a/src/rgw/driver/posix/zpp_bits.h
++++ b/src/rgw/driver/posix/zpp_bits.h
+@@ -3752,16 +3752,16 @@ struct bind_opaque
+                 requires(decltype(in.remaining_data()) & data) {
+                     (context.*Function)(data);
+                 }) {
+-                struct _
++                struct guard
+                 {
+                     decltype(in) archive;
+                     decltype(in.remaining_data()) data;
+-                    constexpr ~_()
++                    constexpr ~guard()
+                     {
+                         archive.position() += data.size();
+                     }
+-                } _{in, in.remaining_data()};
+-                return (context.*Function)(_.data);
++                } guard{in, in.remaining_data()};
++                return (context.*Function)(guard.data);
+             } else {
+                 return (context.*Function)();
+             }
+@@ -3776,16 +3776,16 @@ struct bind_opaque
+                 requires(decltype(in.remaining_data()) & data) {
+                     Function(data);
+                 }) {
+-                struct _
++                struct guard
+                 {
+                     decltype(in) archive;
+                     decltype(in.remaining_data()) data;
+-                    constexpr ~_()
++                    constexpr ~guard()
+                     {
+                         archive.position() += data.size();
+                     }
+-                } _{in, in.remaining_data()};
+-                return Function(_.data);
++                } guard{in, in.remaining_data()};
++                return Function(guard.data);
+             } else {
+                 return Function();
+             }
+From 3fcd35367283beee3c02b73dc77b7c51028d59dc Mon Sep 17 00:00:00 2001
+From: Matt Benjamin <mbenjamin at redhat.com>
+Date: Tue, 28 Jan 2025 15:07:06 -0500
+Subject: [PATCH] rgw: update to latest zpp_bits.h to compile w/gcc-14 & clang
+ 19
+
+Fixes: https://tracker.ceph.com/issues/69696
+
+Signed-off-by: Matt Benjamin <mbenjamin at redhat.com>
+---
+ src/rgw/driver/posix/zpp_bits.h | 129 ++++++++++++++------------------
+ 1 file changed, 58 insertions(+), 71 deletions(-)
+
+diff --git a/src/rgw/driver/posix/zpp_bits.h b/src/rgw/driver/posix/zpp_bits.h
+index 229b0d6d20d99..b319aa8f3fb8f 100644
+--- a/src/rgw/driver/posix/zpp_bits.h
++++ b/src/rgw/driver/posix/zpp_bits.h
+@@ -1,10 +1,3 @@
+-/*
+-MIT License
+-
+-Copyright (c) 2021 Eyal Z
+-
+-Permission is hereby granted, free of charge, to any person obtaining a copy
+-*/
+ #ifndef ZPP_BITS_H
+ #define ZPP_BITS_H
+ 
+@@ -2687,8 +2680,12 @@ class in
+     {
+         using type = std::remove_cvref_t<decltype(container)>;
+         using value_type = typename type::value_type;
+-        constexpr auto is_const = std::is_const_v<
+-            std::remove_reference_t<decltype(container[0])>>;
++        constexpr auto is_const =
++            std::is_const_v<std::remove_reference_t<value_type>> ||
++            requires {
++                requires std::is_const_v<
++                    std::remove_reference_t<decltype(container[0])>>;
++            };
+ 
+         if constexpr (!std::is_void_v<SizeType> &&
+                       (requires(type container) { container.resize(1); } ||
+@@ -2827,9 +2824,7 @@ class in
+             if constexpr (requires { typename type::mapped_type; }) {
+                 using value_type = std::pair<typename type::key_type,
+                                              typename type::mapped_type>;
+-                std::aligned_storage_t<sizeof(value_type),
+-                                       alignof(value_type)>
+-                    storage;
++                alignas(value_type) std::byte storage[sizeof(value_type)];
+ 
+                 auto object = access::placement_new<value_type>(
+                     std::addressof(storage));
+@@ -2843,9 +2838,7 @@ class in
+             } else {
+                 using value_type = typename type::value_type;
+ 
+-                std::aligned_storage_t<sizeof(value_type),
+-                                       alignof(value_type)>
+-                    storage;
++                alignas(value_type) std::byte storage[sizeof(value_type)];
+ 
+                 auto object = access::placement_new<value_type>(
+                     std::addressof(storage));
+@@ -2903,8 +2896,7 @@ class in
+                 return result;
+             }
+         } else {
+-            std::aligned_storage_t<sizeof(value_type), alignof(value_type)>
+-                storage;
++            alignas(value_type) std::byte storage[sizeof(value_type)];
+ 
+             auto object =
+                 access::placement_new<value_type>(std::addressof(storage));
+@@ -2947,9 +2939,7 @@ class in
+                 }
+                 return serialize_one(*std::get_if<element_type>(&variant));
+             } else {
+-                std::aligned_storage_t<sizeof(element_type),
+-                                       alignof(element_type)>
+-                    storage;
++                alignas(element_type) std::byte storage[sizeof(element_type)];
+ 
+                 auto object = access::placement_new<element_type>(
+                     std::addressof(storage));
+@@ -2996,8 +2986,7 @@ class in
+                     return self.serialize_one(
+                         *std::get_if<Types>(&variant));
+                 } else {
+-                    std::aligned_storage_t<sizeof(Types), alignof(Types)>
+-                        storage;
++                    alignas(Types) std::byte storage[sizeof(Types)];
+ 
+                     auto object = access::placement_new<Types>(
+                         std::addressof(storage));
+@@ -3008,6 +2997,7 @@ class in
+                         return result;
+                     }
+                     variant = std::move(*object);
++                    return errc{};
+                 }
+             }...};
+ 
+@@ -3307,7 +3297,7 @@ struct known_dynamic_id_variant
+     ZPP_BITS_INLINE constexpr static auto serialize(auto & serializer,
+                                                     auto & self)
+     {
+-        return serializer.template serialize_one(self.variant, self.id);
++        return serializer.serialize_one(self.variant, self.id);
+     }
+ 
+     Variant & variant;
+@@ -3448,7 +3438,8 @@ struct [[nodiscard]] value_or_errc
+     }
+ 
+     constexpr explicit value_or_errc(error_type error) :
+-        m_error(std::forward<decltype(error)>(error))
++        m_error(std::forward<decltype(error)>(error)),
++        m_failure(true)
+     {
+     }
+ 
+@@ -5029,9 +5020,7 @@ struct pb
+                 serialize use();
+             };
+ 
+-            std::aligned_storage_t<sizeof(value_type),
+-                                   alignof(value_type)>
+-                storage;
++            alignas(value_type) std::byte storage[sizeof(value_type)];
+ 
+             auto object =
+                 access::placement_new<value_type>(std::addressof(storage));
+@@ -5111,9 +5100,7 @@ struct pb
+                     return errc{};
+                 }
+             } else {
+-                std::aligned_storage_t<sizeof(value_type),
+-                                       alignof(value_type)>
+-                    storage;
++                alignas(value_type) std::byte storage[sizeof(value_type)];
+ 
+                 auto object = access::placement_new<value_type>(
+                     std::addressof(storage));
+@@ -5382,47 +5369,47 @@ constexpr auto sha256()
+     };
+     auto align = [](auto v, auto a) { return (v + (a - 1)) / a * a; };
+ 
+-    auto h0 = big_endian{0x6a09e667u};
+-    auto h1 = big_endian{0xbb67ae85u};
+-    auto h2 = big_endian{0x3c6ef372u};
+-    auto h3 = big_endian{0xa54ff53au};
+-    auto h4 = big_endian{0x510e527fu};
+-    auto h5 = big_endian{0x9b05688cu};
+-    auto h6 = big_endian{0x1f83d9abu};
+-    auto h7 = big_endian{0x5be0cd19u};
+-
+-    std::array k{big_endian{0x428a2f98u}, big_endian{0x71374491u},
+-                 big_endian{0xb5c0fbcfu}, big_endian{0xe9b5dba5u},
+-                 big_endian{0x3956c25bu}, big_endian{0x59f111f1u},
+-                 big_endian{0x923f82a4u}, big_endian{0xab1c5ed5u},
+-                 big_endian{0xd807aa98u}, big_endian{0x12835b01u},
+-                 big_endian{0x243185beu}, big_endian{0x550c7dc3u},
+-                 big_endian{0x72be5d74u}, big_endian{0x80deb1feu},
+-                 big_endian{0x9bdc06a7u}, big_endian{0xc19bf174u},
+-                 big_endian{0xe49b69c1u}, big_endian{0xefbe4786u},
+-                 big_endian{0x0fc19dc6u}, big_endian{0x240ca1ccu},
+-                 big_endian{0x2de92c6fu}, big_endian{0x4a7484aau},
+-                 big_endian{0x5cb0a9dcu}, big_endian{0x76f988dau},
+-                 big_endian{0x983e5152u}, big_endian{0xa831c66du},
+-                 big_endian{0xb00327c8u}, big_endian{0xbf597fc7u},
+-                 big_endian{0xc6e00bf3u}, big_endian{0xd5a79147u},
+-                 big_endian{0x06ca6351u}, big_endian{0x14292967u},
+-                 big_endian{0x27b70a85u}, big_endian{0x2e1b2138u},
+-                 big_endian{0x4d2c6dfcu}, big_endian{0x53380d13u},
+-                 big_endian{0x650a7354u}, big_endian{0x766a0abbu},
+-                 big_endian{0x81c2c92eu}, big_endian{0x92722c85u},
+-                 big_endian{0xa2bfe8a1u}, big_endian{0xa81a664bu},
+-                 big_endian{0xc24b8b70u}, big_endian{0xc76c51a3u},
+-                 big_endian{0xd192e819u}, big_endian{0xd6990624u},
+-                 big_endian{0xf40e3585u}, big_endian{0x106aa070u},
+-                 big_endian{0x19a4c116u}, big_endian{0x1e376c08u},
+-                 big_endian{0x2748774cu}, big_endian{0x34b0bcb5u},
+-                 big_endian{0x391c0cb3u}, big_endian{0x4ed8aa4au},
+-                 big_endian{0x5b9cca4fu}, big_endian{0x682e6ff3u},
+-                 big_endian{0x748f82eeu}, big_endian{0x78a5636fu},
+-                 big_endian{0x84c87814u}, big_endian{0x8cc70208u},
+-                 big_endian{0x90befffau}, big_endian{0xa4506cebu},
+-                 big_endian{0xbef9a3f7u}, big_endian{0xc67178f2u}};
++    auto h0 = big_endian{std::uint32_t{0x6a09e667u}};
++    auto h1 = big_endian{std::uint32_t{0xbb67ae85u}};
++    auto h2 = big_endian{std::uint32_t{0x3c6ef372u}};
++    auto h3 = big_endian{std::uint32_t{0xa54ff53au}};
++    auto h4 = big_endian{std::uint32_t{0x510e527fu}};
++    auto h5 = big_endian{std::uint32_t{0x9b05688cu}};
++    auto h6 = big_endian{std::uint32_t{0x1f83d9abu}};
++    auto h7 = big_endian{std::uint32_t{0x5be0cd19u}};
++
++    std::array k{big_endian{std::uint32_t{0x428a2f98u}}, big_endian{std::uint32_t{0x71374491u}},
++                 big_endian{std::uint32_t{0xb5c0fbcfu}}, big_endian{std::uint32_t{0xe9b5dba5u}},
++                 big_endian{std::uint32_t{0x3956c25bu}}, big_endian{std::uint32_t{0x59f111f1u}},
++                 big_endian{std::uint32_t{0x923f82a4u}}, big_endian{std::uint32_t{0xab1c5ed5u}},
++                 big_endian{std::uint32_t{0xd807aa98u}}, big_endian{std::uint32_t{0x12835b01u}},
++                 big_endian{std::uint32_t{0x243185beu}}, big_endian{std::uint32_t{0x550c7dc3u}},
++                 big_endian{std::uint32_t{0x72be5d74u}}, big_endian{std::uint32_t{0x80deb1feu}},
++                 big_endian{std::uint32_t{0x9bdc06a7u}}, big_endian{std::uint32_t{0xc19bf174u}},
++                 big_endian{std::uint32_t{0xe49b69c1u}}, big_endian{std::uint32_t{0xefbe4786u}},
++                 big_endian{std::uint32_t{0x0fc19dc6u}}, big_endian{std::uint32_t{0x240ca1ccu}},
++                 big_endian{std::uint32_t{0x2de92c6fu}}, big_endian{std::uint32_t{0x4a7484aau}},
++                 big_endian{std::uint32_t{0x5cb0a9dcu}}, big_endian{std::uint32_t{0x76f988dau}},
++                 big_endian{std::uint32_t{0x983e5152u}}, big_endian{std::uint32_t{0xa831c66du}},
++                 big_endian{std::uint32_t{0xb00327c8u}}, big_endian{std::uint32_t{0xbf597fc7u}},
++                 big_endian{std::uint32_t{0xc6e00bf3u}}, big_endian{std::uint32_t{0xd5a79147u}},
++                 big_endian{std::uint32_t{0x06ca6351u}}, big_endian{std::uint32_t{0x14292967u}},
++                 big_endian{std::uint32_t{0x27b70a85u}}, big_endian{std::uint32_t{0x2e1b2138u}},
++                 big_endian{std::uint32_t{0x4d2c6dfcu}}, big_endian{std::uint32_t{0x53380d13u}},
++                 big_endian{std::uint32_t{0x650a7354u}}, big_endian{std::uint32_t{0x766a0abbu}},
++                 big_endian{std::uint32_t{0x81c2c92eu}}, big_endian{std::uint32_t{0x92722c85u}},
++                 big_endian{std::uint32_t{0xa2bfe8a1u}}, big_endian{std::uint32_t{0xa81a664bu}},
++                 big_endian{std::uint32_t{0xc24b8b70u}}, big_endian{std::uint32_t{0xc76c51a3u}},
++                 big_endian{std::uint32_t{0xd192e819u}}, big_endian{std::uint32_t{0xd6990624u}},
++                 big_endian{std::uint32_t{0xf40e3585u}}, big_endian{std::uint32_t{0x106aa070u}},
++                 big_endian{std::uint32_t{0x19a4c116u}}, big_endian{std::uint32_t{0x1e376c08u}},
++                 big_endian{std::uint32_t{0x2748774cu}}, big_endian{std::uint32_t{0x34b0bcb5u}},
++                 big_endian{std::uint32_t{0x391c0cb3u}}, big_endian{std::uint32_t{0x4ed8aa4au}},
++                 big_endian{std::uint32_t{0x5b9cca4fu}}, big_endian{std::uint32_t{0x682e6ff3u}},
++                 big_endian{std::uint32_t{0x748f82eeu}}, big_endian{std::uint32_t{0x78a5636fu}},
++                 big_endian{std::uint32_t{0x84c87814u}}, big_endian{std::uint32_t{0x8cc70208u}},
++                 big_endian{std::uint32_t{0x90befffau}}, big_endian{std::uint32_t{0xa4506cebu}},
++                 big_endian{std::uint32_t{0xbef9a3f7u}}, big_endian{std::uint32_t{0xc67178f2u}}};
+ 
+     constexpr auto original_message = to_bytes<Object>();
+     constexpr auto chunk_size = 512 / CHAR_BIT;
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/ceph.git/commitdiff/8d8b0c0baeabef46319c53e4ec02cc87d55fe225



More information about the pld-cvs-commit mailing list