diff --git a/.ceph.metadata b/.ceph.metadata index cb4918b..7d10768 100644 --- a/.ceph.metadata +++ b/.ceph.metadata @@ -1 +1 @@ -94e58f4c16cd86d255a6a306181dd5050a3246fe SOURCES/ceph-16.2.7.tar.gz +2eb3d38288df77154e7515b28b8eb27cb267a190 SOURCES/ceph-17.1.0.tar.gz diff --git a/README.md b/README.md index eed4fc1..76122bf 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ Branch names follow convention like `c-sig-storage-ceph-VERSION>` as descibed on [Naming and Patterns for Mapping Git Branches to Koji Tags] (https://wiki.centos.org/BrianStinson/GitBranchesandKojiTags) -* c9s-sig-storage-ceph-pacific: CentOS-8 +* c9s-sig-storage-ceph-quincy: CentOS-8 * ... Instructions for building the ceph package for the CentOS Storage SIG @@ -25,24 +25,24 @@ Get the lookaside uploader script from ssh://git@git.centos.org/centos-git-commo To build: 1. Upload the source tar file to the lookaside cache, e.g.: - $ lookaside_upload -f SOURCES/ceph-16.2.6.tar.gz -n ceph -b c9s-sig-storage-ceph-pacific + $ lookaside_upload -f SOURCES/ceph-17.1.0.tar.gz -n ceph -b c9s-sig-storage-ceph-quincy 2. update the .glusterfs.metadata with the hash from step 1: $ cat .ceph.metadata -e9c6a6a482b8e46117c2a6c37b50c569bd62d92e SOURCES/ceph-16.5.tar.gz +e9c6a6a482b8e46117c2a6c37b50c569bd62d92e SOURCES/ceph-17.1.0.tar.gz 3. commit and push SPECS/ceph.spec and .ceph.metadata, e.g.: $ git add SPECS/ceph.spec .ceph.metadata - $ git push origin c9s-sig-storage-ceph-pacific + $ git push origin c9s-sig-storage-ceph-quincy 4. retrieve the commit for step 3: $ git log|head -n 1 commit 29f19456be12986e86392652331e3a56ff0a88a0 5. build - $ cbs build storage9s-ceph-pacific-el9s git+https://git.centos.org/rpms/ceph.git#29f19456be12986e86392652331e3a56ff0a88a0 + $ cbs build storage9s-ceph-quincy-el9s git+https://git.centos.org/rpms/ceph.git#29f19456be12986e86392652331e3a56ff0a88a0 - $ cbs build [--scratch] storage9s-ceph-pacific-el9s ceph-16.2.6-1.el9s.src.rpm + $ cbs build [--scratch] storage9s-ceph-quincy-el9s ceph-17.1.0-1.el9s.src.rpm diff --git a/SOURCES/0003-src-common-bitstr.h.patch b/SOURCES/0003-src-common-bitstr.h.patch index ed2b0ce..3c7a516 100644 --- a/SOURCES/0003-src-common-bitstr.h.patch +++ b/SOURCES/0003-src-common-bitstr.h.patch @@ -8,14 +8,3 @@ namespace ceph { class Formatter; ---- ceph-15.2.4/src/global/signal_handler.h.orig 2020-07-17 12:57:54.763628429 -0400 -+++ ceph-15.2.4/src/global/signal_handler.h 2020-07-17 12:58:10.610628429 -0400 -@@ -16,6 +16,8 @@ - #define CEPH_GLOBAL_SIGNAL_HANDLER_H - - #include -+#include -+ - #include "acconfig.h" - - typedef void (*signal_handler_t)(int); diff --git a/SOURCES/0007-src-test-neorados-CMakeLists.txt.patch b/SOURCES/0007-src-test-neorados-CMakeLists.txt.patch deleted file mode 100644 index a160f38..0000000 --- a/SOURCES/0007-src-test-neorados-CMakeLists.txt.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- ceph-16.1.0-43-g6b74fb5c/src/test/neorados/CMakeLists.txt.orig 2021-02-01 08:25:18.006965821 -0500 -+++ ceph-16.1.0-43-g6b74fb5c/src/test/neorados/CMakeLists.txt 2021-02-01 08:25:34.244407147 -0500 -@@ -19,7 +19,7 @@ - target_link_libraries(ceph_test_neorados_op_speed - libneorados fmt::fmt ${unittest_libs}) - --add_library(neoradostest-support common_tests.cc) -+add_library(neoradostest-support STATIC common_tests.cc) - target_link_libraries(neoradostest-support - libneorados fmt::fmt) - diff --git a/SOURCES/0010-CET-Add-CET-marker-to-crc32c_intel_fast_zero_asm.s.patch b/SOURCES/0010-CET-Add-CET-marker-to-crc32c_intel_fast_zero_asm.s.patch new file mode 100644 index 0000000..7b3e34b --- /dev/null +++ b/SOURCES/0010-CET-Add-CET-marker-to-crc32c_intel_fast_zero_asm.s.patch @@ -0,0 +1,27 @@ +From 1999108aeb1f6f93a19ea7bb64c6ae8b87d1b264 Mon Sep 17 00:00:00 2001 +From: "H.J. Lu" +Date: Thu, 20 Jan 2022 05:33:13 -0800 +Subject: [PATCH] CET: Add CET marker to crc32c_intel_fast_zero_asm.s + +Add .note.gnu.property section to crc32c_intel_fast_zero_asm.s to mark +for IBT and SHSTK compatibility. +--- + src/common/crc32c_intel_fast_zero_asm.s | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/common/crc32c_intel_fast_zero_asm.s b/src/common/crc32c_intel_fast_zero_asm.s +index 216ecf639f3..2e291d858f3 100644 +--- a/src/common/crc32c_intel_fast_zero_asm.s ++++ b/src/common/crc32c_intel_fast_zero_asm.s +@@ -654,4 +654,8 @@ slversion crc32_iscsi_zero_00, 00, 02, 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 +-- +2.34.1 + diff --git a/SOURCES/0010-os-bluestore-strip-trailing-slash-for-directory-list.patch b/SOURCES/0010-os-bluestore-strip-trailing-slash-for-directory-list.patch deleted file mode 100644 index 036f0fc..0000000 --- a/SOURCES/0010-os-bluestore-strip-trailing-slash-for-directory-list.patch +++ /dev/null @@ -1,57 +0,0 @@ -From 3aa31813980d22719277a04797df48310acdff66 Mon Sep 17 00:00:00 2001 -From: Jonas Jelten -Date: Mon, 15 Mar 2021 23:21:07 +0100 -Subject: [PATCH] os/bluestore: strip trailing slash for directory listings - -Calls to BlueRocksEnv::GetChildren may contain a trailing / in the -queried directory, which is stripped away with this patch. - -If it's not stripped, the directory entry is not found in BlueFS: -``` -10 bluefs readdir db/ -20 bluefs readdir dir db/ not found - 3 rocksdb: [db/db_impl/db_impl_open.cc:1785] Persisting Option File error: OK -``` - -Fixes: https://tracker.ceph.com/issues/49815 -Signed-off-by: Jonas Jelten ---- - src/os/bluestore/BlueFS.cc | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/src/os/bluestore/BlueFS.cc b/src/os/bluestore/BlueFS.cc -index ea39626aef..62b9d27f58 100644 ---- a/src/os/bluestore/BlueFS.cc -+++ b/src/os/bluestore/BlueFS.cc -@@ -3493,9 +3493,14 @@ - - int BlueFS::readdir(const string& dirname, vector *ls) - { -+ std::string dname = dirname; -+ // dirname may contain a trailing / -+ if (!dname.empty() && dname.back() == '/') { -+ dname.pop_back(); -+ } - std::lock_guard l(lock); -- dout(10) << __func__ << " " << dirname << dendl; -- if (dirname.empty()) { -+ dout(10) << __func__ << " " << dname << dendl; -+ if (dname.empty()) { - // list dirs - ls->reserve(dir_map.size() + 2); - for (auto& q : dir_map) { -@@ -3503,9 +3508,9 @@ - } - } else { - // list files in dir -- map::iterator p = dir_map.find(dirname); -+ map::iterator p = dir_map.find(dname); - if (p == dir_map.end()) { -- dout(20) << __func__ << " dir " << dirname << " not found" << dendl; -+ dout(20) << __func__ << " dir " << dname << " not found" << dendl; - return -ENOENT; - } - DirRef dir = p->second; --- -2.26.2 - diff --git a/SOURCES/0011-isa-l-CET-Add-CET-marker-to-x86-64-crc32-assembly-co.patch b/SOURCES/0011-isa-l-CET-Add-CET-marker-to-x86-64-crc32-assembly-co.patch new file mode 100644 index 0000000..9cf4e6b --- /dev/null +++ b/SOURCES/0011-isa-l-CET-Add-CET-marker-to-x86-64-crc32-assembly-co.patch @@ -0,0 +1,172 @@ +From bbcc1a69f787881f16156f3c789052942a564103 Mon Sep 17 00:00:00 2001 +From: "H.J. Lu" +Date: Thu, 20 Jan 2022 05:35:49 -0800 +Subject: [PATCH] isa-l/CET: Add CET marker to x86-64 crc32 assembly codes + +Add .note.gnu.property section to x86-64 crc32 assembly codes to mark +for IBT and SHSTK compatibility. +--- + crc/crc32_gzip_refl_by16_10.asm | 9 +++++++++ + crc/crc32_gzip_refl_by8.asm | 9 +++++++++ + crc/crc32_gzip_refl_by8_02.asm | 9 +++++++++ + 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 ++ ++%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_gzip_refl_by8.asm b/src/isa-l/crc/crc32_gzip_refl_by8.asm +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 ++ ++%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_gzip_refl_by8_02.asm b/src/isa-l/crc/crc32_gzip_refl_by8_02.asm +index 80d849e..1d5a75f 100644 +--- a/src/isa-l/crc/crc32_gzip_refl_by8_02.asm ++++ b/src/isa-l/crc/crc32_gzip_refl_by8_02.asm +@@ -553,3 +553,12 @@ pshufb_shf_table: + ; 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 0xc0000002,0x00000004,0x00000003,0x00000000 ++%endif +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 + ++%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_02.asm b/src/isa-l/crc/crc32_ieee_02.asm +index 8a472b0..dd7096a 100644 +--- a/src/isa-l/crc/crc32_ieee_02.asm ++++ b/src/isa-l/crc/crc32_ieee_02.asm +@@ -649,3 +649,12 @@ pshufb_shf_table: + ; 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 0xc0000002,0x00000004,0x00000003,0x00000000 ++%endif +diff --git a/src/isa-l/crc/crc32_ieee_by16_10.asm b/src/isa-l/crc/crc32_ieee_by16_10.asm +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 ++ ++%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 0xc0000002,0x00000004,0x00000003,0x00000000 ++%endif +-- +2.34.1 + diff --git a/SOURCES/0012-spdk-isa-l-CET-Add-CET-marker-to-x86-64-crc32-assemb.patch b/SOURCES/0012-spdk-isa-l-CET-Add-CET-marker-to-x86-64-crc32-assemb.patch new file mode 100644 index 0000000..baa9154 --- /dev/null +++ b/SOURCES/0012-spdk-isa-l-CET-Add-CET-marker-to-x86-64-crc32-assemb.patch @@ -0,0 +1,100 @@ +From 72e6d27e08c86c16e8931739a5e6ecbc06b102d5 Mon Sep 17 00:00:00 2001 +From: "H.J. Lu" +Date: Thu, 20 Jan 2022 05:40:56 -0800 +Subject: [PATCH] spdk/isa-l/CET: Add CET marker to x86-64 crc32 assembly codes + +Add .note.gnu.property section to x86-64 crc32 assembly codes to mark +for IBT and SHSTK compatibility. +--- + crc/crc32_gzip_refl_by8.asm | 9 +++++++++ + crc/crc32_ieee_01.asm | 8 ++++++++ + crc/crc32_ieee_by4.asm | 9 +++++++++ + crc/crc32_iscsi_00.asm | 8 ++++++++ + crc/crc32_iscsi_01.asm | 8 ++++++++ + 5 files changed, 42 insertions(+) + +diff --git a/src/spdk/isa-l/crc/crc32_gzip_refl_by8.asm b/src/spdk/isa-l/crc/crc32_gzip_refl_by8.asm +index 62f7e7d..97b0c4a 100644 +--- a/src/spdk/isa-l/crc/crc32_gzip_refl_by8.asm ++++ b/src/spdk/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 ++ ++%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/spdk/isa-l/crc/crc32_ieee_01.asm b/src/spdk/isa-l/crc/crc32_ieee_01.asm +index 32495ed..cfc443b 100644 +--- a/src/spdk/isa-l/crc/crc32_ieee_01.asm ++++ b/src/spdk/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 + ++%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/spdk/isa-l/crc/crc32_ieee_by4.asm b/src/spdk/isa-l/crc/crc32_ieee_by4.asm +index 39bed5a..847d0bd 100644 +--- a/src/spdk/isa-l/crc/crc32_ieee_by4.asm ++++ b/src/spdk/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 ++ ++%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/spdk/isa-l/crc/crc32_iscsi_00.asm b/src/spdk/isa-l/crc/crc32_iscsi_00.asm +index 4f81e3a..3d6b2d1 100644 +--- a/src/spdk/isa-l/crc/crc32_iscsi_00.asm ++++ b/src/spdk/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/spdk/isa-l/crc/crc32_iscsi_01.asm b/src/spdk/isa-l/crc/crc32_iscsi_01.asm +index 2a81517..c048413 100644 +--- a/src/spdk/isa-l/crc/crc32_iscsi_01.asm ++++ b/src/spdk/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 0xc0000002,0x00000004,0x00000003,0x00000000 ++%endif +-- +2.34.1 + diff --git a/SOURCES/0014-rgw-Replace-boost-string_ref-view-with-std-string_vi.patch b/SOURCES/0014-rgw-Replace-boost-string_ref-view-with-std-string_vi.patch deleted file mode 100644 index 58e34f2..0000000 --- a/SOURCES/0014-rgw-Replace-boost-string_ref-view-with-std-string_vi.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/src/rgw/rgw_string.h b/src/rgw/rgw_string.h -index 257daa9c1fe..90e64f98a25 100644 ---- a/src/rgw/rgw_string.h -+++ b/src/rgw/rgw_string.h -@@ -8,6 +8,8 @@ - #include - #include - #include -+#include -+#include - - #include - diff --git a/SOURCES/0015-src-kv-rocksdb_cache.patch b/SOURCES/0015-src-kv-rocksdb_cache.patch deleted file mode 100644 index 667770d..0000000 --- a/SOURCES/0015-src-kv-rocksdb_cache.patch +++ /dev/null @@ -1,296 +0,0 @@ -diff --git a/src/kv/rocksdb_cache/BinnedLRUCache.cc b/src/kv/rocksdb_cache/BinnedLRUCache.cc -index 0d657883e92de..47c56e2ddd769 100644 ---- a/src/kv/rocksdb_cache/BinnedLRUCache.cc -+++ b/src/kv/rocksdb_cache/BinnedLRUCache.cc -@@ -151,13 +151,20 @@ void BinnedLRUCacheShard::EraseUnRefEntries() { - } - } - --void BinnedLRUCacheShard::ApplyToAllCacheEntries(void (*callback)(void*, size_t), -- bool thread_safe) { -+void BinnedLRUCacheShard::ApplyToAllCacheEntries( -+ const std::function& callback, -+ bool thread_safe) -+{ - if (thread_safe) { - mutex_.lock(); - } - table_.ApplyToAllCacheEntries( -- [callback](BinnedLRUHandle* h) { callback(h->value, h->charge); }); -+ [callback](BinnedLRUHandle* h) { -+ callback(h->key(), h->value, h->charge, h->deleter); -+ }); - if (thread_safe) { - mutex_.unlock(); - } -@@ -345,7 +352,7 @@ bool BinnedLRUCacheShard::Release(rocksdb::Cache::Handle* handle, bool force_era - - rocksdb::Status BinnedLRUCacheShard::Insert(const rocksdb::Slice& key, uint32_t hash, void* value, - size_t charge, -- void (*deleter)(const rocksdb::Slice& key, void* value), -+ DeleterFn deleter, - rocksdb::Cache::Handle** handle, rocksdb::Cache::Priority priority) { - auto e = new BinnedLRUHandle(); - rocksdb::Status s; -@@ -464,6 +471,12 @@ std::string BinnedLRUCacheShard::GetPrintableOptions() const { - return std::string(buffer); - } - -+DeleterFn BinnedLRUCacheShard::GetDeleter(rocksdb::Cache::Handle* h) const -+{ -+ auto* handle = reinterpret_cast(h); -+ return handle->deleter; -+} -+ - BinnedLRUCache::BinnedLRUCache(CephContext *c, - size_t capacity, - int num_shard_bits, -@@ -519,6 +532,13 @@ void BinnedLRUCache::DisownData() { - #endif // !__SANITIZE_ADDRESS__ - } - -+#if (ROCKSDB_MAJOR >= 6 && ROCKSDB_MINOR >= 22) -+DeleterFn BinnedLRUCache::GetDeleter(Handle* handle) const -+{ -+ return reinterpret_cast(handle)->deleter; -+} -+#endif -+ - size_t BinnedLRUCache::TEST_GetLRUSize() { - size_t lru_size_of_all_shards = 0; - for (int i = 0; i < num_shards_; i++) { -diff --git a/src/kv/rocksdb_cache/BinnedLRUCache.h b/src/kv/rocksdb_cache/BinnedLRUCache.h -index 85608be0e5734..88bf4502e8927 100644 ---- a/src/kv/rocksdb_cache/BinnedLRUCache.h -+++ b/src/kv/rocksdb_cache/BinnedLRUCache.h -@@ -56,7 +56,7 @@ std::shared_ptr NewBinnedLRUCache( - - struct BinnedLRUHandle { - void* value; -- void (*deleter)(const rocksdb::Slice&, void* value); -+ DeleterFn deleter; - BinnedLRUHandle* next_hash; - BinnedLRUHandle* next; - BinnedLRUHandle* prev; -@@ -189,7 +189,7 @@ class alignas(CACHE_LINE_SIZE) BinnedLRUCacheShard : public CacheShard { - // Like Cache methods, but with an extra "hash" parameter. - virtual rocksdb::Status Insert(const rocksdb::Slice& key, uint32_t hash, void* value, - size_t charge, -- void (*deleter)(const rocksdb::Slice& key, void* value), -+ DeleterFn deleter, - rocksdb::Cache::Handle** handle, - rocksdb::Cache::Priority priority) override; - virtual rocksdb::Cache::Handle* Lookup(const rocksdb::Slice& key, uint32_t hash) override; -@@ -205,13 +205,19 @@ class alignas(CACHE_LINE_SIZE) BinnedLRUCacheShard : public CacheShard { - virtual size_t GetUsage() const override; - virtual size_t GetPinnedUsage() const override; - -- virtual void ApplyToAllCacheEntries(void (*callback)(void*, size_t), -- bool thread_safe) override; -+ virtual void ApplyToAllCacheEntries( -+ const std::function& callback, -+ bool thread_safe) override; - - virtual void EraseUnRefEntries() override; - - virtual std::string GetPrintableOptions() const override; - -+ virtual DeleterFn GetDeleter(rocksdb::Cache::Handle* handle) const override; -+ - void TEST_GetLRUList(BinnedLRUHandle** lru, BinnedLRUHandle** lru_low_pri); - - // Retrieves number of elements in LRU, for unit test purpose only -@@ -304,7 +310,9 @@ class BinnedLRUCache : public ShardedCache { - virtual size_t GetCharge(Handle* handle) const override; - virtual uint32_t GetHash(Handle* handle) const override; - virtual void DisownData() override; -- -+#if (ROCKSDB_MAJOR >= 6 && ROCKSDB_MINOR >= 22) -+ virtual DeleterFn GetDeleter(Handle* handle) const override; -+#endif - // Retrieves number of elements in LRU, for unit test purpose only - size_t TEST_GetLRUSize(); - // Sets the high pri pool ratio -diff --git a/src/kv/rocksdb_cache/ShardedCache.cc b/src/kv/rocksdb_cache/ShardedCache.cc -index 367140a94d8be..6cbd89ad6472c 100644 ---- a/src/kv/rocksdb_cache/ShardedCache.cc -+++ b/src/kv/rocksdb_cache/ShardedCache.cc -@@ -44,7 +44,7 @@ void ShardedCache::SetStrictCapacityLimit(bool strict_capacity_limit) { - } - - rocksdb::Status ShardedCache::Insert(const rocksdb::Slice& key, void* value, size_t charge, -- void (*deleter)(const rocksdb::Slice& key, void* value), -+ DeleterFn deleter, - rocksdb::Cache::Handle** handle, Priority priority) { - uint32_t hash = HashSlice(key); - return GetShard(Shard(hash)) -@@ -109,13 +109,36 @@ size_t ShardedCache::GetPinnedUsage() const { - return usage; - } - -+#if (ROCKSDB_MAJOR >= 6 && ROCKSDB_MINOR >= 22) -+DeleterFn ShardedCache::GetDeleter(Handle* handle) const -+{ -+ uint32_t hash = GetHash(handle); -+ return GetShard(Shard(hash))->GetDeleter(handle); -+} -+ -+void ShardedCache::ApplyToAllEntries( -+ const std::function& callback, -+ const ApplyToAllEntriesOptions& opts) -+{ -+ int num_shards = 1 << num_shard_bits_; -+ for (int s = 0; s < num_shards; s++) { -+ GetShard(s)->ApplyToAllCacheEntries(callback, true /* thread_safe */); -+ } -+} -+#else - void ShardedCache::ApplyToAllCacheEntries(void (*callback)(void*, size_t), - bool thread_safe) { - int num_shards = 1 << num_shard_bits_; - for (int s = 0; s < num_shards; s++) { -- GetShard(s)->ApplyToAllCacheEntries(callback, thread_safe); -+ GetShard(s)->ApplyToAllCacheEntries( -+ [callback](const rocksdb::Slice&, void* value, size_t charge, DeleterFn) { -+ callback(value, charge); -+ }, -+ thread_safe); - } - } -+#endif - - void ShardedCache::EraseUnRefEntries() { - int num_shards = 1 << num_shard_bits_; -@@ -131,7 +154,7 @@ std::string ShardedCache::GetPrintableOptions() const { - char buffer[kBufferSize]; - { - std::lock_guard l(capacity_mutex_); -- snprintf(buffer, kBufferSize, " capacity : %" ROCKSDB_PRIszt "\n", -+ snprintf(buffer, kBufferSize, " capacity : %zu\n", - capacity_); - ret.append(buffer); - snprintf(buffer, kBufferSize, " num_shard_bits : %d\n", num_shard_bits_); -diff --git a/src/kv/rocksdb_cache/ShardedCache.h b/src/kv/rocksdb_cache/ShardedCache.h -index 4d64893ab1c7b..f98421a09a33a 100644 ---- a/src/kv/rocksdb_cache/ShardedCache.h -+++ b/src/kv/rocksdb_cache/ShardedCache.h -@@ -14,6 +14,7 @@ - #include - #include - -+#include "rocksdb/version.h" - #include "rocksdb/cache.h" - #include "include/ceph_hash.h" - #include "common/PriorityCache.h" -@@ -22,10 +23,11 @@ - #ifndef CACHE_LINE_SIZE - #define CACHE_LINE_SIZE 64 // XXX arch-specific define - #endif --#define ROCKSDB_PRIszt "zu" - - namespace rocksdb_cache { - -+using DeleterFn = void (*)(const rocksdb::Slice& key, void* value); -+ - // Single cache shard interface. - class CacheShard { - public: -@@ -34,7 +36,7 @@ class CacheShard { - - virtual rocksdb::Status Insert(const rocksdb::Slice& key, uint32_t hash, void* value, - size_t charge, -- void (*deleter)(const rocksdb::Slice& key, void* value), -+ DeleterFn deleter, - rocksdb::Cache::Handle** handle, rocksdb::Cache::Priority priority) = 0; - virtual rocksdb::Cache::Handle* Lookup(const rocksdb::Slice& key, uint32_t hash) = 0; - virtual bool Ref(rocksdb::Cache::Handle* handle) = 0; -@@ -44,10 +46,15 @@ class CacheShard { - virtual void SetStrictCapacityLimit(bool strict_capacity_limit) = 0; - virtual size_t GetUsage() const = 0; - virtual size_t GetPinnedUsage() const = 0; -- virtual void ApplyToAllCacheEntries(void (*callback)(void*, size_t), -- bool thread_safe) = 0; -+ virtual void ApplyToAllCacheEntries( -+ const std::function& callback, -+ bool thread_safe) = 0; - virtual void EraseUnRefEntries() = 0; - virtual std::string GetPrintableOptions() const { return ""; } -+ virtual DeleterFn GetDeleter(rocksdb::Cache::Handle* handle) const = 0; - }; - - // Generic cache interface which shards cache by hash of keys. 2^num_shard_bits -@@ -57,34 +64,43 @@ class ShardedCache : public rocksdb::Cache, public PriorityCache::PriCache { - public: - ShardedCache(size_t capacity, int num_shard_bits, bool strict_capacity_limit); - virtual ~ShardedCache() = default; -+ // rocksdb::Cache - virtual const char* Name() const override = 0; -- virtual CacheShard* GetShard(int shard) = 0; -- virtual const CacheShard* GetShard(int shard) const = 0; -- virtual void* Value(Handle* handle) override = 0; -- virtual size_t GetCharge(Handle* handle) const = 0; -- virtual uint32_t GetHash(Handle* handle) const = 0; -- virtual void DisownData() override = 0; -- -- virtual void SetCapacity(size_t capacity) override; -- virtual void SetStrictCapacityLimit(bool strict_capacity_limit) override; -- - virtual rocksdb::Status Insert(const rocksdb::Slice& key, void* value, size_t charge, -- void (*deleter)(const rocksdb::Slice& key, void* value), -+ DeleterFn, - rocksdb::Cache::Handle** handle, Priority priority) override; - virtual rocksdb::Cache::Handle* Lookup(const rocksdb::Slice& key, rocksdb::Statistics* stats) override; - virtual bool Ref(rocksdb::Cache::Handle* handle) override; - virtual bool Release(rocksdb::Cache::Handle* handle, bool force_erase = false) override; -+ virtual void* Value(Handle* handle) override = 0; - virtual void Erase(const rocksdb::Slice& key) override; - virtual uint64_t NewId() override; -- virtual size_t GetCapacity() const override; -+ virtual void SetCapacity(size_t capacity) override; -+ virtual void SetStrictCapacityLimit(bool strict_capacity_limit) override; - virtual bool HasStrictCapacityLimit() const override; -+ virtual size_t GetCapacity() const override; - virtual size_t GetUsage() const override; - virtual size_t GetUsage(rocksdb::Cache::Handle* handle) const override; - virtual size_t GetPinnedUsage() const override; -+ virtual size_t GetCharge(Handle* handle) const = 0; -+#if (ROCKSDB_MAJOR >= 6 && ROCKSDB_MINOR >= 22) -+ virtual DeleterFn GetDeleter(Handle* handle) const override; -+#endif -+ virtual void DisownData() override = 0; -+#if (ROCKSDB_MAJOR >= 6 && ROCKSDB_MINOR >= 22) -+ virtual void ApplyToAllEntries( -+ const std::function& callback, -+ const ApplyToAllEntriesOptions& opts) override; -+#else - virtual void ApplyToAllCacheEntries(void (*callback)(void*, size_t), - bool thread_safe) override; -+#endif - virtual void EraseUnRefEntries() override; - virtual std::string GetPrintableOptions() const override; -+ virtual CacheShard* GetShard(int shard) = 0; -+ virtual const CacheShard* GetShard(int shard) const = 0; -+ virtual uint32_t GetHash(Handle* handle) const = 0; - - int GetNumShardBits() const { return num_shard_bits_; } - -@@ -120,7 +136,7 @@ class ShardedCache : public rocksdb::Cache, public PriorityCache::PriCache { - // return Hash(s.data(), s.size(), 0); - } - -- uint32_t Shard(uint32_t hash) { -+ uint32_t Shard(uint32_t hash) const { - // Note, hash >> 32 yields hash in gcc, not the zero we expect! - return (num_shard_bits_ > 0) ? (hash >> (32 - num_shard_bits_)) : 0; - } diff --git a/SOURCES/0016-src-tracing-patch b/SOURCES/0016-src-tracing-patch new file mode 100644 index 0000000..228d93f --- /dev/null +++ b/SOURCES/0016-src-tracing-patch @@ -0,0 +1,23 @@ +--- ceph-16.2.6-681-gfdc003bc/src/tracing/bluestore.tp.orig 2021-12-07 08:02:04.682972474 -0500 ++++ ceph-16.2.6-681-gfdc003bc/src/tracing/bluestore.tp 2021-12-07 08:03:13.840771852 -0500 +@@ -1,3 +1,9 @@ ++ ++#ifdef __x86_64__ ++#undef STAP_SDT_ARG_CONSTRAINT ++#define STAP_SDT_ARG_CONSTRAINT norx ++#endif ++ + #include "include/int_types.h" + + TRACEPOINT_EVENT(bluestore, transaction_state_duration, +--- ceph-16.2.6-681-gfdc003bc/src/tracing/librbd.tp.orig 2021-12-07 09:50:16.467579483 -0500 ++++ ceph-16.2.6-681-gfdc003bc/src/tracing/librbd.tp 2021-12-07 09:50:47.620026940 -0500 +@@ -1,3 +1,8 @@ ++#ifdef __x86_64__ ++#undef STAP_SDT_ARG_CONSTRAINT ++#define STAP_SDT_ARG_CONSTRAINT norx ++#endif ++ + #include "tracing/tracing-common.h" + #include "include/rbd/librbd.h" + #include "include/int_types.h" diff --git a/SOURCES/0017-gcc-12-omnibus.patch b/SOURCES/0017-gcc-12-omnibus.patch new file mode 100644 index 0000000..7e4f116 --- /dev/null +++ b/SOURCES/0017-gcc-12-omnibus.patch @@ -0,0 +1,83 @@ +--- ceph-16.2.7/src/include/buffer.h.orig 2022-01-17 12:17:19.193356237 -0500 ++++ ceph-16.2.7/src/include/buffer.h 2022-01-17 12:17:58.599639592 -0500 +@@ -38,6 +38,7 @@ + # include + #endif + ++#include + #include + #include + #include +--- ceph-16.2.7/src/common/LogEntry.cc.orig 2022-01-17 13:52:10.799134159 -0500 ++++ ceph-16.2.7/src/common/LogEntry.cc 2022-01-17 13:52:47.244469274 -0500 +@@ -183,7 +183,7 @@ + return "crit"; + default: + ceph_abort(); +- return 0; ++ return ""; + } + } + +--- ceph-16.2.7/src/common/dout.h.orig 2022-01-18 08:58:11.805226954 -0500 ++++ ceph-16.2.7/src/common/dout.h 2022-01-19 08:06:23.987388663 -0500 +@@ -99,11 +99,15 @@ + template + struct dynamic_marker_t { + T value; +- operator T() const { return value; } ++ // constexpr ctor isn't needed as it's an aggregate type ++ constexpr operator T() const { return value; } + }; + + template +-dynamic_marker_t need_dynamic(T&& t) { ++constexpr dynamic_marker_t need_dynamic(T&& t) { ++ // deprecated in C++17 but that's fine for testing ++ static_assert(std::is_literal_type_v); ++ static_assert(std::is_literal_type_v>); + return dynamic_marker_t{ std::forward(t) }; + } + +--- ceph-16.2.7/src/test/librados/tier_cxx.cc.orig 2022-01-19 09:30:47.209459506 -0500 ++++ ceph-16.2.7/src/test/librados/tier_cxx.cc 2022-01-19 10:02:47.783240298 -0500 +@@ -114,7 +114,7 @@ + #include "rgw/rgw_common.h" + + void check_fp_oid_refcount(librados::IoCtx& ioctx, std::string foid, uint64_t count, +- std::string fp_algo = NULL) ++ std::string fp_algo = "") + { + bufferlist t; + int size = foid.length(); +@@ -142,7 +142,7 @@ + ASSERT_LE(count, refs.count()); + } + +-string get_fp_oid(string oid, std::string fp_algo = NULL) ++string get_fp_oid(string oid, std::string fp_algo = "") + { + if (fp_algo == "sha1") { + unsigned char fingerprint[CEPH_CRYPTO_SHA1_DIGESTSIZE + 1]; +--- ceph-16.2.7/src/test/test_trans.cc.orig 2022-01-19 13:24:33.460008897 -0500 ++++ ceph-16.2.7/src/test/test_trans.cc 2022-01-19 13:24:58.211554005 -0500 +@@ -51,7 +51,7 @@ + cout << "#dev " << filename << std::endl; + cout << "#mb " << mb << std::endl; + +- ObjectStore *fs = new FileStore(cct.get(), filename, NULL); ++ ObjectStore *fs = new FileStore(cct.get(), filename, ""); + if (fs->mount() < 0) { + cout << "mount failed" << std::endl; + return -1; +--- ceph-17.0.0-10335-gfd206722/src/s3select/include/s3select_functions.h.orig 2022-02-11 17:21:40.268627997 -0500 ++++ ceph-17.0.0-10335-gfd206722/src/s3select/include/s3select_functions.h 2022-02-11 17:21:57.155325437 -0500 +@@ -466,7 +466,7 @@ + + std::string print(int ident) override + { +- return std::string(0); ++ return std::string(""); + } + + void push_argument(base_statement* arg) diff --git a/SOURCES/0018-src-rgw-store-dbstore-CMakeLists.txt.patch b/SOURCES/0018-src-rgw-store-dbstore-CMakeLists.txt.patch new file mode 100644 index 0000000..9be5877 --- /dev/null +++ b/SOURCES/0018-src-rgw-store-dbstore-CMakeLists.txt.patch @@ -0,0 +1,37 @@ +--- ceph-17.1.0/src/rgw/store/dbstore/CMakeLists.txt.orig 2022-02-28 14:11:49.987077811 -0500 ++++ ceph-17.1.0/src/rgw/store/dbstore/CMakeLists.txt 2022-02-28 14:12:19.576542037 -0500 +@@ -38,6 +38,7 @@ + + # add pthread library + set (CMAKE_LINK_LIBRARIES ${CMAKE_LINK_LIBRARIES} pthread) ++set (CMAKE_LINK_LIBRARIES ${CMAKE_LINK_LIBRARIES} global) + + find_package(gtest QUIET) + if(WITH_TESTS) +--- ceph-17.1.0/src/rgw/CMakeLists.txt.orig 2022-02-28 16:21:08.430487482 -0500 ++++ ceph-17.1.0/src/rgw/CMakeLists.txt 2022-02-28 16:25:01.893245213 -0500 +@@ -254,10 +254,6 @@ + target_link_libraries(rgw_common PUBLIC ${jaeger_base}) + endif() + +-if(WITH_RADOSGW_DBSTORE) +- target_link_libraries(rgw_common PRIVATE global dbstore) +-endif() +- + set(rgw_a_srcs + rgw_auth_keystone.cc + rgw_client_io.cc +@@ -308,8 +304,13 @@ + find_package(RDKafka 0.9.2 REQUIRED) + endif() + ++if(WITH_RADOSGW_DBSTORE) ++set (DBSTORE_LIB dbstore) ++endif() ++ + target_link_libraries(rgw_a + PRIVATE ++ ${DBSTORE_LIB} + common_utf8 global + ${CRYPTO_LIBS} + ${LUA_LIBRARIES} diff --git a/SPECS/ceph.spec b/SPECS/ceph.spec index 455aa09..2ae3dc0 100644 --- a/SPECS/ceph.spec +++ b/SPECS/ceph.spec @@ -17,12 +17,11 @@ ################################################################################# # conditional build section # -# please read http://rpm.org/user_doc/conditional_builds.html for explanation of -# bcond syntax! +# please read this for explanation of bcond syntax: +# https://rpm-software-management.github.io/rpm/manual/conditionalbuilds.html ################################################################################# %global _hardened_build 1 -%bcond_with cephadm %bcond_with make_check %bcond_with zbd %bcond_with cmake_verbose_logging @@ -32,17 +31,16 @@ %else %bcond_without tcmalloc %endif -%bcond_with system_pmdk -%if 0%{?fedora} || 0%{?rhel} -%bcond_without selinux -%ifarch x86_64 ppc64le -%bcond_without rbd_rwl_cache %bcond_without rbd_ssd_cache +%ifarch x86_64 +%bcond_without rbd_rwl_cache %else %bcond_with rbd_rwl_cache -%bcond_with rbd_ssd_cache -%global _system_pmdk 0 +%global _system_pmdk 1 %endif +%if 0%{?fedora} || 0%{?rhel} +%bcond_without system_pmdk +%bcond_without selinux %if 0%{?rhel} >= 8 %bcond_with cephfs_java %else @@ -58,18 +56,15 @@ %global _remote_tarball_prefix https://download.ceph.com/tarballs/ %endif %if 0%{?suse_version} +%bcond_without system_pmdk %bcond_with amqp_endpoint %bcond_with cephfs_java %bcond_with kafka_endpoint %bcond_with libradosstriper %ifarch x86_64 aarch64 ppc64le %bcond_without lttng -%bcond_without rbd_rwl_cache -%bcond_without rbd_ssd_cache %else %bcond_with lttng -%bcond_with rbd_rwl_cache -%bcond_with rbd_ssd_cache %endif %bcond_with ocf %bcond_with selinux @@ -121,15 +116,38 @@ %{!?python3_version_nodots: %global python3_version_nodots 3} %{!?python3_version: %global python3_version 3} -# disable dwz which compresses the debuginfo -%global _find_debuginfo_dwz_opts %{nil} +%if ! 0%{?suse_version} +# use multi-threaded xz compression: xz level 7 using ncpus threads +%global _source_payload w7T%{_smp_build_ncpus}.xzdio +%global _binary_payload w7T%{_smp_build_ncpus}.xzdio +%endif + +%define smp_limit_mem_per_job() %( \ + kb_per_job=%1 \ + kb_total=$(head -3 /proc/meminfo | sed -n 's/MemAvailable:\\s*\\(.*\\) kB.*/\\1/p') \ + jobs=$(( $kb_total / $kb_per_job )) \ + [ $jobs -lt 1 ] && jobs=1 \ + echo $jobs ) + +%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 +%global _smp_ncpus_max 1 +%else +# 3.0 GiB mem per job +# SUSE distros use limit_build in the place of smp_limit_mem_per_job, please +# be sure to update it (in the build section, below) as well when changing this +# number. +%global _smp_ncpus_max %{smp_limit_mem_per_job 3000000} +%endif +%endif ################################################################################# # main package definition ################################################################################# Name: ceph -Version: 16.2.7 -Release: 1%{?dist} +Version: 17.1.0 +Release: 0.1.rc1%{?dist} %if 0%{?fedora} || 0%{?rhel} Epoch: 2 %endif @@ -140,18 +158,21 @@ Epoch: 2 Summary: User space components of the Ceph file system #License: LGPL-2.1 and LGPL-3.0 and CC-BY-SA-3.0 and GPL-2.0 and BSL-1.0 and BSD-3-Clause and MIT -License: (LGPLv2.1 or LGPLv3) and CC-BY-SA-3.0 and GPLv2 and Boost-1.0 and BSD and MIT +License: (LGPLv2+ or LGPLv3) and CC-BY-SA-3.0 and GPLv2 and Boost-1.0 and BSD and MIT %if 0%{?suse_version} Group: System/Filesystems %endif URL: http://ceph.com/ -Source0: %{?_remote_tarball_prefix}ceph-%{version}.tar.gz +Source0: ceph-17.1.0.tar.gz Patch0001: 0001-src-common-crc32c_intel_fast.patch Patch0003: 0003-src-common-bitstr.h.patch -Patch0007: 0007-src-test-neorados-CMakeLists.txt.patch Patch0008: 0008-cmake-modules-Finduring.cmake.patch -Patch0014: 0014-rgw-Replace-boost-string_ref-view-with-std-string_vi.patch -Patch0015: 0015-src-kv-rocksdb_cache.patch +Patch0010: 0010-CET-Add-CET-marker-to-crc32c_intel_fast_zero_asm.s.patch +Patch0011: 0011-isa-l-CET-Add-CET-marker-to-x86-64-crc32-assembly-co.patch +Patch0012: 0012-spdk-isa-l-CET-Add-CET-marker-to-x86-64-crc32-assemb.patch +Patch0016: 0016-src-tracing-patch +Patch0017: 0017-gcc-12-omnibus.patch +Patch0018: 0018-src-rgw-store-dbstore-CMakeLists.txt.patch # Source1: cmake-modules-BuildBoost.cmake.noautopatch # ceph 14.0.1 does not support 32-bit architectures, bugs #1727788, #1727787 ExcludeArch: i686 armv7hl @@ -177,9 +198,8 @@ BuildRequires: selinux-policy-devel %endif BuildRequires: gperf BuildRequires: cmake > 3.5 -BuildRequires: cryptsetup BuildRequires: fuse3-devel -%if 0%{with seastar} +%if 0%{with seastar} && 0%{?rhel} BuildRequires: gcc-toolset-9-gcc-c++ >= 9.2.1-2.3 %else BuildRequires: gcc-c++ @@ -196,46 +216,47 @@ BuildRequires: gperftools-devel >= 2.6.1 BuildRequires: gperftools-devel >= 2.4 %endif %endif -BuildRequires: leveldb-devel > 1.2 BuildRequires: libaio-devel BuildRequires: libblkid-devel >= 2.17 BuildRequires: cryptsetup-devel BuildRequires: libcurl-devel BuildRequires: libcap-ng-devel -BuildRequires: fmt-devel >= 5.2.1 +BuildRequires: fmt-devel >= 6.2.1 %if 0%{?fedora} BuildRequires: rocksdb-devel Requires: rocksdb %endif -# BuildRequires: liburing-devel +BuildRequires: liburing-devel BuildRequires: pkgconfig(libudev) BuildRequires: libnl3-devel BuildRequires: liboath-devel BuildRequires: libtool BuildRequires: libxml2-devel -BuildRequires: make BuildRequires: libzstd-devel +BuildRequires: ninja-build BuildRequires: ncurses-devel BuildRequires: libicu-devel -BuildRequires: parted BuildRequires: patch BuildRequires: perl BuildRequires: pkgconfig BuildRequires: procps BuildRequires: python%{python3_pkgversion} BuildRequires: python%{python3_pkgversion}-devel +BuildRequires: python%{python3_pkgversion}-setuptools +BuildRequires: python%{python3_pkgversion}-Cython BuildRequires: snappy-devel BuildRequires: sqlite-devel BuildRequires: sudo BuildRequires: pkgconfig(udev) -BuildRequires: util-linux BuildRequires: valgrind-devel BuildRequires: which -BuildRequires: xfsprogs BuildRequires: xfsprogs-devel BuildRequires: xmlstarlet BuildRequires: nasm BuildRequires: lua-devel +%if 0%{with seastar} || 0%{with jaeger} +BuildRequires: yaml-cpp-devel >= 0.6 +%endif %if 0%{with amqp_endpoint} BuildRequires: librabbitmq-devel %endif @@ -243,9 +264,10 @@ BuildRequires: librabbitmq-devel BuildRequires: librdkafka-devel %endif %if 0%{with lua_packages} -BuildRequires: %{luarocks_package_name} +BuildRequires: %{luarocks_package_name} %endif %if 0%{with make_check} +BuildRequires: hostname BuildRequires: jq BuildRequires: libuuid-devel BuildRequires: python%{python3_pkgversion}-bcrypt @@ -258,11 +280,12 @@ BuildRequires: python%{python3_pkgversion}-pyOpenSSL BuildRequires: socat %endif %if 0%{with zbd} -BuildRequires: libzbd-devel +BuildRequires: libzbd-devel %endif %if 0%{with jaeger} BuildRequires: bison BuildRequires: flex +BuildRequires: thrift-devel >= 0.13.0 %if 0%{?fedora} || 0%{?rhel} BuildRequires: json-devel %endif @@ -270,7 +293,6 @@ BuildRequires: json-devel BuildRequires: nlohmann_json-devel %endif BuildRequires: libevent-devel -BuildRequires: yaml-cpp-devel %endif %if 0%{with system_pmdk} BuildRequires: libpmem-devel @@ -282,10 +304,8 @@ BuildRequires: gnutls-devel BuildRequires: hwloc-devel BuildRequires: libpciaccess-devel BuildRequires: lksctp-tools-devel -BuildRequires: protobuf-devel BuildRequires: ragel BuildRequires: systemtap-sdt-devel -BuildRequires: yaml-cpp-devel %if 0%{?fedora} BuildRequires: libubsan BuildRequires: libasan @@ -307,6 +327,7 @@ BuildRequires: systemd-rpm-macros %{?systemd_requires} PreReq: %fillup_prereq BuildRequires: fdupes +BuildRequires: memory-constraints BuildRequires: net-tools BuildRequires: libbz2-devel BuildRequires: mozilla-nss-devel @@ -317,9 +338,8 @@ BuildRequires: openldap2-devel #BuildRequires: krb5 #BuildRequires: krb5-devel BuildRequires: cunit-devel -BuildRequires: python%{python3_pkgversion}-setuptools -BuildRequires: python%{python3_pkgversion}-Cython BuildRequires: python%{python3_pkgversion}-PrettyTable +BuildRequires: python%{python3_pkgversion}-PyYAML BuildRequires: python%{python3_pkgversion}-Sphinx BuildRequires: rdma-core-devel BuildRequires: liblz4-devel >= 1.7 @@ -339,17 +359,17 @@ BuildRequires: openldap-devel BuildRequires: openssl-devel BuildRequires: CUnit-devel BuildRequires: python%{python3_pkgversion}-devel -BuildRequires: python%{python3_pkgversion}-setuptools -BuildRequires: python%{python3_pkgversion}-Cython BuildRequires: python%{python3_pkgversion}-prettytable +BuildRequires: python%{python3_pkgversion}-pyyaml BuildRequires: python%{python3_pkgversion}-sphinx BuildRequires: lz4-devel >= 1.7 %endif # distro-conditional make check dependencies +BuildRequires: golang %if 0%{with make_check} +BuildRequires: golang %if 0%{?fedora} || 0%{?rhel} BuildRequires: golang-github-prometheus -BuildRequires: jsonnet BuildRequires: libtool-ltdl-devel BuildRequires: xmlsec1 BuildRequires: xmlsec1-devel @@ -367,7 +387,6 @@ BuildRequires: python%{python3_pkgversion}-pyOpenSSL %endif %if 0%{?suse_version} BuildRequires: golang-github-prometheus-prometheus -BuildRequires: jsonnet BuildRequires: libxmlsec1-1 BuildRequires: libxmlsec1-nss1 BuildRequires: libxmlsec1-openssl1 @@ -438,16 +457,12 @@ Requires: librgw2 = %{_epoch_prefix}%{version}-%{release} %if 0%{with selinux} Requires: ceph-selinux = %{_epoch_prefix}%{version}-%{release} %endif -Requires: cryptsetup -Requires: e2fsprogs Requires: findutils Requires: grep Requires: logrotate Requires: parted Requires: psmisc -Requires: python%{python3_pkgversion}-setuptools Requires: util-linux -Requires: xfsprogs Requires: which %if 0%{?rhel} && 0%{?rhel} < 8 # The following is necessary due to tracker 36508 and can be removed once the @@ -468,19 +483,19 @@ Recommends: smartmontools %description base Base is the package that includes all the files shared amongst ceph servers -%if 0%{with cephadm} %package -n cephadm Summary: Utility to bootstrap Ceph clusters BuildArch: noarch Requires: lvm2 Requires: python%{python3_pkgversion} +Requires: openssh-server +Requires: which %if 0%{?weak_deps} Recommends: podman >= 2.0.2 %endif %description -n cephadm Utility to bootstrap a Ceph cluster and manage Ceph daemons deployed with systemd and podman. -%endif %package -n ceph-common Summary: Ceph Common @@ -535,9 +550,6 @@ Group: System/Filesystems %endif Provides: ceph-test:/usr/bin/ceph-monstore-tool Requires: ceph-base = %{_epoch_prefix}%{version}-%{release} -%if 0%{with jaeger} -Requires: libjaeger = %{_epoch_prefix}%{version}-%{release} -%endif %description mon ceph-mon is the cluster monitor daemon for the Ceph distributed file system. One or more instances of ceph-mon form a Paxos part-time @@ -672,14 +684,16 @@ BuildArch: noarch Group: System/Filesystems %endif Requires: ceph-mgr = %{_epoch_prefix}%{version}-%{release} -Requires: python%{python3_pkgversion}-remoto +Requires: python%{python3_pkgversion}-asyncssh Requires: cephadm = %{_epoch_prefix}%{version}-%{release} %if 0%{?suse_version} Requires: openssh +Requires: python%{python3_pkgversion}-CherryPy Requires: python%{python3_pkgversion}-Jinja2 %endif %if 0%{?rhel} || 0%{?fedora} Requires: openssh-clients +Requires: python%{python3_pkgversion}-cherrypy Requires: python%{python3_pkgversion}-jinja2 %endif %description mgr-cephadm @@ -783,6 +797,7 @@ in realtime. %if %{with ocf} %package resource-agents Summary: OCF-compliant resource agents for Ceph daemons +BuildArch: noarch %if 0%{?suse_version} Group: System/Filesystems %endif @@ -801,10 +816,11 @@ Group: System/Filesystems %endif Provides: ceph-test:/usr/bin/ceph-osdomap-tool Requires: ceph-base = %{_epoch_prefix}%{version}-%{release} -Requires: lvm2 Requires: sudo Requires: libstoragemgmt -Requires: python%{python3_pkgversion}-ceph-common = %{_epoch_prefix}%{version}-%{release} +%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 is responsible for storing objects on a local file system @@ -817,12 +833,33 @@ Summary: Ceph Object Storage Daemon (crimson) Group: System/Filesystems %endif Requires: ceph-osd = %{_epoch_prefix}%{version}-%{release} +Requires: binutils %description crimson-osd 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. %endif +%package volume +Summary: Ceph OSD deployment and inspection tool +BuildArch: noarch +%if 0%{?suse_version} +Group: System/Filesystems +%endif +Requires: ceph-osd = %{_epoch_prefix}%{version}-%{release} +Requires: cryptsetup +Requires: e2fsprogs +Requires: lvm2 +Requires: parted +Requires: util-linux +Requires: xfsprogs +Requires: python%{python3_pkgversion}-setuptools +Requires: python%{python3_pkgversion}-ceph-common = %{_epoch_prefix}%{version}-%{release} +%description volume +This package contains a tool to deploy OSD with different devices like +lvm or physical disks, and trying to follow a predictable, and robust +way of preparing, activating, and starting the deployed OSD. + %package -n librados2 Summary: RADOS distributed object store client library %if 0%{?suse_version} @@ -1043,20 +1080,6 @@ Obsoletes: libcephfs2-devel < %{_epoch_prefix}%{version}-%{release} This package contains libraries and headers needed to develop programs that use Ceph distributed file system. -%if 0%{with jaeger} -%package -n libjaeger -Summary: Ceph distributed file system tracing library -%if 0%{?suse_version} -Group: System/Libraries -%endif -Provides: libjaegertracing.so.0()(64bit) -Provides: libopentracing.so.1()(64bit) -Provides: libthrift.so.0.13.0()(64bit) -%description -n libjaeger -This package contains libraries needed to provide distributed -tracing for Ceph. -%endif - %package -n python%{python3_pkgversion}-cephfs Summary: Python 3 libraries for Ceph distributed file system %if 0%{?suse_version} @@ -1228,9 +1251,12 @@ This package provides Ceph default alerts for Prometheus. # %%endif %build -# LTO can be enabled as soon as the following GCC bug is fixed: -# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=48200 -%define _lto_cflags %{nil} +# Disable lto on systems that do not support symver attribute +# See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=48200 for details +%if ( 0%{?rhel} && 0%{?rhel} < 9 ) || ( 0%{?suse_version} && 0%{?suse_version} <= 1500 ) + %define _lto_cflags %{nil} +%endif + %if 0%{with seastar} && 0%{?rhel} . /opt/rh/gcc-toolset-9/enable @@ -1244,8 +1270,7 @@ done %endif %if 0%{?suse_version} -# the following setting fixed an OOM condition we once encountered in the OBS -RPM_OPT_FLAGS="$RPM_OPT_FLAGS --param ggc-min-expand=20 --param ggc-min-heapsize=32768" +%limit_build -m 3000 %endif export CPPFLAGS="$java_inc" @@ -1258,120 +1283,106 @@ export LDFLAGS="$RPM_LD_FLAGS" export CXXFLAGS=$(echo $RPM_OPT_FLAGS | sed -e 's/-Wp,-D_FORTIFY_SOURCE=2//g') %endif -# Parallel build settings ... -%ifarch aarch64 -XRPM_BUILD_NCPUS="`/usr/bin/getconf _NPROCESSORS_ONLN`" -if [ "$XRPM_BUILD_NCPUS" -gt 0 ]; then -RPM_BUILD_NCPUS=$XRPM_BUILD_NCPUS/2 -fi -%endif -CEPH_MFLAGS_JOBS="%{?_smp_mflags}" -CEPH_SMP_NCPUS=$(echo "$CEPH_MFLAGS_JOBS" | sed 's/-j//') -# do not eat all memory -echo "Available memory:" -free -h -echo "System limits:" -ulimit -a -if test -n "$CEPH_SMP_NCPUS" -a "$CEPH_SMP_NCPUS" -gt 1 ; then - mem_per_process=2500 - max_mem=$(LANG=C free -m | sed -n "s|^Mem: *\([0-9]*\).*$|\1|p") - max_jobs="$(($max_mem / $mem_per_process))" - test "$CEPH_SMP_NCPUS" -gt "$max_jobs" && CEPH_SMP_NCPUS="$max_jobs" && echo "Warning: Reducing build parallelism to -j$max_jobs because of memory limits" - test "$CEPH_SMP_NCPUS" -le 0 && CEPH_SMP_NCPUS="1" && echo "Warning: Not using parallel build at all because of memory limits" -fi -export CEPH_SMP_NCPUS -export CEPH_MFLAGS_JOBS="-j$CEPH_SMP_NCPUS" - env | sort -mkdir build -cd build -%{cmake} .. \ +%{?!_vpath_builddir:%global _vpath_builddir %{_target_platform}} + +# TODO: drop this step once we can use `cmake -B` +mkdir -p %{_vpath_builddir} +%{cmake} . \ + -GNinja \ -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_COLOR_MAKEFILE:BOOL=OFF \ -DBUILD_CONFIG=rpmbuild \ -DCMAKE_INSTALL_PREFIX=%{_prefix} \ - -DCMAKE_INSTALL_LIBDIR=%{_libdir} \ - -DCMAKE_INSTALL_LIBEXECDIR=%{_libexecdir} \ - -DCMAKE_INSTALL_LOCALSTATEDIR=%{_localstatedir} \ - -DCMAKE_INSTALL_SYSCONFDIR=%{_sysconfdir} \ - -DCMAKE_INSTALL_MANDIR=%{_mandir} \ - -DCMAKE_INSTALL_DOCDIR=%{_docdir}/ceph \ - -DCMAKE_INSTALL_INCLUDEDIR=%{_includedir} \ - -DCMAKE_INSTALL_SYSTEMD_SERVICEDIR=%{_unitdir} \ - -DWITH_MANPAGE=ON \ - -DWITH_PYTHON3=%{python3_version} \ - -DWITH_MGR_DASHBOARD_FRONTEND=OFF \ + -DCMAKE_INSTALL_LIBDIR:PATH=%{_libdir} \ + -DCMAKE_INSTALL_LIBEXECDIR:PATH=%{_libexecdir} \ + -DCMAKE_INSTALL_LOCALSTATEDIR:PATH=%{_localstatedir} \ + -DCMAKE_INSTALL_SYSCONFDIR:PATH=%{_sysconfdir} \ + -DCMAKE_INSTALL_MANDIR:PATH=%{_mandir} \ + -DCMAKE_INSTALL_DOCDIR:PATH=%{_docdir}/ceph \ + -DCMAKE_INSTALL_INCLUDEDIR:PATH=%{_includedir} \ + -DSYSTEMD_SYSTEM_UNIT_DIR:PATH=%{_unitdir} \ + -DWITH_MANPAGE:BOOL=ON \ + -DWITH_PYTHON3:STRING=%{python3_version} \ + -DWITH_MGR_DASHBOARD_FRONTEND:BOOL=OFF \ %if 0%{without ceph_test_package} - -DWITH_TESTS=OFF \ + -DWITH_TESTS:BOOL=OFF \ %endif %if 0%{with cephfs_java} - -DWITH_CEPHFS_JAVA=ON \ + -DWITH_CEPHFS_JAVA:BOOL=ON \ %endif %if 0%{with selinux} - -DWITH_SELINUX=ON \ + -DWITH_SELINUX:BOOL=ON \ %endif %if %{with lttng} - -DWITH_LTTNG=ON \ - -DWITH_BABELTRACE=ON \ + -DWITH_LTTNG:BOOL=ON \ + -DWITH_BABELTRACE:BOOL=ON \ %else - -DWITH_LTTNG=OFF \ - -DWITH_BABELTRACE=OFF \ + -DWITH_LTTNG:BOOL=OFF \ + -DWITH_BABELTRACE:BOOL=OFF \ %endif $CEPH_EXTRA_CMAKE_ARGS \ %if 0%{with ocf} - -DWITH_OCF=ON \ + -DWITH_OCF:BOOL=ON \ %endif %if 0%{?fedora} -DWITH_SYSTEM_ROCKSDB:BOOL=ON \ %endif - -DWITH_SYSTEM_LIBURING:BOOL=OFF \ + -DWITH_SYSTEM_LIBURING:BOOL=ON \ -DWITH_SYSTEM_BOOST:BOOL=ON \ %if 0%{with cephfs_shell} - -DWITH_CEPHFS_SHELL=ON \ + -DWITH_CEPHFS_SHELL:BOOL=ON \ %endif %if 0%{with libradosstriper} - -DWITH_LIBRADOSSTRIPER=ON \ + -DWITH_LIBRADOSSTRIPER:BOOL=ON \ %else - -DWITH_LIBRADOSSTRIPER=OFF \ + -DWITH_LIBRADOSSTRIPER:BOOL=OFF \ %endif %if 0%{with amqp_endpoint} - -DWITH_RADOSGW_AMQP_ENDPOINT=ON \ + -DWITH_RADOSGW_AMQP_ENDPOINT:BOOL=ON \ %else - -DWITH_RADOSGW_AMQP_ENDPOINT=OFF \ + -DWITH_RADOSGW_AMQP_ENDPOINT:BOOL=OFF \ %endif %if 0%{with kafka_endpoint} - -DWITH_RADOSGW_KAFKA_ENDPOINT=ON \ + -DWITH_RADOSGW_KAFKA_ENDPOINT:BOOL=ON \ %else - -DWITH_RADOSGW_KAFKA_ENDPOINT=OFF \ + -DWITH_RADOSGW_KAFKA_ENDPOINT:BOOL=OFF \ %endif %if 0%{without lua_packages} - -DWITH_RADOSGW_LUA_PACKAGES=OFF \ + -DWITH_RADOSGW_LUA_PACKAGES:BOOL=OFF \ %endif %if 0%{with zbd} - -DWITH_ZBD=ON \ + -DWITH_ZBD:BOOL=ON \ %endif %if 0%{with cmake_verbose_logging} - -DCMAKE_VERBOSE_MAKEFILE=ON \ + -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \ %endif %if 0%{with rbd_rwl_cache} - -DWITH_RBD_RWL=ON \ + -DWITH_RBD_RWL:BOOL=ON \ %endif %if 0%{with rbd_ssd_cache} - -DWITH_RBD_SSD_CACHE=ON \ -%endif - -DBOOST_J=$CEPH_SMP_NCPUS \ -%if 0%{with ceph_test_package} - -DWITH_SYSTEM_GTEST:BOOL=ON \ + -DWITH_RBD_SSD_CACHE:BOOL=ON \ %endif %if 0%{with system_pmdk} -DWITH_SYSTEM_PMDK:BOOL=ON \ %endif +%if 0%{with jaeger} + -DWITH_JAEGER:BOOL=ON \ +%endif +%if 0%{?suse_version} + -DBOOST_J:STRING=%{jobs} \ +%else + -DBOOST_J:STRING=%{_smp_build_ncpus} \ +%endif +%if 0%{with ceph_test_package} + -DWITH_SYSTEM_GTEST:BOOL=ON \ +%endif -DWITH_SYSTEM_ZSTD:BOOL=ON \ %if 0%{?rhel} -DWITH_FMT_HEADER_ONLY:BOOL=ON \ %endif - -DWITH_GRAFANA=ON + -DWITH_GRAFANA:BOOL=ON %if %{with cmake_verbose_logging} cat ./CMakeFiles/CMakeOutput.log @@ -1381,23 +1392,19 @@ cat ./CMakeFiles/CMakeError.log export VERBOSE=1 export V=1 export GCC_COLORS= -%cmake_build - +%cmake_build %if 0%{with make_check} %check # run in-tree unittests -# cd build +# cd %{_vpath_builddir} # ctest "$CEPH_MFLAGS_JOBS" %endif - %install -pushd build %cmake_install # we have dropped sysvinit bits rm -f %{buildroot}/%{_sysconfdir}/init.d/ceph -popd %if 0%{with seastar} # package crimson-osd with the name of ceph-osd install -m 0755 %{buildroot}%{_bindir}/crimson-osd %{buildroot}%{_bindir}/ceph-osd @@ -1419,7 +1426,6 @@ install -m 0644 -D COPYING %{buildroot}%{_docdir}/ceph/COPYING install -m 0644 -D etc/sysctl/90-ceph-osd.conf %{buildroot}%{_sysctldir}/90-ceph-osd.conf install -m 0755 -D src/tools/rbd_nbd/rbd-nbd_quiesce %{buildroot}%{_libexecdir}/rbd-nbd/rbd-nbd_quiesce -%if 0%{with cephadm} install -m 0755 src/cephadm/cephadm %{buildroot}%{_sbindir}/cephadm mkdir -p %{buildroot}%{_sharedstatedir}/cephadm chmod 0700 %{buildroot}%{_sharedstatedir}/cephadm @@ -1427,7 +1433,6 @@ mkdir -p %{buildroot}%{_sharedstatedir}/cephadm/.ssh chmod 0700 %{buildroot}%{_sharedstatedir}/cephadm/.ssh touch %{buildroot}%{_sharedstatedir}/cephadm/.ssh/authorized_keys chmod 0600 %{buildroot}%{_sharedstatedir}/cephadm/.ssh/authorized_keys -%endif # firewall templates and /sbin/mount.ceph symlink %if 0%{?suse_version} && !0%{?usrmerged} @@ -1466,7 +1471,7 @@ mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/bootstrap-rbd mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/bootstrap-rbd-mirror # prometheus alerts -install -m 644 -D monitoring/prometheus/alerts/ceph_default_alerts.yml %{buildroot}/etc/prometheus/ceph/ceph_default_alerts.yml +install -m 644 -D monitoring/ceph-mixin/prometheus_alerts.yml %{buildroot}/etc/prometheus/ceph/ceph_default_alerts.yml %if 0%{?suse_version} # create __pycache__ directories and their contents @@ -1479,10 +1484,6 @@ install -m 644 -D monitoring/prometheus/alerts/ceph_default_alerts.yml %{buildro %py_byte_compile %{__python3} %{buildroot}%{python3_sitelib} %endif -%if 0%{without cephadm} -rm -f %{buildroot}%{_mandir}/man8/cephadm.8* -%endif - ################################################################################# # files and systemd scriptlets ################################################################################# @@ -1521,10 +1522,6 @@ rm -f %{buildroot}%{_mandir}/man8/cephadm.8* %{_fillupdir}/sysconfig.* %endif %{_unitdir}/ceph.target -%dir %{python3_sitelib}/ceph_volume -%{python3_sitelib}/ceph_volume/* -%{python3_sitelib}/ceph_volume-* -%{_mandir}/man8/ceph-deploy.8* %{_mandir}/man8/ceph-create-keys.8* %{_mandir}/man8/ceph-run.8* %{_mandir}/man8/crushtool.8* @@ -1570,29 +1567,23 @@ fi /sbin/ldconfig %systemd_postun ceph.target -%if 0%{with cephadm} %pre -n cephadm getent group cephadm >/dev/null || groupadd -r cephadm getent passwd cephadm >/dev/null || useradd -r -g cephadm -s /bin/bash -c "cephadm user for mgr/cephadm" -d %{_sharedstatedir}/cephadm cephadm exit 0 -%endif -%if 0%{with cephadm} %if ! 0%{?suse_version} %postun -n cephadm userdel -r cephadm || true exit 0 %endif -%endif -%if 0%{with cephadm} %files -n cephadm %{_sbindir}/cephadm %{_mandir}/man8/cephadm.8* %attr(0700,cephadm,cephadm) %dir %{_sharedstatedir}/cephadm %attr(0700,cephadm,cephadm) %dir %{_sharedstatedir}/cephadm/.ssh %attr(0600,cephadm,cephadm) %{_sharedstatedir}/cephadm/.ssh/authorized_keys -%endif %files common %dir %{_docdir}/ceph @@ -1607,6 +1598,7 @@ exit 0 %{_bindir}/cephfs-data-scan %{_bindir}/cephfs-journal-tool %{_bindir}/cephfs-table-tool +%{_bindir}/crushdiff %{_bindir}/rados %{_bindir}/radosgw-admin %{_bindir}/rbd @@ -1621,6 +1613,8 @@ exit 0 %{_bindir}/rbd-replay-prep %endif %{_bindir}/ceph-post-file +%dir %{_libdir}/ceph/denc +%{_libdir}/ceph/denc/denc-mod-*.so %{_tmpfilesdir}/ceph-common.conf %{_mandir}/man8/ceph-authtool.8* %{_mandir}/man8/ceph-conf.8* @@ -1630,6 +1624,7 @@ exit 0 %{_mandir}/man8/ceph-syn.8* %{_mandir}/man8/ceph-post-file.8* %{_mandir}/man8/ceph.8* +%{_mandir}/man8/crushdiff.8* %{_mandir}/man8/mount.ceph.8* %{_mandir}/man8/rados.8* %{_mandir}/man8/radosgw-admin.8* @@ -1650,7 +1645,6 @@ exit 0 %config %{_sysconfdir}/bash_completion.d/radosgw-admin %config(noreplace) %{_sysconfdir}/ceph/rbdmap %{_unitdir}/rbdmap.service -%dir %{_udevrulesdir} %{_udevrulesdir}/50-rbd.rules %attr(3770,ceph,ceph) %dir %{_localstatedir}/log/ceph/ %attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/ @@ -2038,9 +2032,8 @@ fi %endif %postun immutable-object-cache -test -n "$FIRST_ARG" || FIRST_ARG=$1 %systemd_postun ceph-immutable-object-cache@\*.service ceph-immutable-object-cache.target -if [ $FIRST_ARG -ge 1 ] ; then +if [ $1 -ge 1 ] ; then # Restart on upgrade, but only if "CEPH_AUTO_RESTART_ON_UPGRADE" is set to # "yes". In any case: if units are not running, do not touch them. SYSCONF_CEPH=%{_sysconfdir}/sysconfig/ceph @@ -2118,23 +2111,18 @@ fi %{_bindir}/ceph-osdomap-tool %{_bindir}/ceph-osd %{_libexecdir}/ceph/ceph-osd-prestart.sh -%{_sbindir}/ceph-volume -%{_sbindir}/ceph-volume-systemd %{_mandir}/man8/ceph-clsinfo.8* %{_mandir}/man8/ceph-osd.8* %{_mandir}/man8/ceph-bluestore-tool.8* -%{_mandir}/man8/ceph-volume.8* -%{_mandir}/man8/ceph-volume-systemd.8* %{_unitdir}/ceph-osd@.service %{_unitdir}/ceph-osd.target -%{_unitdir}/ceph-volume@.service %attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/osd %config(noreplace) %{_sysctldir}/90-ceph-osd.conf %post osd %if 0%{?suse_version} if [ $1 -eq 1 ] ; then - /usr/bin/systemctl preset ceph-osd@\*.service ceph-volume@\*.service ceph-osd.target >/dev/null 2>&1 || : + /usr/bin/systemctl preset ceph-osd@\*.service ceph-osd.target >/dev/null 2>&1 || : fi %endif %if 0%{?fedora} || 0%{?rhel} @@ -2151,10 +2139,10 @@ fi %preun osd %if 0%{?suse_version} -%service_del_preun ceph-osd@\*.service ceph-volume@\*.service ceph-osd.target +%service_del_preun ceph-osd@\*.service ceph-osd.target %endif %if 0%{?fedora} || 0%{?rhel} -%systemd_preun ceph-osd@\*.service ceph-volume@\*.service ceph-osd.target +%systemd_preun ceph-osd@\*.service ceph-osd.target %endif %postun osd @@ -2176,6 +2164,48 @@ fi %{_bindir}/crimson-osd %endif +%files volume +%{_sbindir}/ceph-volume +%{_sbindir}/ceph-volume-systemd +%dir %{python3_sitelib}/ceph_volume +%{python3_sitelib}/ceph_volume/* +%{python3_sitelib}/ceph_volume-* +%{_mandir}/man8/ceph-volume.8* +%{_mandir}/man8/ceph-volume-systemd.8* +%{_unitdir}/ceph-volume@.service + +%post volume +%if 0%{?suse_version} +if [ $1 -eq 1 ] ; then + /usr/bin/systemctl preset ceph-volume@\*.service >/dev/null 2>&1 || : +fi +%endif +%if 0%{?fedora} || 0%{?rhel} +%systemd_post ceph-volume@\*.service +%endif + +%preun volume +%if 0%{?suse_version} +%service_del_preun ceph-volume@\*.service +%endif +%if 0%{?fedora} || 0%{?rhel} +%systemd_preun ceph-volume@\*.service +%endif + +%postun volume +%systemd_postun ceph-volume@\*.service +if [ $1 -ge 1 ] ; then + # Restart on upgrade, but only if "CEPH_AUTO_RESTART_ON_UPGRADE" is set to + # "yes". In any case: if units are not running, do not touch them. + SYSCONF_CEPH=%{_sysconfdir}/sysconfig/ceph + if [ -f $SYSCONF_CEPH -a -r $SYSCONF_CEPH ] ; then + source $SYSCONF_CEPH + fi + if [ "X$CEPH_AUTO_RESTART_ON_UPGRADE" = "Xyes" ] ; then + /usr/bin/systemctl try-restart ceph-volume@\*.service > /dev/null 2>&1 || : + fi +fi + %if %{with ocf} %files resource-agents @@ -2317,20 +2347,9 @@ fi %{_includedir}/cephfs/metrics/Types.h %{_libdir}/libcephfs.so -%if %{with jaeger} -%files -n libjaeger -%{_libdir}/libopentracing.so.* -%{_libdir}/libthrift.so.* -%{_libdir}/libjaegertracing.so.* -%post -n libjaeger -p /sbin/ldconfig -%postun -n libjaeger -p /sbin/ldconfig -%endif - %files -n python%{python3_pkgversion}-cephfs %{python3_sitearch}/cephfs.cpython*.so %{python3_sitearch}/cephfs-*.egg-info -%{python3_sitelib}/ceph_volume_client.py -%{python3_sitelib}/__pycache__/ceph_volume_client.cpython*.py* %files -n python%{python3_pkgversion}-ceph-argparse %{python3_sitelib}/ceph_argparse.py @@ -2346,6 +2365,7 @@ fi %files -n cephfs-shell %{python3_sitelib}/cephfs_shell-*.egg-info %{_bindir}/cephfs-shell +%{_mandir}/man8/cephfs-shell.8* %endif %files -n cephfs-top @@ -2357,7 +2377,6 @@ fi %files -n ceph-test %{_bindir}/ceph-client-debug %{_bindir}/ceph_bench_log -%{_bindir}/ceph_kvstorebench %{_bindir}/ceph_multi_stress_watch %{_bindir}/ceph_erasure_code_benchmark %{_bindir}/ceph_omapbench @@ -2517,8 +2536,6 @@ exit 0 %endif %attr(0755,root,root) %dir %{_sysconfdir}/grafana/dashboards/ceph-dashboard %config %{_sysconfdir}/grafana/dashboards/ceph-dashboard/* -%doc monitoring/grafana/dashboards/README -%doc monitoring/grafana/README.md %files prometheus-alerts %if 0%{?suse_version} @@ -2528,18 +2545,97 @@ exit 0 %config %{_sysconfdir}/prometheus/ceph/ceph_default_alerts.yml %changelog +* Mon Feb 28 2022 Kaleb S. KEITHLEY - 2:17.1.0-0.1.rc1 +- 17.1.0 RC1 + +* Sat Feb 05 2022 Jiri Vanek - 2:16.2.7-10 +- Rebuilt for java-17-openjdk as system jdk + +* Wed Feb 2 2022 Kaleb S. KEITHLEY - 2:16.2.7-9 +- 16.2.7, python3.10 w/ __CHAR_UNSIGNED__ fix + +* Thu Jan 27 2022 Kaleb S. KEITHLEY - 2:16.2.7-8 +- 16.2.7, w/ modern linker (mold), x86_64 and aarch64, this time for real + +* Wed Jan 26 2022 Kaleb S. KEITHLEY - 2:16.2.7-7 +- 16.2.7, build with modern linker (mold), x86_64 and aarch64 +- reenable ppc64le + +* Tue Jan 25 2022 Kaleb S. KEITHLEY - 2:16.2.7-6 +- 16.2.7, more CET enablement, rhbz#2040091 + +* Thu Jan 20 2022 Kaleb S. KEITHLEY - 2:16.2.7-5 +- 16.2.7, rebuild with gcc-12, exclude ppc64le until fmt on ppc64le is fixed + +* Wed Jan 19 2022 Fedora Release Engineering - 2:16.2.7-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Mon Jan 10 2022 Kaleb S. KEITHLEY - 2:16.2.7-3 +- 16.2.7, rebuild with fmt-8.1.1 + +* Wed Dec 29 2021 Kaleb S. KEITHLEY - 2:16.2.7-2 +- 16.2.7, LGPLv2.1 -> LGPLv2+, rhbz#2036035 + * Tue Dec 7 2021 Kaleb S. KEITHLEY - 2:16.2.7-1 - 16.2.7 GA +* Tue Nov 02 2021 Mamoru TASAKA - 2:16.2.6-3 +- rebuild against new liblttng-ust + +* Tue Oct 19 2021 Kaleb S. KEITHLEY - 2:16.2.6-2 +- 16.2.6, rebuild with rocksdb 6.25 + * Fri Sep 17 2021 Kaleb S. KEITHLEY - 2:16.2.6-1 - 16.2.6 GA -* Thu Jul 22 2021 Kaleb S. KEITHLEY - 2:16.2.5-2 -- https://tracker.ceph.com/issues/51797 +* Tue Sep 14 2021 Sahana Prasad - 2:16.2.5-11 +- Rebuilt with OpenSSL 3.0.0 + +* Mon Sep 6 2021 Kaleb S. KEITHLEY - 2:16.2.5-10 +- Rebuilt for gtest 1.11.0 + +* Thu Aug 26 2021 Kaleb S. KEITHLEY - 2:16.2.5-9 +- Rebuilt for rocksdb 6.22 + +* Tue Aug 17 2021 Kaleb S. KEITHLEY - 2:16.2.5-8 +- build with ninja, -DWITH_SYSTEM_ZSTD, without gdbm + +* Sun Aug 8 2021 Kaleb S. KEITHLEY - 2:16.2.5-7 +- Rebuild for Boost 1.76 again + +* Fri Aug 06 2021 Jonathan Wakely - 2:16.2.5-6 +- Rebuilt for Boost 1.76 + +* Thu Aug 5 2021 Kaleb S. KEITHLEY - 2:16.2.5-5 +- Rebuild for leveldb-1.23-3 w/ reverted -fno-rtti + +* Tue Aug 3 2021 Kaleb S. KEITHLEY - 2:16.2.5-4 +- Rebuild for leveldb-1.23 + +* Wed Jul 21 2021 Fedora Release Engineering - 2:16.2.5-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Thu Jul 8 2021 Kaleb S. KEITHLEY - 2:16.2.5-2 +- Rebuild for new fmt version. * Thu Jul 8 2021 Kaleb S. KEITHLEY - 2:16.2.5-1 - 16.2.5 GA +* Mon Jul 05 2021 Richard Shaw - 2:16.2.4-6 +- Rebuild for new fmt version. + +* Fri Jun 11 2021 Kaleb S. KEITHLEY - 2:16.2.4-5 +- https://src.fedoraproject.org/rpms/ceph/pull-request/3# + +* Fri Jun 04 2021 Python Maint - 2:16.2.4-4 +- Rebuilt for Python 3.10 + +* Wed May 26 2021 Kaleb S. KEITHLEY - 2:16.2.4-3 +- 16.2.4, bz 1964858, snappy::uint32 + +* Wed May 19 2021 Pete Walter - 2:16.2.4-2 +- Rebuild for ICU 69 + * Thu May 13 2021 Kaleb S. KEITHLEY - 2:16.2.4-1 - 16.2.4 GA @@ -2552,6 +2648,9 @@ exit 0 * Tue Apr 20 2021 Kaleb S. KEITHLEY - 2:16.2.1-1 - 16.2.1 GA +* Wed Apr 14 2021 Richard W.M. Jones - 2:16.2.0-3 +- Rebuild for updated liburing. + * Sat Apr 10 2021 Kaleb S. KEITHLEY - 2:16.2.0-2 - 16.2.0, libamqp_mock fix (FTBFS, #1947281), rgw fix