summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBruce Ashfield <bruce.ashfield@gmail.com>2023-11-09 05:11:44 +0000
committerBruce Ashfield <bruce.ashfield@gmail.com>2024-03-15 17:17:20 +0000
commit3e1ee1fda758885c17be7d4d45f514d370b1b92b (patch)
tree0015fead4aaaa91abfe02dc6c9605f1e4fb19eb7
parent628d9430a8316bde742e5defbc6be3733e183624 (diff)
downloadmeta-virtualization-3e1ee1fda758885c17be7d4d45f514d370b1b92b.tar.gz
ceph: initial update to 18.2.0
The ability to detected our python is fixed, but we are now failing in the compilation phase on some of the applications. Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
-rw-r--r--recipes-extended/ceph/ceph/0001-SnappyCompressor.h-fix-snappy-compiler-error.patch30
-rw-r--r--recipes-extended/ceph/ceph/0001-buffer.h-add-missing-header-file-due-to-gcc-upgrade.patch30
-rw-r--r--recipes-extended/ceph/ceph/0001-ceph-fix-build-errors-for-cross-compile.patch143
-rw-r--r--recipes-extended/ceph/ceph/0001-cmake-add-support-for-python3.11.patch15
-rw-r--r--recipes-extended/ceph/ceph/0001-common-fix-build-with-GCC-13-missing-cstdint-include.patch41
-rw-r--r--recipes-extended/ceph/ceph/0001-fix-host-library-paths-were-used.patch59
-rw-r--r--recipes-extended/ceph/ceph/0001-kv-rocksdb_cache-drop-ROCKSDB_PRIszt.patch51
-rw-r--r--recipes-extended/ceph/ceph/0002-common-fix-FTBFS-due-to-dout-need_dynamic-on-GCC-12.patch42
-rw-r--r--recipes-extended/ceph/ceph/0002-common-replace-BitVector-NoInitAllocator-with-wrappe.patch101
-rw-r--r--recipes-extended/ceph/ceph/0002-kv-rocksdb_cache-reorder-ShardedCache-methods-declar.patch70
-rw-r--r--recipes-extended/ceph/ceph/0003-kv-rocksdb_cache-define-DeleterFn-function-pointer-t.patch101
-rw-r--r--recipes-extended/ceph/ceph/0003-librdb-fix-build-with-gcc-13.patch30
-rw-r--r--recipes-extended/ceph/ceph/0004-kv-rocksdb_cache-implement-methods-required-by-rocks.patch207
-rw-r--r--recipes-extended/ceph/ceph/0005-kv-rocksdb_cache-mark-Shard-const.patch32
-rw-r--r--recipes-extended/ceph/ceph/CVE-2021-3979.patch158
-rw-r--r--recipes-extended/ceph/ceph_18.2.0.bb (renamed from recipes-extended/ceph/ceph_15.2.15.bb)61
16 files changed, 146 insertions, 1025 deletions
diff --git a/recipes-extended/ceph/ceph/0001-SnappyCompressor.h-fix-snappy-compiler-error.patch b/recipes-extended/ceph/ceph/0001-SnappyCompressor.h-fix-snappy-compiler-error.patch
deleted file mode 100644
index 2ebd32d1..00000000
--- a/recipes-extended/ceph/ceph/0001-SnappyCompressor.h-fix-snappy-compiler-error.patch
+++ /dev/null
@@ -1,30 +0,0 @@
1From 85bde55627cfbb35d8b4735dec32bf33fa30079f Mon Sep 17 00:00:00 2001
2From: Saul Wold <saul.wold@windriver.com>
3Date: Fri, 28 May 2021 10:16:07 -0700
4Subject: [PATCH] SnappyCompressor.h: fix snappy compiler error
5
6snappy quietly changed public type
7
8Known issue in ceph: https://tracker.ceph.com/issues/50934
9
10Upstream-Status: Pending
11
12Signed-off-by: Saul Wold <saul.wold@windriver.com>
13
14---
15 src/compressor/snappy/SnappyCompressor.h | 2 +-
16 1 file changed, 1 insertion(+), 1 deletion(-)
17
18diff --git a/src/compressor/snappy/SnappyCompressor.h b/src/compressor/snappy/SnappyCompressor.h
19index 0cfb819c..2fbe35b7 100644
20--- a/src/compressor/snappy/SnappyCompressor.h
21+++ b/src/compressor/snappy/SnappyCompressor.h
22@@ -96,7 +96,7 @@ class SnappyCompressor : public Compressor {
23 if (qat_enabled)
24 return qat_accel.decompress(p, compressed_len, dst);
25 #endif
26- snappy::uint32 res_len = 0;
27+ uint32_t res_len = 0;
28 BufferlistSource source_1(p, compressed_len);
29 if (!snappy::GetUncompressedLength(&source_1, &res_len)) {
30 return -1;
diff --git a/recipes-extended/ceph/ceph/0001-buffer.h-add-missing-header-file-due-to-gcc-upgrade.patch b/recipes-extended/ceph/ceph/0001-buffer.h-add-missing-header-file-due-to-gcc-upgrade.patch
deleted file mode 100644
index 70d3eb94..00000000
--- a/recipes-extended/ceph/ceph/0001-buffer.h-add-missing-header-file-due-to-gcc-upgrade.patch
+++ /dev/null
@@ -1,30 +0,0 @@
1From 496465d9238109a93612e28682273e5bf576823b Mon Sep 17 00:00:00 2001
2From: Chen Qi <Qi.Chen@windriver.com>
3Date: Sun, 22 May 2022 19:40:59 -0700
4Subject: [PATCH 1/2] buffer.h: add missing header file due to gcc upgrade
5
6The header file <memory> have been changed to be no longer included by other
7heades, thus requiring explicit include. See https://gcc.gnu.org/gcc-12/porting_to.html
8
9Upstream-Status: Pending
10
11Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
12---
13 src/include/buffer.h | 1 +
14 1 file changed, 1 insertion(+)
15
16diff --git a/src/include/buffer.h b/src/include/buffer.h
17index 5c8b427d..88845ee6 100644
18--- a/src/include/buffer.h
19+++ b/src/include/buffer.h
20@@ -43,6 +43,7 @@
21 #include <list>
22 #include <vector>
23 #include <string>
24+#include <memory>
25 #if __cplusplus >= 201703L
26 #include <string_view>
27 #endif // __cplusplus >= 201703L
28--
292.36.0
30
diff --git a/recipes-extended/ceph/ceph/0001-ceph-fix-build-errors-for-cross-compile.patch b/recipes-extended/ceph/ceph/0001-ceph-fix-build-errors-for-cross-compile.patch
index 4d54549f..9686becb 100644
--- a/recipes-extended/ceph/ceph/0001-ceph-fix-build-errors-for-cross-compile.patch
+++ b/recipes-extended/ceph/ceph/0001-ceph-fix-build-errors-for-cross-compile.patch
@@ -24,11 +24,11 @@ Signed-off-by: Sakib Sajal <sakib.sajal@windriver.com>
24 src/pybind/rgw/setup.py | 8 -------- 24 src/pybind/rgw/setup.py | 8 --------
25 7 files changed, 8 insertions(+), 55 deletions(-) 25 7 files changed, 8 insertions(+), 55 deletions(-)
26 26
27diff --git a/cmake/modules/Distutils.cmake b/cmake/modules/Distutils.cmake 27Index: ceph-18.2.0/cmake/modules/Distutils.cmake
28index 5fe929499d..802eb37e32 100644 28===================================================================
29--- a/cmake/modules/Distutils.cmake 29--- ceph-18.2.0.orig/cmake/modules/Distutils.cmake
30+++ b/cmake/modules/Distutils.cmake 30+++ ceph-18.2.0/cmake/modules/Distutils.cmake
31@@ -18,17 +18,8 @@ function(distutils_install_module name) 31@@ -29,17 +29,10 @@
32 cmake_parse_arguments(DU "" "INSTALL_SCRIPT" "" ${ARGN}) 32 cmake_parse_arguments(DU "" "INSTALL_SCRIPT" "" ${ARGN})
33 install(CODE " 33 install(CODE "
34 set(options --prefix=${CMAKE_INSTALL_PREFIX}) 34 set(options --prefix=${CMAKE_INSTALL_PREFIX})
@@ -39,25 +39,25 @@ index 5fe929499d..802eb37e32 100644
39- list(APPEND options 39- list(APPEND options
40- --root=\$ENV{DESTDIR} 40- --root=\$ENV{DESTDIR}
41- --single-version-externally-managed) 41- --single-version-externally-managed)
42- if(NOT \"${DU_INSTALL_SCRIPT}\" STREQUAL \"\") 42- endif()
43- list(APPEND options --install-script=${DU_INSTALL_SCRIPT}) 43 if(NOT \"${DU_INSTALL_SCRIPT}\" STREQUAL \"\")
44- endif() 44 list(APPEND options --install-script=${DU_INSTALL_SCRIPT})
45- endif() 45- endif()
46+ list(APPEND options --root=${CMAKE_DESTDIR}) 46+ list(APPEND options --root=${CMAKE_DESTDIR})
47+ list(APPEND options --install-lib=${PYTHON_SITEPACKAGES_DIR}) 47+ list(APPEND options --install-lib=${PYTHON_SITEPACKAGES_DIR})
48 execute_process( 48 execute_process(
49 COMMAND ${Python3_EXECUTABLE} 49 COMMAND ${Python3_EXECUTABLE}
50 setup.py install \${options} 50 setup.py install \${options}
51@@ -50,7 +41,7 @@ function(distutils_add_cython_module target name src) 51@@ -65,7 +58,7 @@
52 # Note: no quotes, otherwise distutils will execute "/usr/bin/ccache gcc" 52 if(DU_DISABLE_VTA AND HAS_VTA)
53 # CMake's implicit conversion between strings and lists is wonderful, isn't it? 53 list(APPEND PY_CFLAGS -fno-var-tracking-assignments)
54 string(REPLACE " " ";" cflags ${CMAKE_C_FLAGS}) 54 endif()
55- list(APPEND cflags -iquote${CMAKE_SOURCE_DIR}/src/include -w) 55- list(APPEND PY_CPPFLAGS -iquote${CMAKE_SOURCE_DIR}/src/include -w)
56+ list(APPEND cflags -iquote${CMAKE_SOURCE_DIR}/src/include -w --sysroot=${CMAKE_SYSROOT}) 56+ list(APPEND PY_CPPFLAGS -iquote${CMAKE_SOURCE_DIR}/src/include -w --sysroot=${CMAKE_SYSROOT})
57 # This little bit of magic wipes out __Pyx_check_single_interpreter() 57 # This little bit of magic wipes out __Pyx_check_single_interpreter()
58 # Note: this is reproduced in distutils_install_cython_module 58 # Note: this is reproduced in distutils_install_cython_module
59 list(APPEND cflags -D'void0=dead_function\(void\)') 59 list(APPEND PY_CPPFLAGS -D'void0=dead_function\(void\)')
60@@ -108,14 +99,8 @@ function(distutils_install_cython_module name) 60@@ -135,14 +128,8 @@
61 set(ENV{CEPH_LIBDIR} \"${CMAKE_LIBRARY_OUTPUT_DIRECTORY}\") 61 set(ENV{CEPH_LIBDIR} \"${CMAKE_LIBRARY_OUTPUT_DIRECTORY}\")
62 62
63 set(options --prefix=${CMAKE_INSTALL_PREFIX}) 63 set(options --prefix=${CMAKE_INSTALL_PREFIX})
@@ -74,10 +74,10 @@ index 5fe929499d..802eb37e32 100644
74 execute_process( 74 execute_process(
75 COMMAND 75 COMMAND
76 ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/setup.py 76 ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/setup.py
77diff --git a/cmake/modules/FindRocksDB.cmake b/cmake/modules/FindRocksDB.cmake 77Index: ceph-18.2.0/cmake/modules/FindRocksDB.cmake
78index c5dd3dfaf6..be38597af2 100644 78===================================================================
79--- a/cmake/modules/FindRocksDB.cmake 79--- ceph-18.2.0.orig/cmake/modules/FindRocksDB.cmake
80+++ b/cmake/modules/FindRocksDB.cmake 80+++ ceph-18.2.0/cmake/modules/FindRocksDB.cmake
81@@ -9,9 +9,9 @@ 81@@ -9,9 +9,9 @@
82 # ROCKSDB_VERSION_MINOR 82 # ROCKSDB_VERSION_MINOR
83 # ROCKSDB_VERSION_PATCH 83 # ROCKSDB_VERSION_PATCH
@@ -90,95 +90,100 @@ index c5dd3dfaf6..be38597af2 100644
90 90
91 if(ROCKSDB_INCLUDE_DIR AND EXISTS "${ROCKSDB_INCLUDE_DIR}/rocksdb/version.h") 91 if(ROCKSDB_INCLUDE_DIR AND EXISTS "${ROCKSDB_INCLUDE_DIR}/rocksdb/version.h")
92 foreach(ver "MAJOR" "MINOR" "PATCH") 92 foreach(ver "MAJOR" "MINOR" "PATCH")
93diff --git a/src/compressor/zstd/CMakeLists.txt b/src/compressor/zstd/CMakeLists.txt 93Index: ceph-18.2.0/src/pybind/cephfs/setup.py
94index a5ebdaf538..a234068150 100644 94===================================================================
95--- a/src/compressor/zstd/CMakeLists.txt 95--- ceph-18.2.0.orig/src/pybind/cephfs/setup.py
96+++ b/src/compressor/zstd/CMakeLists.txt 96+++ ceph-18.2.0/src/pybind/cephfs/setup.py
97@@ -9,7 +9,7 @@ ExternalProject_Add(zstd_ext 97@@ -135,20 +135,6 @@
98 CMAKE_ARGS -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
99 -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
100 -DCMAKE_C_FLAGS=${ZSTD_C_FLAGS}
101- -DCMAKE_AR=${CMAKE_AR}
102+ -DCMAKE_SYSROOT=${CMAKE_SYSROOT}
103 -DCMAKE_POSITION_INDEPENDENT_CODE=${ENABLE_SHARED}
104 -G${CMAKE_GENERATOR}
105 BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/libzstd
106diff --git a/src/pybind/cephfs/setup.py b/src/pybind/cephfs/setup.py
107index 19ae6c329a..c9a25ccfff 100755
108--- a/src/pybind/cephfs/setup.py
109+++ b/src/pybind/cephfs/setup.py
110@@ -135,14 +135,6 @@ def check_sanity():
111 finally: 98 finally:
112 shutil.rmtree(tmp_dir) 99 shutil.rmtree(tmp_dir)
113 100
114- 101-
115-if 'BUILD_DOC' in os.environ.keys(): 102-if 'BUILD_DOC' in os.environ or 'READTHEDOCS' in os.environ:
116- pass 103- ext_args = {}
104- cython_constants = dict(BUILD_DOC=True)
105- cythonize_args = dict(compile_time_env=cython_constants)
117-elif check_sanity(): 106-elif check_sanity():
118- pass 107- ext_args = get_python_flags(['cephfs'])
108- cython_constants = dict(BUILD_DOC=False)
109- include_path = [os.path.join(os.path.dirname(__file__), "..", "rados")]
110- cythonize_args = dict(compile_time_env=cython_constants,
111- include_path=include_path)
119-else: 112-else:
120- sys.exit(1) 113- sys.exit(1)
121- 114-
122 cmdclass = {} 115 cmdclass = {}
123 try: 116 try:
124 from Cython.Build import cythonize 117 from Cython.Build import cythonize
125diff --git a/src/pybind/rados/setup.py b/src/pybind/rados/setup.py 118Index: ceph-18.2.0/src/pybind/rados/setup.py
126index e2c5696404..4e99d26721 100755 119===================================================================
127--- a/src/pybind/rados/setup.py 120--- ceph-18.2.0.orig/src/pybind/rados/setup.py
128+++ b/src/pybind/rados/setup.py 121+++ ceph-18.2.0/src/pybind/rados/setup.py
129@@ -134,14 +134,6 @@ def check_sanity(): 122@@ -130,17 +130,6 @@
130 finally: 123 finally:
131 shutil.rmtree(tmp_dir) 124 shutil.rmtree(tmp_dir)
132 125
133- 126-
134-if 'BUILD_DOC' in os.environ.keys(): 127-if 'BUILD_DOC' in os.environ or 'READTHEDOCS' in os.environ:
135- pass 128- ext_args = {}
129- cython_constants = dict(BUILD_DOC=True)
136-elif check_sanity(): 130-elif check_sanity():
137- pass 131- ext_args = get_python_flags(['rados'])
132- cython_constants = dict(BUILD_DOC=False)
138-else: 133-else:
139- sys.exit(1) 134- sys.exit(1)
140- 135-
141 cmdclass = {} 136-cmdclass = {}
142 try: 137 try:
143 from Cython.Build import cythonize 138 from Cython.Build import cythonize
144diff --git a/src/pybind/rbd/setup.py b/src/pybind/rbd/setup.py 139 from Cython.Distutils import build_ext
145index 634484f140..f5bbbdab4f 100755 140Index: ceph-18.2.0/src/pybind/rbd/setup.py
146--- a/src/pybind/rbd/setup.py 141===================================================================
147+++ b/src/pybind/rbd/setup.py 142--- ceph-18.2.0.orig/src/pybind/rbd/setup.py
148@@ -133,14 +133,6 @@ def check_sanity(): 143+++ ceph-18.2.0/src/pybind/rbd/setup.py
144@@ -133,20 +133,6 @@
149 finally: 145 finally:
150 shutil.rmtree(tmp_dir) 146 shutil.rmtree(tmp_dir)
151 147
152- 148-
153-if 'BUILD_DOC' in os.environ.keys(): 149-if 'BUILD_DOC' in os.environ or 'READTHEDOCS' in os.environ:
154- pass 150- ext_args = {}
151- cython_constants = dict(BUILD_DOC=True)
152- cythonize_args = dict(compile_time_env=cython_constants)
155-elif check_sanity(): 153-elif check_sanity():
156- pass 154- ext_args = get_python_flags(['rados', 'rbd'])
155- cython_constants = dict(BUILD_DOC=False)
156- include_path = [os.path.join(os.path.dirname(__file__), "..", "rados")]
157- cythonize_args = dict(compile_time_env=cython_constants,
158- include_path=include_path)
157-else: 159-else:
158- sys.exit(1) 160- sys.exit(1)
159- 161-
160 cmdclass = {} 162 cmdclass = {}
161 try: 163 try:
162 from Cython.Build import cythonize 164 from Cython.Build import cythonize
163diff --git a/src/pybind/rgw/setup.py b/src/pybind/rgw/setup.py 165Index: ceph-18.2.0/src/pybind/rgw/setup.py
164index eb1591a460..b9f2428cf9 100755 166===================================================================
165--- a/src/pybind/rgw/setup.py 167--- ceph-18.2.0.orig/src/pybind/rgw/setup.py
166+++ b/src/pybind/rgw/setup.py 168+++ ceph-18.2.0/src/pybind/rgw/setup.py
167@@ -134,14 +134,6 @@ def check_sanity(): 169@@ -134,20 +134,6 @@
168 finally: 170 finally:
169 shutil.rmtree(tmp_dir) 171 shutil.rmtree(tmp_dir)
170 172
171- 173-
172-if 'BUILD_DOC' in os.environ.keys(): 174-if 'BUILD_DOC' in os.environ or 'READTHEDOCS' in os.environ:
173- pass 175- ext_args = {}
176- cython_constants = dict(BUILD_DOC=True)
177- cythonize_args = dict(compile_time_env=cython_constants)
174-elif check_sanity(): 178-elif check_sanity():
175- pass 179- ext_args = get_python_flags(['rados', 'rgw'])
180- cython_constants = dict(BUILD_DOC=False)
181- include_path = [os.path.join(os.path.dirname(__file__), "..", "rados")]
182- cythonize_args = dict(compile_time_env=cython_constants,
183- include_path=include_path)
176-else: 184-else:
177- sys.exit(1) 185- sys.exit(1)
178- 186-
179 cmdclass = {} 187 cmdclass = {}
180 try: 188 try:
181 from Cython.Build import cythonize 189 from Cython.Build import cythonize
182--
1832.20.1
184
diff --git a/recipes-extended/ceph/ceph/0001-cmake-add-support-for-python3.11.patch b/recipes-extended/ceph/ceph/0001-cmake-add-support-for-python3.11.patch
index c0b718a2..c72c91b2 100644
--- a/recipes-extended/ceph/ceph/0001-cmake-add-support-for-python3.11.patch
+++ b/recipes-extended/ceph/ceph/0001-cmake-add-support-for-python3.11.patch
@@ -16,19 +16,16 @@ Signed-off-by: Kai Kang <kai.kang@windriver.com>
16 cmake/modules/FindPython/Support.cmake | 2 +- 16 cmake/modules/FindPython/Support.cmake | 2 +-
17 1 file changed, 1 insertion(+), 1 deletion(-) 17 1 file changed, 1 insertion(+), 1 deletion(-)
18 18
19diff --git a/cmake/modules/FindPython/Support.cmake b/cmake/modules/FindPython/Support.cmake 19Index: ceph-18.2.0/cmake/modules/FindPython/Support.cmake
20index 6584699b79..c05bbe3306 100644 20===================================================================
21--- a/cmake/modules/FindPython/Support.cmake 21--- ceph-18.2.0.orig/cmake/modules/FindPython/Support.cmake
22+++ b/cmake/modules/FindPython/Support.cmake 22+++ ceph-18.2.0/cmake/modules/FindPython/Support.cmake
23@@ -17,7 +17,7 @@ if (NOT DEFINED _${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR) 23@@ -17,7 +17,7 @@
24 message (FATAL_ERROR "FindPython: INTERNAL ERROR") 24 message (FATAL_ERROR "FindPython: INTERNAL ERROR")
25 endif() 25 endif()
26 if (_${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR EQUAL 3) 26 if (_${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR EQUAL 3)
27- set(_${_PYTHON_PREFIX}_VERSIONS 3.8 3.7 3.6 3.5 3.4 3.3 3.2 3.1 3.0) 27- set(_${_PYTHON_PREFIX}_VERSIONS 3.10 3.9 3.8 3.7 3.6 3.5 3.4 3.3 3.2 3.1 3.0)
28+ set(_${_PYTHON_PREFIX}_VERSIONS 3.11 3.10 3.9 3.8 3.7 3.6 3.5 3.4 3.3 3.2 3.1 3.0) 28+ set(_${_PYTHON_PREFIX}_VERSIONS 3.11 3.10 3.9 3.8 3.7 3.6 3.5 3.4 3.3 3.2 3.1 3.0)
29 elseif (_${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR EQUAL 2) 29 elseif (_${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR EQUAL 2)
30 set(_${_PYTHON_PREFIX}_VERSIONS 2.7 2.6 2.5 2.4 2.3 2.2 2.1 2.0) 30 set(_${_PYTHON_PREFIX}_VERSIONS 2.7 2.6 2.5 2.4 2.3 2.2 2.1 2.0)
31 else() 31 else()
32--
332.18.2
34
diff --git a/recipes-extended/ceph/ceph/0001-common-fix-build-with-GCC-13-missing-cstdint-include.patch b/recipes-extended/ceph/ceph/0001-common-fix-build-with-GCC-13-missing-cstdint-include.patch
deleted file mode 100644
index b6ba82b6..00000000
--- a/recipes-extended/ceph/ceph/0001-common-fix-build-with-GCC-13-missing-cstdint-include.patch
+++ /dev/null
@@ -1,41 +0,0 @@
1From 59e6b44f7ed4020a860e347322acfdacc6e4560b Mon Sep 17 00:00:00 2001
2From: Sam James <sam@gentoo.org>
3Date: Fri, 28 Oct 2022 16:47:38 +0100
4Subject: [PATCH] common: fix build with GCC 13 (missing <cstdint> include)
5MIME-Version: 1.0
6Content-Type: text/plain; charset=UTF-8
7Content-Transfer-Encoding: 8bit
8
9Needed for uint8_t. Only worked by chance before (see
10https://www.gnu.org/software/gcc/gcc-13/porting_to.html).
11
12```
13FAILED: src/CMakeFiles/common-objs.dir/mds/FSMapUser.cc.o
14/usr/bin/x86_64-pc-linux-gnu-g++ -DBOOST_ASIO_DISABLE_THREAD_KEYWORD_EXTENSION -DHAVE_CONFIG_H -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2 -D_GNU_SOURCE -D_REENTRANT -D_THREAD_SAFE -D__CEPH__ -D__STDC_FORMAT_MACROS -D__linux__ -I/var/tmp/portage/sys-cluster/ceph-17.2.5/work/ceph-17.2.5_build/src/include -I/var/tmp/portage/sys-cluster/ceph-17.2.5/work/ceph-17.2.5/src -isystem /var/tmp/portage/sys-cluster/ceph-17.2.5/work/ceph-17.2.5_build/include -isystem /var/tmp/portage/sys-cluster/ceph-17.2.5/work/ceph-17.2.5/src/xxHash -isystem /var/tmp/portage/sys-cluster/ceph-17.2.5/work/ceph-17.2.5/src/rapidjson/include -O2 -march=native -pipe -fPIC -U_FORTIFY_SOURCE -Wall -fno-strict-aliasing -fsigned-char -Wtype-limits -Wignored-qualifiers -Wpointer-arith -Werror=format-security -Winit-self -Wno-unknown-pragmas -Wnon-virtual-dtor -Wno-ignored-qualifiers -ftemplate-depth-1024 -Wpessimizing-move -Wredundant-move -Wstrict-null-sentinel -Woverloaded-virtual -fno-new-ttp-matching -fstack-protector-strong -fdiagnostics-color=auto -fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-free -std=c++17 -MD -MT src/CMakeFiles/common-objs.dir/mds/FSMapUser.cc.o -MF src/CMakeFiles/common-objs.dir/mds/FSMapUser.cc.o.d -o src/CMakeFiles/common-objs.dir/mds/FSMapUser.cc.o -c /var/tmp/portage/sys-cluster/ceph-17.2.5/work/ceph-17.2.5/src/mds/FSMapUser.cc
15In file included from /var/tmp/portage/sys-cluster/ceph-17.2.5/work/ceph-17.2.5/src/log/SubsystemMap.h:12,
16 from /var/tmp/portage/sys-cluster/ceph-17.2.5/work/ceph-17.2.5/src/common/config.h:23,
17 from /var/tmp/portage/sys-cluster/ceph-17.2.5/work/ceph-17.2.5/src/mds/mdstypes.h:13,
18 from /var/tmp/portage/sys-cluster/ceph-17.2.5/work/ceph-17.2.5/src/mds/FSMapUser.h:21,
19 from /var/tmp/portage/sys-cluster/ceph-17.2.5/work/ceph-17.2.5/src/mds/FSMapUser.cc:1:
20/var/tmp/portage/sys-cluster/ceph-17.2.5/work/ceph-17.2.5/src/common/subsys_types.h:56:23: error: ‘uint8_t’ in namespace ‘std’ does not name a type; did you mean ‘wint_t’?
21```
22
23Bug: https://bugs.gentoo.org/878531
24Signed-off-by: Sam James <sam@gentoo.org>
25Upstream-Status: Backport [https://github.com/ceph/ceph/commit/74794f9d6f5c6671438085bdba730b504901a7c0]
26---
27 src/common/subsys_types.h | 1 +
28 1 file changed, 1 insertion(+)
29
30diff --git a/src/common/subsys_types.h b/src/common/subsys_types.h
31index 52171809..bd7cc439 100644
32--- a/src/common/subsys_types.h
33+++ b/src/common/subsys_types.h
34@@ -17,6 +17,7 @@
35
36 #include <algorithm>
37 #include <array>
38+#include <cstdint>
39
40 enum ceph_subsys_id_t {
41 ceph_subsys_, // default
diff --git a/recipes-extended/ceph/ceph/0001-fix-host-library-paths-were-used.patch b/recipes-extended/ceph/ceph/0001-fix-host-library-paths-were-used.patch
index 310bfa47..24fd0409 100644
--- a/recipes-extended/ceph/ceph/0001-fix-host-library-paths-were-used.patch
+++ b/recipes-extended/ceph/ceph/0001-fix-host-library-paths-were-used.patch
@@ -15,12 +15,12 @@ Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
15 src/pybind/rgw/setup.py | 6 +++++- 15 src/pybind/rgw/setup.py | 6 +++++-
16 4 files changed, 20 insertions(+), 4 deletions(-) 16 4 files changed, 20 insertions(+), 4 deletions(-)
17 17
18diff --git a/src/pybind/cephfs/setup.py b/src/pybind/cephfs/setup.py 18Index: ceph-18.2.0/src/pybind/cephfs/setup.py
19index c9a25ccf..972f936c 100755 19===================================================================
20--- a/src/pybind/cephfs/setup.py 20--- ceph-18.2.0.orig/src/pybind/cephfs/setup.py
21+++ b/src/pybind/cephfs/setup.py 21+++ ceph-18.2.0/src/pybind/cephfs/setup.py
22@@ -63,9 +63,13 @@ def get_python_flags(libs): 22@@ -63,9 +63,13 @@
23 distutils.sysconfig.get_config_vars('LIBS', 'SYSLIBS')), []) 23 filter(lambda lib: lib.startswith('-l'), py_libs)]
24 compiler = new_compiler() 24 compiler = new_compiler()
25 distutils.sysconfig.customize_compiler(compiler) 25 distutils.sysconfig.customize_compiler(compiler)
26+ libpl = distutils.sysconfig.get_config_var('LIBPL') 26+ libpl = distutils.sysconfig.get_config_var('LIBPL')
@@ -31,15 +31,15 @@ index c9a25ccf..972f936c 100755
31 include_dirs=[distutils.sysconfig.get_python_inc()], 31 include_dirs=[distutils.sysconfig.get_python_inc()],
32- library_dirs=distutils.sysconfig.get_config_vars('LIBDIR', 'LIBPL'), 32- library_dirs=distutils.sysconfig.get_config_vars('LIBDIR', 'LIBPL'),
33+ library_dirs=[distutils.sysconfig.get_config_var('LIBDIR'), libpl], 33+ library_dirs=[distutils.sysconfig.get_config_var('LIBDIR'), libpl],
34 libraries=libs + [lib.replace('-l', '') for lib in py_libs], 34 libraries=libs + py_libs,
35 extra_compile_args=filter_unsupported_flags( 35 extra_compile_args=filter_unsupported_flags(
36 compiler.compiler[0], 36 compiler.compiler[0],
37diff --git a/src/pybind/rados/setup.py b/src/pybind/rados/setup.py 37Index: ceph-18.2.0/src/pybind/rados/setup.py
38index 4e99d267..de24f766 100755 38===================================================================
39--- a/src/pybind/rados/setup.py 39--- ceph-18.2.0.orig/src/pybind/rados/setup.py
40+++ b/src/pybind/rados/setup.py 40+++ ceph-18.2.0/src/pybind/rados/setup.py
41@@ -66,9 +66,13 @@ def get_python_flags(libs): 41@@ -62,9 +62,13 @@
42 distutils.sysconfig.get_config_vars('LIBS', 'SYSLIBS')), []) 42 filter(lambda lib: lib.startswith('-l'), py_libs)]
43 compiler = new_compiler() 43 compiler = new_compiler()
44 distutils.sysconfig.customize_compiler(compiler) 44 distutils.sysconfig.customize_compiler(compiler)
45+ libpl = distutils.sysconfig.get_config_var('LIBPL') 45+ libpl = distutils.sysconfig.get_config_var('LIBPL')
@@ -50,15 +50,15 @@ index 4e99d267..de24f766 100755
50 include_dirs=[distutils.sysconfig.get_python_inc()], 50 include_dirs=[distutils.sysconfig.get_python_inc()],
51- library_dirs=distutils.sysconfig.get_config_vars('LIBDIR', 'LIBPL'), 51- library_dirs=distutils.sysconfig.get_config_vars('LIBDIR', 'LIBPL'),
52+ library_dirs=[distutils.sysconfig.get_config_var('LIBDIR'), libpl], 52+ library_dirs=[distutils.sysconfig.get_config_var('LIBDIR'), libpl],
53 libraries=libs + [lib.replace('-l', '') for lib in py_libs], 53 libraries=libs + py_libs,
54 extra_compile_args=filter_unsupported_flags( 54 extra_compile_args=filter_unsupported_flags(
55 compiler.compiler[0], 55 compiler.compiler[0],
56diff --git a/src/pybind/rbd/setup.py b/src/pybind/rbd/setup.py 56Index: ceph-18.2.0/src/pybind/rbd/setup.py
57index f5bbbdab..a1f70e1d 100755 57===================================================================
58--- a/src/pybind/rbd/setup.py 58--- ceph-18.2.0.orig/src/pybind/rbd/setup.py
59+++ b/src/pybind/rbd/setup.py 59+++ ceph-18.2.0/src/pybind/rbd/setup.py
60@@ -63,9 +63,13 @@ def get_python_flags(libs): 60@@ -63,9 +63,13 @@
61 distutils.sysconfig.get_config_vars('LIBS', 'SYSLIBS')), []) 61 filter(lambda lib: lib.startswith('-l'), py_libs)]
62 compiler = new_compiler() 62 compiler = new_compiler()
63 distutils.sysconfig.customize_compiler(compiler) 63 distutils.sysconfig.customize_compiler(compiler)
64+ libpl = distutils.sysconfig.get_config_var('LIBPL') 64+ libpl = distutils.sysconfig.get_config_var('LIBPL')
@@ -69,15 +69,15 @@ index f5bbbdab..a1f70e1d 100755
69 include_dirs=[distutils.sysconfig.get_python_inc()], 69 include_dirs=[distutils.sysconfig.get_python_inc()],
70- library_dirs=distutils.sysconfig.get_config_vars('LIBDIR', 'LIBPL'), 70- library_dirs=distutils.sysconfig.get_config_vars('LIBDIR', 'LIBPL'),
71+ library_dirs=[distutils.sysconfig.get_config_var('LIBDIR'), libpl], 71+ library_dirs=[distutils.sysconfig.get_config_var('LIBDIR'), libpl],
72 libraries=libs + [lib.replace('-l', '') for lib in py_libs], 72 libraries=libs + py_libs,
73 extra_compile_args=filter_unsupported_flags( 73 extra_compile_args=filter_unsupported_flags(
74 compiler.compiler[0], 74 compiler.compiler[0],
75diff --git a/src/pybind/rgw/setup.py b/src/pybind/rgw/setup.py 75Index: ceph-18.2.0/src/pybind/rgw/setup.py
76index b9f2428c..f5119f73 100755 76===================================================================
77--- a/src/pybind/rgw/setup.py 77--- ceph-18.2.0.orig/src/pybind/rgw/setup.py
78+++ b/src/pybind/rgw/setup.py 78+++ ceph-18.2.0/src/pybind/rgw/setup.py
79@@ -64,9 +64,13 @@ def get_python_flags(libs): 79@@ -64,9 +64,13 @@
80 distutils.sysconfig.get_config_vars('LIBS', 'SYSLIBS')), []) 80 filter(lambda lib: lib.startswith('-l'), py_libs)]
81 compiler = new_compiler() 81 compiler = new_compiler()
82 distutils.sysconfig.customize_compiler(compiler) 82 distutils.sysconfig.customize_compiler(compiler)
83+ libpl = distutils.sysconfig.get_config_var('LIBPL') 83+ libpl = distutils.sysconfig.get_config_var('LIBPL')
@@ -88,9 +88,6 @@ index b9f2428c..f5119f73 100755
88 include_dirs=[distutils.sysconfig.get_python_inc()], 88 include_dirs=[distutils.sysconfig.get_python_inc()],
89- library_dirs=distutils.sysconfig.get_config_vars('LIBDIR', 'LIBPL'), 89- library_dirs=distutils.sysconfig.get_config_vars('LIBDIR', 'LIBPL'),
90+ library_dirs=[distutils.sysconfig.get_config_var('LIBDIR'), libpl], 90+ library_dirs=[distutils.sysconfig.get_config_var('LIBDIR'), libpl],
91 libraries=libs + [lib.replace('-l', '') for lib in py_libs], 91 libraries=libs + py_libs,
92 extra_compile_args=filter_unsupported_flags( 92 extra_compile_args=filter_unsupported_flags(
93 compiler.compiler[0], 93 compiler.compiler[0],
94--
952.21.0
96
diff --git a/recipes-extended/ceph/ceph/0001-kv-rocksdb_cache-drop-ROCKSDB_PRIszt.patch b/recipes-extended/ceph/ceph/0001-kv-rocksdb_cache-drop-ROCKSDB_PRIszt.patch
deleted file mode 100644
index 795c60fc..00000000
--- a/recipes-extended/ceph/ceph/0001-kv-rocksdb_cache-drop-ROCKSDB_PRIszt.patch
+++ /dev/null
@@ -1,51 +0,0 @@
1From b7b58010fd10b95c681df78cc4322e6586a39099 Mon Sep 17 00:00:00 2001
2From: Kefu Chai <kchai@redhat.com>
3Date: Tue, 17 Aug 2021 15:20:24 +0800
4Subject: [PATCH 1/6] kv/rocksdb_cache: drop ROCKSDB_PRIszt
5
6ROCKSDB_PRIszt is a macro for "zu", which is in turn use for printing an
7(unsigned) size_t variable.
8
9there is no point having it in the header file or define a macro for it,
10as %zu is standard compliant, and we don't get any advantage by using a
11macro for it.
12
13Signed-off-by: Kefu Chai <kchai@redhat.com>
14
15Upstream-Status: Backport [44f5b827eb3c65665373a86908bf5d47e7d02687]
16
17Signed-off-by: Sakib Sajal <sakib.sajal@windriver.com>
18
19---
20 src/kv/rocksdb_cache/ShardedCache.cc | 2 +-
21 src/kv/rocksdb_cache/ShardedCache.h | 1 -
22 2 files changed, 1 insertion(+), 2 deletions(-)
23
24diff --git a/src/kv/rocksdb_cache/ShardedCache.cc b/src/kv/rocksdb_cache/ShardedCache.cc
25index 367140a9..8e08deb8 100644
26--- a/src/kv/rocksdb_cache/ShardedCache.cc
27+++ b/src/kv/rocksdb_cache/ShardedCache.cc
28@@ -131,7 +131,7 @@ std::string ShardedCache::GetPrintableOptions() const {
29 char buffer[kBufferSize];
30 {
31 std::lock_guard<std::mutex> l(capacity_mutex_);
32- snprintf(buffer, kBufferSize, " capacity : %" ROCKSDB_PRIszt "\n",
33+ snprintf(buffer, kBufferSize, " capacity : %zu\n",
34 capacity_);
35 ret.append(buffer);
36 snprintf(buffer, kBufferSize, " num_shard_bits : %d\n", num_shard_bits_);
37diff --git a/src/kv/rocksdb_cache/ShardedCache.h b/src/kv/rocksdb_cache/ShardedCache.h
38index 4d64893a..8ab2587b 100644
39--- a/src/kv/rocksdb_cache/ShardedCache.h
40+++ b/src/kv/rocksdb_cache/ShardedCache.h
41@@ -22,7 +22,6 @@
42 #ifndef CACHE_LINE_SIZE
43 #define CACHE_LINE_SIZE 64 // XXX arch-specific define
44 #endif
45-#define ROCKSDB_PRIszt "zu"
46
47 namespace rocksdb_cache {
48
49--
502.33.0
51
diff --git a/recipes-extended/ceph/ceph/0002-common-fix-FTBFS-due-to-dout-need_dynamic-on-GCC-12.patch b/recipes-extended/ceph/ceph/0002-common-fix-FTBFS-due-to-dout-need_dynamic-on-GCC-12.patch
deleted file mode 100644
index d119bf1b..00000000
--- a/recipes-extended/ceph/ceph/0002-common-fix-FTBFS-due-to-dout-need_dynamic-on-GCC-12.patch
+++ /dev/null
@@ -1,42 +0,0 @@
1From 841806de212226921eeaeb3eea054bda8ccce616 Mon Sep 17 00:00:00 2001
2From: Radoslaw Zarzynski <rzarzyns@redhat.com>
3Date: Wed, 19 Jan 2022 15:24:11 +0000
4Subject: [PATCH 2/2] common: fix FTBFS due to dout & need_dynamic on GCC-12
5
6For details see:
7https://gist.github.com/rzarzynski/d6d2df6888923bef6a3e764f4856853f.
8
9Special thanks to Kaleb Keithley who reported the issue
10and tested the fix!
11
12Fixes: https://tracker.ceph.com/issues/53896
13Signed-off-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
14
15Upstream-Status: Backport [963d756ded40f5adf2efef53893c917bec1845c1]
16Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
17---
18 src/common/dout.h | 5 +++--
19 1 file changed, 3 insertions(+), 2 deletions(-)
20
21diff --git a/src/common/dout.h b/src/common/dout.h
22index c7c08182..42f49915 100644
23--- a/src/common/dout.h
24+++ b/src/common/dout.h
25@@ -99,11 +99,12 @@ namespace ceph::dout {
26 template<typename T>
27 struct dynamic_marker_t {
28 T value;
29- operator T() const { return value; }
30+ // constexpr ctor isn't needed as it's an aggregate type
31+ constexpr operator T() const { return value; }
32 };
33
34 template<typename T>
35-dynamic_marker_t<T> need_dynamic(T&& t) {
36+constexpr dynamic_marker_t<T> need_dynamic(T&& t) {
37 return dynamic_marker_t<T>{ std::forward<T>(t) };
38 }
39
40--
412.36.0
42
diff --git a/recipes-extended/ceph/ceph/0002-common-replace-BitVector-NoInitAllocator-with-wrappe.patch b/recipes-extended/ceph/ceph/0002-common-replace-BitVector-NoInitAllocator-with-wrappe.patch
deleted file mode 100644
index 4f46d223..00000000
--- a/recipes-extended/ceph/ceph/0002-common-replace-BitVector-NoInitAllocator-with-wrappe.patch
+++ /dev/null
@@ -1,101 +0,0 @@
1From cca3144aca7f7c19772065421f9b02205a84e0b8 Mon Sep 17 00:00:00 2001
2From: Casey Bodley <cbodley@redhat.com>
3Date: Tue, 15 Feb 2022 18:27:10 -0500
4Subject: [PATCH] common: replace BitVector::NoInitAllocator with wrapper
5 struct
6
7in c++20, the deprecated `struct std::allocator<T>::rebind` template was
8removed, so `BitVector` no longer compiles. without a `rebind` to
9inherit, `std::allocator_traits<NoInitAllocator>::rebind_alloc<U>` was
10looking for `NoInitAllocator<U>`, but it isn't a template class
11
12further investigation found that in c++17, `vector<__u32, NoInitAllocator>`
13was rebinding this `NoInitAllocator` to `std::allocator<__u32>` and
14preventing the no-init optimization from taking effect
15
16instead of messing with the allocator to avoid zero-initialization, wrap
17each __u32 in a struct whose constructor does not initialize the value
18
19Fixes: https://tracker.ceph.com/issues/54279
20
21Signed-off-by: Casey Bodley <cbodley@redhat.com>
22---
23Fixes:
24http://errors.yoctoproject.org/Errors/Details/701862/
25
26Upstream-Status: Backport [https://github.com/ceph/ceph/commit/4f0ad8aab6b21a1fd57a7c1630d298e31b5d9bb6]
27
28 src/common/bit_vector.hpp | 27 +++++++++++----------------
29 1 file changed, 11 insertions(+), 16 deletions(-)
30
31diff --git a/src/common/bit_vector.hpp b/src/common/bit_vector.hpp
32index 10ee6c3e..9ce3e8b1 100644
33--- a/src/common/bit_vector.hpp
34+++ b/src/common/bit_vector.hpp
35@@ -223,23 +223,18 @@ public:
36
37 static void generate_test_instances(std::list<BitVector *> &o);
38 private:
39- struct NoInitAllocator : public std::allocator<__u32> {
40- NoInitAllocator() {}
41- NoInitAllocator(const std::allocator<__u32>& alloc)
42- : std::allocator<__u32>(alloc) {
43- }
44-
45- template <class U, class... Args>
46- void construct(U* p, Args&&... args) const {
47- }
48- };
49-
50 bufferlist m_data;
51 uint64_t m_size;
52 bool m_crc_enabled;
53
54 mutable __u32 m_header_crc;
55- mutable std::vector<__u32, NoInitAllocator> m_data_crcs;
56+
57+ // inhibit value-initialization when used in std::vector
58+ struct u32_struct {
59+ u32_struct() {}
60+ __u32 val;
61+ };
62+ mutable std::vector<u32_struct> m_data_crcs;
63
64 void resize(uint64_t elements, bool zero);
65
66@@ -351,7 +346,7 @@ void BitVector<_b>::encode_data(bufferlist& bl, uint64_t data_byte_offset,
67
68 bufferlist bit;
69 bit.substr_of(m_data, data_byte_offset, len);
70- m_data_crcs[data_byte_offset / BLOCK_SIZE] = bit.crc32c(0);
71+ m_data_crcs[data_byte_offset / BLOCK_SIZE].val = bit.crc32c(0);
72
73 bl.claim_append(bit);
74 data_byte_offset += BLOCK_SIZE;
75@@ -385,7 +380,7 @@ void BitVector<_b>::decode_data(bufferlist::const_iterator& it,
76 bufferlist bit;
77 bit.append(ptr);
78 if (m_crc_enabled &&
79- m_data_crcs[data_byte_offset / BLOCK_SIZE] != bit.crc32c(0)) {
80+ m_data_crcs[data_byte_offset / BLOCK_SIZE].val != bit.crc32c(0)) {
81 throw buffer::malformed_input("invalid data block CRC");
82 }
83 data.append(bit);
84@@ -499,7 +494,7 @@ void BitVector<_b>::encode_data_crcs(bufferlist& bl, uint64_t offset,
85 compute_index(offset + length - 1, &index, &shift);
86 uint64_t end_crc_index = index / BLOCK_SIZE;
87 while (crc_index <= end_crc_index) {
88- __u32 crc = m_data_crcs[crc_index++];
89+ __u32 crc = m_data_crcs[crc_index++].val;
90 ceph::encode(crc, bl);
91 }
92 }
93@@ -520,7 +515,7 @@ void BitVector<_b>::decode_data_crcs(bufferlist::const_iterator& it,
94 while (remaining > 0) {
95 __u32 crc;
96 ceph::decode(crc, it);
97- m_data_crcs[crc_index++] = crc;
98+ m_data_crcs[crc_index++].val = crc;
99 --remaining;
100 }
101 }
diff --git a/recipes-extended/ceph/ceph/0002-kv-rocksdb_cache-reorder-ShardedCache-methods-declar.patch b/recipes-extended/ceph/ceph/0002-kv-rocksdb_cache-reorder-ShardedCache-methods-declar.patch
deleted file mode 100644
index 3fc8c860..00000000
--- a/recipes-extended/ceph/ceph/0002-kv-rocksdb_cache-reorder-ShardedCache-methods-declar.patch
+++ /dev/null
@@ -1,70 +0,0 @@
1From 6cdb1387a713fad765b5193d5acf4504f206a66f Mon Sep 17 00:00:00 2001
2From: Kefu Chai <kchai@redhat.com>
3Date: Tue, 17 Aug 2021 15:39:00 +0800
4Subject: [PATCH 2/6] kv/rocksdb_cache: reorder ShardedCache methods
5 declarations
6
7in the exact order in which rocksdb::Cache declare its public virtual
8methods.
9
10Signed-off-by: Kefu Chai <kchai@redhat.com>
11
12Upstream-Status: Backport [633656f8ade2c1d67a66f8b7ca3aa0a2ae82e6b1]
13
14Signed-off-by: Sakib Sajal <sakib.sajal@windriver.com>
15---
16 src/kv/rocksdb_cache/ShardedCache.h | 21 ++++++++++-----------
17 1 file changed, 10 insertions(+), 11 deletions(-)
18
19diff --git a/src/kv/rocksdb_cache/ShardedCache.h b/src/kv/rocksdb_cache/ShardedCache.h
20index 8ab2587b..a16cf561 100644
21--- a/src/kv/rocksdb_cache/ShardedCache.h
22+++ b/src/kv/rocksdb_cache/ShardedCache.h
23@@ -56,34 +56,33 @@ class ShardedCache : public rocksdb::Cache, public PriorityCache::PriCache {
24 public:
25 ShardedCache(size_t capacity, int num_shard_bits, bool strict_capacity_limit);
26 virtual ~ShardedCache() = default;
27+ // rocksdb::Cache
28 virtual const char* Name() const override = 0;
29- virtual CacheShard* GetShard(int shard) = 0;
30- virtual const CacheShard* GetShard(int shard) const = 0;
31- virtual void* Value(Handle* handle) override = 0;
32- virtual size_t GetCharge(Handle* handle) const = 0;
33- virtual uint32_t GetHash(Handle* handle) const = 0;
34- virtual void DisownData() override = 0;
35-
36- virtual void SetCapacity(size_t capacity) override;
37- virtual void SetStrictCapacityLimit(bool strict_capacity_limit) override;
38-
39 virtual rocksdb::Status Insert(const rocksdb::Slice& key, void* value, size_t charge,
40 void (*deleter)(const rocksdb::Slice& key, void* value),
41 rocksdb::Cache::Handle** handle, Priority priority) override;
42 virtual rocksdb::Cache::Handle* Lookup(const rocksdb::Slice& key, rocksdb::Statistics* stats) override;
43 virtual bool Ref(rocksdb::Cache::Handle* handle) override;
44 virtual bool Release(rocksdb::Cache::Handle* handle, bool force_erase = false) override;
45+ virtual void* Value(Handle* handle) override = 0;
46 virtual void Erase(const rocksdb::Slice& key) override;
47 virtual uint64_t NewId() override;
48- virtual size_t GetCapacity() const override;
49+ virtual void SetCapacity(size_t capacity) override;
50+ virtual void SetStrictCapacityLimit(bool strict_capacity_limit) override;
51 virtual bool HasStrictCapacityLimit() const override;
52+ virtual size_t GetCapacity() const override;
53 virtual size_t GetUsage() const override;
54 virtual size_t GetUsage(rocksdb::Cache::Handle* handle) const override;
55 virtual size_t GetPinnedUsage() const override;
56+ virtual size_t GetCharge(Handle* handle) const = 0;
57+ virtual void DisownData() override = 0;
58 virtual void ApplyToAllCacheEntries(void (*callback)(void*, size_t),
59 bool thread_safe) override;
60 virtual void EraseUnRefEntries() override;
61 virtual std::string GetPrintableOptions() const override;
62+ virtual CacheShard* GetShard(int shard) = 0;
63+ virtual const CacheShard* GetShard(int shard) const = 0;
64+ virtual uint32_t GetHash(Handle* handle) const = 0;
65
66 int GetNumShardBits() const { return num_shard_bits_; }
67
68--
692.33.0
70
diff --git a/recipes-extended/ceph/ceph/0003-kv-rocksdb_cache-define-DeleterFn-function-pointer-t.patch b/recipes-extended/ceph/ceph/0003-kv-rocksdb_cache-define-DeleterFn-function-pointer-t.patch
deleted file mode 100644
index 01144b79..00000000
--- a/recipes-extended/ceph/ceph/0003-kv-rocksdb_cache-define-DeleterFn-function-pointer-t.patch
+++ /dev/null
@@ -1,101 +0,0 @@
1From 29f1e556c1e7c5ab195983552387e1410e0b5b6c Mon Sep 17 00:00:00 2001
2From: Kefu Chai <kchai@redhat.com>
3Date: Tue, 17 Aug 2021 16:25:32 +0800
4Subject: [PATCH 3/6] kv/rocksdb_cache: define DeleterFn function pointer type
5
6this paves the road to rocksdb v6.22.1 compatible implementation
7
8Signed-off-by: Kefu Chai <kchai@redhat.com>
9
10Upstream-Status: Backport [c7a6c74b62dfcc96f676eb6d8844852c4705b66f]
11
12Signed-off-by: Sakib Sajal <sakib.sajal@windriver.com>
13---
14 src/kv/rocksdb_cache/BinnedLRUCache.cc | 2 +-
15 src/kv/rocksdb_cache/BinnedLRUCache.h | 4 ++--
16 src/kv/rocksdb_cache/ShardedCache.cc | 2 +-
17 src/kv/rocksdb_cache/ShardedCache.h | 6 ++++--
18 4 files changed, 8 insertions(+), 6 deletions(-)
19
20diff --git a/src/kv/rocksdb_cache/BinnedLRUCache.cc b/src/kv/rocksdb_cache/BinnedLRUCache.cc
21index 2391a7f6..4e5f4dd4 100644
22--- a/src/kv/rocksdb_cache/BinnedLRUCache.cc
23+++ b/src/kv/rocksdb_cache/BinnedLRUCache.cc
24@@ -344,7 +344,7 @@ bool BinnedLRUCacheShard::Release(rocksdb::Cache::Handle* handle, bool force_era
25
26 rocksdb::Status BinnedLRUCacheShard::Insert(const rocksdb::Slice& key, uint32_t hash, void* value,
27 size_t charge,
28- void (*deleter)(const rocksdb::Slice& key, void* value),
29+ DeleterFn deleter,
30 rocksdb::Cache::Handle** handle, rocksdb::Cache::Priority priority) {
31 auto e = new BinnedLRUHandle();
32 rocksdb::Status s;
33diff --git a/src/kv/rocksdb_cache/BinnedLRUCache.h b/src/kv/rocksdb_cache/BinnedLRUCache.h
34index 96023ce2..b0fb7148 100644
35--- a/src/kv/rocksdb_cache/BinnedLRUCache.h
36+++ b/src/kv/rocksdb_cache/BinnedLRUCache.h
37@@ -56,7 +56,7 @@ std::shared_ptr<rocksdb::Cache> NewBinnedLRUCache(
38
39 struct BinnedLRUHandle {
40 void* value;
41- void (*deleter)(const rocksdb::Slice&, void* value);
42+ DeleterFn deleter;
43 BinnedLRUHandle* next_hash;
44 BinnedLRUHandle* next;
45 BinnedLRUHandle* prev;
46@@ -189,7 +189,7 @@ class alignas(CACHE_LINE_SIZE) BinnedLRUCacheShard : public CacheShard {
47 // Like Cache methods, but with an extra "hash" parameter.
48 virtual rocksdb::Status Insert(const rocksdb::Slice& key, uint32_t hash, void* value,
49 size_t charge,
50- void (*deleter)(const rocksdb::Slice& key, void* value),
51+ DeleterFn deleter,
52 rocksdb::Cache::Handle** handle,
53 rocksdb::Cache::Priority priority) override;
54 virtual rocksdb::Cache::Handle* Lookup(const rocksdb::Slice& key, uint32_t hash) override;
55diff --git a/src/kv/rocksdb_cache/ShardedCache.cc b/src/kv/rocksdb_cache/ShardedCache.cc
56index 8e08deb8..ef3b3b98 100644
57--- a/src/kv/rocksdb_cache/ShardedCache.cc
58+++ b/src/kv/rocksdb_cache/ShardedCache.cc
59@@ -44,7 +44,7 @@ void ShardedCache::SetStrictCapacityLimit(bool strict_capacity_limit) {
60 }
61
62 rocksdb::Status ShardedCache::Insert(const rocksdb::Slice& key, void* value, size_t charge,
63- void (*deleter)(const rocksdb::Slice& key, void* value),
64+ DeleterFn deleter,
65 rocksdb::Cache::Handle** handle, Priority priority) {
66 uint32_t hash = HashSlice(key);
67 return GetShard(Shard(hash))
68diff --git a/src/kv/rocksdb_cache/ShardedCache.h b/src/kv/rocksdb_cache/ShardedCache.h
69index a16cf561..674e5322 100644
70--- a/src/kv/rocksdb_cache/ShardedCache.h
71+++ b/src/kv/rocksdb_cache/ShardedCache.h
72@@ -25,6 +25,8 @@
73
74 namespace rocksdb_cache {
75
76+using DeleterFn = void (*)(const rocksdb::Slice& key, void* value);
77+
78 // Single cache shard interface.
79 class CacheShard {
80 public:
81@@ -33,7 +35,7 @@ class CacheShard {
82
83 virtual rocksdb::Status Insert(const rocksdb::Slice& key, uint32_t hash, void* value,
84 size_t charge,
85- void (*deleter)(const rocksdb::Slice& key, void* value),
86+ DeleterFn deleter,
87 rocksdb::Cache::Handle** handle, rocksdb::Cache::Priority priority) = 0;
88 virtual rocksdb::Cache::Handle* Lookup(const rocksdb::Slice& key, uint32_t hash) = 0;
89 virtual bool Ref(rocksdb::Cache::Handle* handle) = 0;
90@@ -59,7 +61,7 @@ class ShardedCache : public rocksdb::Cache, public PriorityCache::PriCache {
91 // rocksdb::Cache
92 virtual const char* Name() const override = 0;
93 virtual rocksdb::Status Insert(const rocksdb::Slice& key, void* value, size_t charge,
94- void (*deleter)(const rocksdb::Slice& key, void* value),
95+ DeleterFn,
96 rocksdb::Cache::Handle** handle, Priority priority) override;
97 virtual rocksdb::Cache::Handle* Lookup(const rocksdb::Slice& key, rocksdb::Statistics* stats) override;
98 virtual bool Ref(rocksdb::Cache::Handle* handle) override;
99--
1002.33.0
101
diff --git a/recipes-extended/ceph/ceph/0003-librdb-fix-build-with-gcc-13.patch b/recipes-extended/ceph/ceph/0003-librdb-fix-build-with-gcc-13.patch
deleted file mode 100644
index c27d6f3e..00000000
--- a/recipes-extended/ceph/ceph/0003-librdb-fix-build-with-gcc-13.patch
+++ /dev/null
@@ -1,30 +0,0 @@
1From 937231991bd7e2cd578cf8cb6c1bedf611c5faef Mon Sep 17 00:00:00 2001
2From: Martin Jansa <Martin.Jansa@gmail.com>
3Date: Sat, 29 Apr 2023 13:47:43 +0200
4Subject: [PATCH] librdb: fix build with gcc-13
5
6* fixes:
7ceph-15.2.15/src/librbd/api/PoolMetadata.h:28:19: error: 'uint64_t' has not bee
8n declared
9ceph/15.2.15-r0/ceph-15.2.15/src/librbd/api/PoolMetadata.cc:133:5: error: no declaration matche
10s 'int librbd::api::PoolMetadata<ImageCtxT>::list(librados::v14_2_0::IoCtx&, const std::string&, uint64_t, std::map<std::__cxx11::basic_string<cha
11r>, ceph::buffer::v15_2_0::list>*)'
12
13Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
14Upstream-Status: Pending
15---
16 src/librbd/api/PoolMetadata.h | 1 +
17 1 file changed, 1 insertion(+)
18
19diff --git a/src/librbd/api/PoolMetadata.h b/src/librbd/api/PoolMetadata.h
20index c0a81735..69ab574a 100644
21--- a/src/librbd/api/PoolMetadata.h
22+++ b/src/librbd/api/PoolMetadata.h
23@@ -7,6 +7,7 @@
24 #include "include/buffer_fwd.h"
25 #include "include/rados/librados_fwd.hpp"
26
27+#include <cstdint>
28 #include <map>
29 #include <string>
30
diff --git a/recipes-extended/ceph/ceph/0004-kv-rocksdb_cache-implement-methods-required-by-rocks.patch b/recipes-extended/ceph/ceph/0004-kv-rocksdb_cache-implement-methods-required-by-rocks.patch
deleted file mode 100644
index ee1e1416..00000000
--- a/recipes-extended/ceph/ceph/0004-kv-rocksdb_cache-implement-methods-required-by-rocks.patch
+++ /dev/null
@@ -1,207 +0,0 @@
1From 90696cb3652eb307c6aadde4af7d9198dc00c15f Mon Sep 17 00:00:00 2001
2From: Kefu Chai <kchai@redhat.com>
3Date: Tue, 17 Aug 2021 16:27:47 +0800
4Subject: [PATCH 4/6] kv/rocksdb_cache: implement methods required by rocksdb
5 v6.22.1
6
7rocksdb v6.22.1 added couple pure methods, so let's implement them.
8
9Signed-off-by: Kefu Chai <kchai@redhat.com>
10
11Upstream-Status: Backport [2c445598ce5280e85feb1f0e94d1940a444ee421]
12
13Signed-off-by: Sakib Sajal <sakib.sajal@windriver.com>
14---
15 src/kv/rocksdb_cache/BinnedLRUCache.cc | 26 +++++++++++++++++++++++---
16 src/kv/rocksdb_cache/BinnedLRUCache.h | 14 +++++++++++---
17 src/kv/rocksdb_cache/ShardedCache.cc | 25 ++++++++++++++++++++++++-
18 src/kv/rocksdb_cache/ShardedCache.h | 20 ++++++++++++++++++--
19 4 files changed, 76 insertions(+), 9 deletions(-)
20
21diff --git a/src/kv/rocksdb_cache/BinnedLRUCache.cc b/src/kv/rocksdb_cache/BinnedLRUCache.cc
22index 4e5f4dd4..1e6ba7af 100644
23--- a/src/kv/rocksdb_cache/BinnedLRUCache.cc
24+++ b/src/kv/rocksdb_cache/BinnedLRUCache.cc
25@@ -150,13 +150,20 @@ void BinnedLRUCacheShard::EraseUnRefEntries() {
26 }
27 }
28
29-void BinnedLRUCacheShard::ApplyToAllCacheEntries(void (*callback)(void*, size_t),
30- bool thread_safe) {
31+void BinnedLRUCacheShard::ApplyToAllCacheEntries(
32+ const std::function<void(const rocksdb::Slice& key,
33+ void* value,
34+ size_t charge,
35+ DeleterFn)>& callback,
36+ bool thread_safe)
37+{
38 if (thread_safe) {
39 mutex_.lock();
40 }
41 table_.ApplyToAllCacheEntries(
42- [callback](BinnedLRUHandle* h) { callback(h->value, h->charge); });
43+ [callback](BinnedLRUHandle* h) {
44+ callback(h->key(), h->value, h->charge, h->deleter);
45+ });
46 if (thread_safe) {
47 mutex_.unlock();
48 }
49@@ -463,6 +470,12 @@ std::string BinnedLRUCacheShard::GetPrintableOptions() const {
50 return std::string(buffer);
51 }
52
53+DeleterFn BinnedLRUCacheShard::GetDeleter(rocksdb::Cache::Handle* h) const
54+{
55+ auto* handle = reinterpret_cast<BinnedLRUHandle*>(h);
56+ return handle->deleter;
57+}
58+
59 BinnedLRUCache::BinnedLRUCache(CephContext *c,
60 size_t capacity,
61 int num_shard_bits,
62@@ -518,6 +531,13 @@ void BinnedLRUCache::DisownData() {
63 #endif // !__SANITIZE_ADDRESS__
64 }
65
66+#if (ROCKSDB_MAJOR >= 6 && ROCKSDB_MINOR >= 22)
67+DeleterFn BinnedLRUCache::GetDeleter(Handle* handle) const
68+{
69+ return reinterpret_cast<const BinnedLRUHandle*>(handle)->deleter;
70+}
71+#endif
72+
73 size_t BinnedLRUCache::TEST_GetLRUSize() {
74 size_t lru_size_of_all_shards = 0;
75 for (int i = 0; i < num_shards_; i++) {
76diff --git a/src/kv/rocksdb_cache/BinnedLRUCache.h b/src/kv/rocksdb_cache/BinnedLRUCache.h
77index b0fb7148..ba0c2720 100644
78--- a/src/kv/rocksdb_cache/BinnedLRUCache.h
79+++ b/src/kv/rocksdb_cache/BinnedLRUCache.h
80@@ -205,13 +205,19 @@ class alignas(CACHE_LINE_SIZE) BinnedLRUCacheShard : public CacheShard {
81 virtual size_t GetUsage() const override;
82 virtual size_t GetPinnedUsage() const override;
83
84- virtual void ApplyToAllCacheEntries(void (*callback)(void*, size_t),
85- bool thread_safe) override;
86+ virtual void ApplyToAllCacheEntries(
87+ const std::function<void(const rocksdb::Slice& key,
88+ void* value,
89+ size_t charge,
90+ DeleterFn)>& callback,
91+ bool thread_safe) override;
92
93 virtual void EraseUnRefEntries() override;
94
95 virtual std::string GetPrintableOptions() const override;
96
97+ virtual DeleterFn GetDeleter(rocksdb::Cache::Handle* handle) const override;
98+
99 void TEST_GetLRUList(BinnedLRUHandle** lru, BinnedLRUHandle** lru_low_pri);
100
101 // Retrieves number of elements in LRU, for unit test purpose only
102@@ -303,7 +309,9 @@ class BinnedLRUCache : public ShardedCache {
103 virtual size_t GetCharge(Handle* handle) const override;
104 virtual uint32_t GetHash(Handle* handle) const override;
105 virtual void DisownData() override;
106-
107+#if (ROCKSDB_MAJOR >= 6 && ROCKSDB_MINOR >= 22)
108+ virtual DeleterFn GetDeleter(Handle* handle) const override;
109+#endif
110 // Retrieves number of elements in LRU, for unit test purpose only
111 size_t TEST_GetLRUSize();
112 // Sets the high pri pool ratio
113diff --git a/src/kv/rocksdb_cache/ShardedCache.cc b/src/kv/rocksdb_cache/ShardedCache.cc
114index ef3b3b98..6cbd89ad 100644
115--- a/src/kv/rocksdb_cache/ShardedCache.cc
116+++ b/src/kv/rocksdb_cache/ShardedCache.cc
117@@ -109,13 +109,36 @@ size_t ShardedCache::GetPinnedUsage() const {
118 return usage;
119 }
120
121+#if (ROCKSDB_MAJOR >= 6 && ROCKSDB_MINOR >= 22)
122+DeleterFn ShardedCache::GetDeleter(Handle* handle) const
123+{
124+ uint32_t hash = GetHash(handle);
125+ return GetShard(Shard(hash))->GetDeleter(handle);
126+}
127+
128+void ShardedCache::ApplyToAllEntries(
129+ const std::function<void(const rocksdb::Slice& key, void* value, size_t charge,
130+ DeleterFn deleter)>& callback,
131+ const ApplyToAllEntriesOptions& opts)
132+{
133+ int num_shards = 1 << num_shard_bits_;
134+ for (int s = 0; s < num_shards; s++) {
135+ GetShard(s)->ApplyToAllCacheEntries(callback, true /* thread_safe */);
136+ }
137+}
138+#else
139 void ShardedCache::ApplyToAllCacheEntries(void (*callback)(void*, size_t),
140 bool thread_safe) {
141 int num_shards = 1 << num_shard_bits_;
142 for (int s = 0; s < num_shards; s++) {
143- GetShard(s)->ApplyToAllCacheEntries(callback, thread_safe);
144+ GetShard(s)->ApplyToAllCacheEntries(
145+ [callback](const rocksdb::Slice&, void* value, size_t charge, DeleterFn) {
146+ callback(value, charge);
147+ },
148+ thread_safe);
149 }
150 }
151+#endif
152
153 void ShardedCache::EraseUnRefEntries() {
154 int num_shards = 1 << num_shard_bits_;
155diff --git a/src/kv/rocksdb_cache/ShardedCache.h b/src/kv/rocksdb_cache/ShardedCache.h
156index 674e5322..4d3ca302 100644
157--- a/src/kv/rocksdb_cache/ShardedCache.h
158+++ b/src/kv/rocksdb_cache/ShardedCache.h
159@@ -14,6 +14,7 @@
160 #include <string>
161 #include <mutex>
162
163+#include "rocksdb/version.h"
164 #include "rocksdb/cache.h"
165 #include "include/ceph_hash.h"
166 #include "common/PriorityCache.h"
167@@ -45,10 +46,15 @@ class CacheShard {
168 virtual void SetStrictCapacityLimit(bool strict_capacity_limit) = 0;
169 virtual size_t GetUsage() const = 0;
170 virtual size_t GetPinnedUsage() const = 0;
171- virtual void ApplyToAllCacheEntries(void (*callback)(void*, size_t),
172- bool thread_safe) = 0;
173+ virtual void ApplyToAllCacheEntries(
174+ const std::function<void(const rocksdb::Slice& key,
175+ void* value,
176+ size_t charge,
177+ DeleterFn)>& callback,
178+ bool thread_safe) = 0;
179 virtual void EraseUnRefEntries() = 0;
180 virtual std::string GetPrintableOptions() const { return ""; }
181+ virtual DeleterFn GetDeleter(rocksdb::Cache::Handle* handle) const = 0;
182 };
183
184 // Generic cache interface which shards cache by hash of keys. 2^num_shard_bits
185@@ -77,9 +83,19 @@ class ShardedCache : public rocksdb::Cache, public PriorityCache::PriCache {
186 virtual size_t GetUsage(rocksdb::Cache::Handle* handle) const override;
187 virtual size_t GetPinnedUsage() const override;
188 virtual size_t GetCharge(Handle* handle) const = 0;
189+#if (ROCKSDB_MAJOR >= 6 && ROCKSDB_MINOR >= 22)
190+ virtual DeleterFn GetDeleter(Handle* handle) const override;
191+#endif
192 virtual void DisownData() override = 0;
193+#if (ROCKSDB_MAJOR >= 6 && ROCKSDB_MINOR >= 22)
194+ virtual void ApplyToAllEntries(
195+ const std::function<void(const rocksdb::Slice& key, void* value, size_t charge,
196+ DeleterFn deleter)>& callback,
197+ const ApplyToAllEntriesOptions& opts) override;
198+#else
199 virtual void ApplyToAllCacheEntries(void (*callback)(void*, size_t),
200 bool thread_safe) override;
201+#endif
202 virtual void EraseUnRefEntries() override;
203 virtual std::string GetPrintableOptions() const override;
204 virtual CacheShard* GetShard(int shard) = 0;
205--
2062.33.0
207
diff --git a/recipes-extended/ceph/ceph/0005-kv-rocksdb_cache-mark-Shard-const.patch b/recipes-extended/ceph/ceph/0005-kv-rocksdb_cache-mark-Shard-const.patch
deleted file mode 100644
index bc18574c..00000000
--- a/recipes-extended/ceph/ceph/0005-kv-rocksdb_cache-mark-Shard-const.patch
+++ /dev/null
@@ -1,32 +0,0 @@
1From 52c57e25a5e2c617bc797b8ce50060b5894bd7fc Mon Sep 17 00:00:00 2001
2From: Kefu Chai <kchai@redhat.com>
3Date: Tue, 17 Aug 2021 18:06:31 +0800
4Subject: [PATCH 5/6] kv/rocksdb_cache: mark Shard() const
5
6it does not mutate anything, so mark it `const`.
7
8Signed-off-by: Kefu Chai <kchai@redhat.com>
9
10Upstream-Status: Backport [0296ac4458c0be0609f033e15b0fa8c6c9c20049]
11
12Signed-off-by: Sakib Sajal <sakib.sajal@windriver.com>
13---
14 src/kv/rocksdb_cache/ShardedCache.h | 2 +-
15 1 file changed, 1 insertion(+), 1 deletion(-)
16
17diff --git a/src/kv/rocksdb_cache/ShardedCache.h b/src/kv/rocksdb_cache/ShardedCache.h
18index 4d3ca302..f98421a0 100644
19--- a/src/kv/rocksdb_cache/ShardedCache.h
20+++ b/src/kv/rocksdb_cache/ShardedCache.h
21@@ -136,7 +136,7 @@ class ShardedCache : public rocksdb::Cache, public PriorityCache::PriCache {
22 // return Hash(s.data(), s.size(), 0);
23 }
24
25- uint32_t Shard(uint32_t hash) {
26+ uint32_t Shard(uint32_t hash) const {
27 // Note, hash >> 32 yields hash in gcc, not the zero we expect!
28 return (num_shard_bits_ > 0) ? (hash >> (32 - num_shard_bits_)) : 0;
29 }
30--
312.33.0
32
diff --git a/recipes-extended/ceph/ceph/CVE-2021-3979.patch b/recipes-extended/ceph/ceph/CVE-2021-3979.patch
deleted file mode 100644
index 081b32ba..00000000
--- a/recipes-extended/ceph/ceph/CVE-2021-3979.patch
+++ /dev/null
@@ -1,158 +0,0 @@
1From 47c33179f9a15ae95cc1579a421be89378602656 Mon Sep 17 00:00:00 2001
2From: Guillaume Abrioux <gabrioux@redhat.com>
3Date: Tue, 25 Jan 2022 10:25:53 +0100
4Subject: [PATCH] ceph-volume: honour osd_dmcrypt_key_size option
5
6ceph-volume doesn't honour osd_dmcrypt_key_size.
7It means the default size is always applied.
8
9It also changes the default value in `get_key_size_from_conf()`
10
11From cryptsetup manpage:
12
13> For XTS mode you can optionally set a key size of 512 bits with the -s option.
14
15Using more than 512bits will end up with the following error message:
16
17```
18Key size in XTS mode must be 256 or 512 bits.
19```
20
21Fixes: https://tracker.ceph.com/issues/54006
22
23Signed-off-by: Guillaume Abrioux <gabrioux@redhat.com>
24
25Upstream-Status: Backport
26 github.com/ceph/ceph.git
27 equivalent to cherry-pick of commit 47c33179f9a15ae95cc1579a421be89378602656
28
29CVE: CVE-2021-3979
30
31Signed-off-by: Joe Slater <joe.slater@windriver.com>
32---
33 .../ceph_volume/tests/util/test_encryption.py | 41 +++++++++++++------
34 .../ceph_volume/util/encryption.py | 34 ++++++++++-----
35 2 files changed, 51 insertions(+), 24 deletions(-)
36
37diff --git a/src/ceph-volume/ceph_volume/tests/util/test_encryption.py b/src/ceph-volume/ceph_volume/tests/util/test_encryption.py
38index e1420b440d3..c86dc50b7c7 100644
39--- a/src/ceph-volume/ceph_volume/tests/util/test_encryption.py
40+++ b/src/ceph-volume/ceph_volume/tests/util/test_encryption.py
41@@ -1,5 +1,31 @@
42 from ceph_volume.util import encryption
43+import base64
44
45+class TestGetKeySize(object):
46+ def test_get_size_from_conf_default(self, conf_ceph_stub):
47+ conf_ceph_stub('''
48+ [global]
49+ fsid=asdf
50+ ''')
51+ assert encryption.get_key_size_from_conf() == '512'
52+
53+ def test_get_size_from_conf_custom(self, conf_ceph_stub):
54+ conf_ceph_stub('''
55+ [global]
56+ fsid=asdf
57+ [osd]
58+ osd_dmcrypt_key_size=256
59+ ''')
60+ assert encryption.get_key_size_from_conf() == '256'
61+
62+ def test_get_size_from_conf_custom_invalid(self, conf_ceph_stub):
63+ conf_ceph_stub('''
64+ [global]
65+ fsid=asdf
66+ [osd]
67+ osd_dmcrypt_key_size=1024
68+ ''')
69+ assert encryption.get_key_size_from_conf() == '512'
70
71 class TestStatus(object):
72
73@@ -37,17 +63,6 @@ class TestDmcryptClose(object):
74
75 class TestDmcryptKey(object):
76
77- def test_dmcrypt_with_default_size(self, conf_ceph_stub):
78- conf_ceph_stub('[global]\nfsid=asdf-lkjh')
79- result = encryption.create_dmcrypt_key()
80- assert len(result) == 172
81-
82- def test_dmcrypt_with_custom_size(self, conf_ceph_stub):
83- conf_ceph_stub('''
84- [global]
85- fsid=asdf
86- [osd]
87- osd_dmcrypt_size=8
88- ''')
89+ def test_dmcrypt(self):
90 result = encryption.create_dmcrypt_key()
91- assert len(result) == 172
92+ assert len(base64.b64decode(result)) == 128
93diff --git a/src/ceph-volume/ceph_volume/util/encryption.py b/src/ceph-volume/ceph_volume/util/encryption.py
94index 72a0ccf121e..2a2c03337b6 100644
95--- a/src/ceph-volume/ceph_volume/util/encryption.py
96+++ b/src/ceph-volume/ceph_volume/util/encryption.py
97@@ -9,21 +9,29 @@ from .disk import lsblk, device_family, get_part_entry_type
98
99 logger = logging.getLogger(__name__)
100
101-
102-def create_dmcrypt_key():
103+def get_key_size_from_conf():
104 """
105- Create the secret dm-crypt key used to decrypt a device.
106+ Return the osd dmcrypt key size from config file.
107+ Default is 512.
108 """
109- # get the customizable dmcrypt key size (in bits) from ceph.conf fallback
110- # to the default of 1024
111- dmcrypt_key_size = conf.ceph.get_safe(
112+ default_key_size = '512'
113+ key_size = conf.ceph.get_safe(
114 'osd',
115 'osd_dmcrypt_key_size',
116- default=1024,
117- )
118- # The size of the key is defined in bits, so we must transform that
119- # value to bytes (dividing by 8) because we read in bytes, not bits
120- random_string = os.urandom(int(dmcrypt_key_size / 8))
121+ default='512')
122+
123+ if key_size not in ['256', '512']:
124+ logger.warning(("Invalid value set for osd_dmcrypt_key_size ({}). "
125+ "Falling back to {}bits".format(key_size, default_key_size)))
126+ return default_key_size
127+
128+ return key_size
129+
130+def create_dmcrypt_key():
131+ """
132+ Create the secret dm-crypt key (KEK) used to encrypt/decrypt the Volume Key.
133+ """
134+ random_string = os.urandom(128)
135 key = base64.b64encode(random_string).decode('utf-8')
136 return key
137
138@@ -38,6 +46,8 @@ def luks_format(key, device):
139 command = [
140 'cryptsetup',
141 '--batch-mode', # do not prompt
142+ '--key-size',
143+ get_key_size_from_conf(),
144 '--key-file', # misnomer, should be key
145 '-', # because we indicate stdin for the key here
146 'luksFormat',
147@@ -83,6 +93,8 @@ def luks_open(key, device, mapping):
148 """
149 command = [
150 'cryptsetup',
151+ '--key-size',
152+ get_key_size_from_conf(),
153 '--key-file',
154 '-',
155 '--allow-discards', # allow discards (aka TRIM) requests for device
156--
1572.35.1
158
diff --git a/recipes-extended/ceph/ceph_15.2.15.bb b/recipes-extended/ceph/ceph_18.2.0.bb
index 2c5cdf58..35188106 100644
--- a/recipes-extended/ceph/ceph_15.2.15.bb
+++ b/recipes-extended/ceph/ceph_18.2.0.bb
@@ -2,7 +2,7 @@ SUMMARY = "User space components of the Ceph file system"
2LICENSE = "LGPL-2.1-only & GPL-2.0-only & Apache-2.0 & MIT" 2LICENSE = "LGPL-2.1-only & GPL-2.0-only & Apache-2.0 & MIT"
3LIC_FILES_CHKSUM = "file://COPYING-LGPL2.1;md5=fbc093901857fcd118f065f900982c24 \ 3LIC_FILES_CHKSUM = "file://COPYING-LGPL2.1;md5=fbc093901857fcd118f065f900982c24 \
4 file://COPYING-GPL2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ 4 file://COPYING-GPL2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
5 file://COPYING;md5=4eb012c221c5fd4b760029a2981a6754 \ 5 file://COPYING;md5=5351120989d78252e65dc1a2a92e3617 \
6" 6"
7inherit cmake pkgconfig python3native python3-dir systemd 7inherit cmake pkgconfig python3native python3-dir systemd
8# Disable python pybind support for ceph temporary, when corss compiling pybind, 8# Disable python pybind support for ceph temporary, when corss compiling pybind,
@@ -13,29 +13,17 @@ SRC_URI = "http://download.ceph.com/tarballs/ceph-${PV}.tar.gz \
13 file://0001-fix-host-library-paths-were-used.patch \ 13 file://0001-fix-host-library-paths-were-used.patch \
14 file://ceph.conf \ 14 file://ceph.conf \
15 file://0001-cmake-add-support-for-python3.11.patch \ 15 file://0001-cmake-add-support-for-python3.11.patch \
16 file://0001-SnappyCompressor.h-fix-snappy-compiler-error.patch \
17 file://0001-buffer.h-add-missing-header-file-due-to-gcc-upgrade.patch \
18 file://0002-common-fix-FTBFS-due-to-dout-need_dynamic-on-GCC-12.patch \
19 file://CVE-2021-3979.patch \
20 file://0001-kv-rocksdb_cache-drop-ROCKSDB_PRIszt.patch \
21 file://0002-kv-rocksdb_cache-reorder-ShardedCache-methods-declar.patch \
22 file://0003-kv-rocksdb_cache-define-DeleterFn-function-pointer-t.patch \
23 file://0004-kv-rocksdb_cache-implement-methods-required-by-rocks.patch \
24 file://0005-kv-rocksdb_cache-mark-Shard-const.patch \
25 file://0006-rocksdb-build-with-rocksdb-7.y.z.patch \
26 file://0001-common-fix-build-with-GCC-13-missing-cstdint-include.patch \
27 file://0002-common-replace-BitVector-NoInitAllocator-with-wrappe.patch \
28 file://0003-librdb-fix-build-with-gcc-13.patch \
29" 16"
30 17
31SRC_URI[sha256sum] = "5dccdaff2ebe18d435b32bfc06f8b5f474bf6ac0432a6a07d144b7c56700d0bf" 18SRC_URI[sha256sum] = "495b63e1146c604018ae0cb29bf769b5d6235e3c95849c43513baf12bba1364d"
32 19
33DEPENDS = "boost bzip2 curl expat gperf-native \ 20DEPENDS = "boost bzip2 curl cryptsetup expat gperf-native \
34 keyutils libaio libibverbs lz4 \ 21 keyutils libaio libibverbs lua lz4 \
35 nspr nss \ 22 nspr nss ninja-native \
36 oath openldap openssl \ 23 oath openldap openssl \
37 python3 python3-cython-native rabbitmq-c rocksdb snappy udev \ 24 python3 python3-native python3-cython-native python3-pyyaml-native \
38 valgrind xfsprogs zlib \ 25 rabbitmq-c rocksdb snappy thrift udev \
26 valgrind xfsprogs zlib libgcc \
39" 27"
40SYSTEMD_SERVICE:${PN} = " \ 28SYSTEMD_SERVICE:${PN} = " \
41 ceph-radosgw@.service \ 29 ceph-radosgw@.service \
@@ -72,21 +60,48 @@ EXTRA_OECMAKE = "-DWITH_MANPAGE=OFF \
72 -DWITH_SYSTEM_ROCKSDB=ON \ 60 -DWITH_SYSTEM_ROCKSDB=ON \
73 -DWITH_RDMA=OFF \ 61 -DWITH_RDMA=OFF \
74 -DWITH_RADOSGW_AMQP_ENDPOINT=OFF \ 62 -DWITH_RADOSGW_AMQP_ENDPOINT=OFF \
75 -DPYTHON_INSTALL_DIR=${PYTHON_SITEPACKAGES_DIR} -DPYTHON_DESIRED=3 \
76 -DPython3_EXECUTABLE=${PYTHON} \
77 -DWITH_RADOSGW_KAFKA_ENDPOINT=OFF \ 63 -DWITH_RADOSGW_KAFKA_ENDPOINT=OFF \
78 -DWITH_REENTRANT_STRSIGNAL=ON \ 64 -DWITH_REENTRANT_STRSIGNAL=ON \
79" 65 -DWITH_PYTHON3=3.12 \
66 -DPYTHON_DESIRED=3 \
67 -DCMAKE_TOOLCHAIN_FILE:FILEPATH=${WORKDIR}/toolchain.cmake \
68 "
69
70EXTRA_OECMAKE += "-DThrift_INCLUDE_DIR:PATH=${STAGING_INCDIR} \
71 -DThrift_LIBRARIES:PATH=${STAGING_LIBDIR} \
72 "
73
74# retired options:
75# -DPython3_VERSION=${PYTHON_BASEVERSION}
76# -DPython3_USE_STATIC_LIBS=FALSE
77# -DPython3_INCLUDE_DIR:PATH=${PYTHON_INCLUDE_DIR}
78# -DPython3_LIBRARY:PATH=${PYTHON_LIBRARY}
79# -DPython3_ROOT_DIR:PATH=${PYTHON_SITEPACKAGES_DIR}
80# -DPython3_EXECUTABLE:PATH="${PYTHON}"
80 81
81CXXFLAGS += "${HOST_CC_ARCH} ${TOOLCHAIN_OPTIONS}" 82CXXFLAGS += "${HOST_CC_ARCH} ${TOOLCHAIN_OPTIONS}"
82CFLAGS += "${HOST_CC_ARCH} ${TOOLCHAIN_OPTIONS}" 83CFLAGS += "${HOST_CC_ARCH} ${TOOLCHAIN_OPTIONS}"
83 84
84export STAGING_DIR_HOST 85export STAGING_DIR_HOST
85 86
87do_compile:prepend() {
88 cmake_runcmake_build --target legacy-option-headers
89}
90
91# do_compile() {
92# ninja -v ${PARALLEL_MAKE}
93# }
94do_compile() {
95 cmake_runcmake_build --target all
96}
97
86do_configure:prepend () { 98do_configure:prepend () {
87 echo "set( CMAKE_SYSROOT \"${RECIPE_SYSROOT}\" )" >> ${WORKDIR}/toolchain.cmake 99 echo "set( CMAKE_SYSROOT \"${RECIPE_SYSROOT}\" )" >> ${WORKDIR}/toolchain.cmake
88 echo "set( CMAKE_DESTDIR \"${D}\" )" >> ${WORKDIR}/toolchain.cmake 100 echo "set( CMAKE_DESTDIR \"${D}\" )" >> ${WORKDIR}/toolchain.cmake
89 echo "set( PYTHON_SITEPACKAGES_DIR \"${PYTHON_SITEPACKAGES_DIR}\" )" >> ${WORKDIR}/toolchain.cmake 101 echo "set( PYTHON_SITEPACKAGES_DIR \"${PYTHON_SITEPACKAGES_DIR}\" )" >> ${WORKDIR}/toolchain.cmake
102 # echo "set( CMAKE_C_COMPILER_WORKS TRUE)" >> ${WORKDIR}/toolchain.cmake
103 # echo "set( CMAKE_CXX_COMPILER_FORCED TRUE)" >> ${WORKDIR}/toolchain.cmake
104 echo "set( CMAKE_C_COMPILER_FORCED TRUE )" >> ${WORKDIR}/toolchain.cmake
90} 105}
91 106
92do_install:append () { 107do_install:append () {