diff --git a/.ceph.metadata b/.ceph.metadata index 591bcf7..8de24cf 100644 --- a/.ceph.metadata +++ b/.ceph.metadata @@ -1 +1 @@ -0503649d7c7d9268cb61b03bbe839106988f87d7 SOURCES/ceph-15.2.9.tar.gz +0442c17a30e4186910df44137f321d9ca9287b0e SOURCES/ceph-16.1.0-944-ge53ee8bd.tar.bz2 diff --git a/README.md b/README.md index 50a81b7..cb39b07 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) -* c8-sig-storage-ceph-octopus: CentOS-8 +* c8-sig-storage-ceph-pacific: CentOS-8 * ... Instructions for building the ceph package for the CentOS Storage SIG @@ -22,5 +22,5 @@ Create a src.rpm with: To build: - $ cbs build [--scratch] storage8-ceph-octopus-el8 ceph-15.2.9-1.el8.src.rpm + $ cbs build [--scratch] storage8-ceph-pacific-el8 ceph-16.1.0-0.1.snapshot.el8.src.rpm diff --git a/SOURCES/0001-src-common-crc32c_intel_fast.patch b/SOURCES/0001-src-common-crc32c_intel_fast.patch index 503dcd7..b0e718c 100644 --- a/SOURCES/0001-src-common-crc32c_intel_fast.patch +++ b/SOURCES/0001-src-common-crc32c_intel_fast.patch @@ -1,112 +1,55 @@ ---- ceph-15.1.0/src/common/crc32c_intel_fast_asm.s.orig 2020-03-04 14:37:33.431024436 -0500 -+++ ceph-15.1.0/src/common/crc32c_intel_fast_asm.s 2020-03-04 15:11:22.859388783 -0500 -@@ -40,6 +40,7 @@ - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +--- ceph-15.2.2/src/common/crc32c_intel_fast_zero_asm.s.orig 2020-05-26 08:34:32.226201974 -0400 ++++ ceph-15.2.2/src/common/crc32c_intel_fast_zero_asm.s 2020-05-26 17:19:32.497201974 -0400 +@@ -1,5 +1,5 @@ + ; +-; Copyright 2012-2013 Intel Corporation All Rights Reserved. ++; Copyright 2012-2015 Intel Corporation All Rights Reserved. + ; All rights reserved. + ; + ; http://opensource.org/licenses/BSD-3-Clause +@@ -59,6 +59,19 @@ + xor rbx, rbx ;; rbx = crc1 = 0; + xor r10, r10 ;; r10 = crc2 = 0; -+ - ; crcB3 MACRO to implement crc32 on 3 %%bSize-byte blocks - %macro crcB3 3 - %define %%bSize %1 ; 1/3 of buffer size -@@ -672,3 +673,22 @@ - ; inform linker that this doesn't require executable stack - section .note.GNU-stack noalloc noexec nowrite progbits ++ cmp len, %%bSize*3*2 ++ jbe %%non_prefetch ++ ++ %assign i 0 ++ %rep %%bSize/8 - 1 ++ crc32 rax, bufptmp ;; update crc0 ++ crc32 rbx, bufptmp ;; update crc1 ++ crc32 r10, bufptmp ;; update crc2 ++ %assign i (i+8) ++ %endrep ++ jmp %%next %+ %1 ++ ++%%non_prefetch: + %assign i 0 + %rep %%bSize/8 - 1 + crc32 rax, bufptmp ;; update crc0 +@@ -66,6 +79,8 @@ + crc32 r10, bufptmp ;; update crc2 + %assign i (i+8) + %endrep ++ ++%%next %+ %1: + crc32 rax, bufptmp ;; update crc0 + crc32 rbx, bufptmp ;; update crc1 + ; SKIP ;crc32 r10, bufptmp ;; update crc2 +@@ -180,12 +195,15 @@ + %define crc_init_dw r8d %endif -+ -+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -+ -+SECTION .note.gnu.property align=8 noexec ; section number 22, const -+ -+ db 04H, 00H, 00H, 00H, 20H, 00H, 00H, 00H ; 0000 _ .... ... -+ db 05H, 00H, 00H, 00H, 47H, 4EH, 55H, 00H ; 0008 _ ....GNU. -+ db 00H, 00H, 00H, 0C0H, 04H, 00H, 00H, 00H ; 0010 _ ........ -+ db 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0018 _ ........ -+ db 01H, 00H, 00H, 0C0H, 04H, 00H, 00H, 00H ; 0020 _ ........ -+ db 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0028 _ ........ -+ db 04H, 00H, 00H, 00H, 10H, 00H, 00H, 00H ; 0030 _ ........ -+ db 05H, 00H, 00H, 00H, 47H, 4EH, 55H, 00H ; 0038 _ ....GNU. -+ db 02H, 00H, 00H, 0C0H, 04H, 00H, 00H, 00H ; 0040 _ ........ -+ db 03H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0048 _ ........ -+ -+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ---- ceph-15.1.0/src/common/crc32c_intel_fast_zero_asm.s.orig 2020-03-04 15:13:06.577071783 -0500 -+++ ceph-15.1.0/src/common/crc32c_intel_fast_zero_asm.s 2020-03-04 15:13:49.873356953 -0500 -@@ -654,3 +654,22 @@ - ; inform linker that this doesn't require executable stack - section .note.GNU-stack noalloc noexec nowrite progbits - %endif -+ -+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -+ -+SECTION .note.gnu.property align=8 noexec ; section number 22, const -+ -+ db 04H, 00H, 00H, 00H, 20H, 00H, 00H, 00H ; 0000 _ .... ... -+ db 05H, 00H, 00H, 00H, 47H, 4EH, 55H, 00H ; 0008 _ ....GNU. -+ db 00H, 00H, 00H, 0C0H, 04H, 00H, 00H, 00H ; 0010 _ ........ -+ db 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0018 _ ........ -+ db 01H, 00H, 00H, 0C0H, 04H, 00H, 00H, 00H ; 0020 _ ........ -+ db 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0028 _ ........ -+ db 04H, 00H, 00H, 00H, 10H, 00H, 00H, 00H ; 0030 _ ........ -+ db 05H, 00H, 00H, 00H, 47H, 4EH, 55H, 00H ; 0038 _ ....GNU. -+ db 02H, 00H, 00H, 0C0H, 04H, 00H, 00H, 00H ; 0040 _ ........ -+ db 03H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ; 0048 _ ........ -+ -+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ---- ceph-15.1.0/src/yasm-wrapper.orig 2020-03-09 12:57:37.603837466 -0400 -+++ ceph-15.1.0/src/yasm-wrapper 2020-03-09 13:02:31.496796609 -0400 -@@ -1,10 +1,11 @@ --#!/bin/sh -e -+#!/bin/sh - # libtool and yasm do not get along. - # filter out any crap that libtool feeds us that yasm does not understand. - #echo $0: got $* - new="" - touch="" -+object="" - while [ -n "$*" ]; do - case "$1" in - -f ) -@@ -29,6 +30,12 @@ - touch="$1" - shift - ;; -+ -o ) -+ shift -+ object="$1" -+ new="$new -o $1" -+ shift -+ ;; - * ) - new="$new $1" - shift -@@ -39,6 +46,25 @@ - #echo $0: yasm $new - yasm $new +- ++ endbranch + push rdi + push rbx -+INDEXOFNOTEGNUPROPLINE=$(readelf -S -W ${object} | grep ".note.gnu.property") -+ -+if [ -n "${INDEXOFNOTEGNUPROPLINE}" ]; then -+ -+ STARTOFSECTHDRLINE=$(readelf -h ${object} | grep "Start of section headers:") -+ SIZEOFSECTHDRLINE=$(readelf -h ${object} | grep "Size of section headers:") -+ -+ STARTOFSECTHDR=$(echo ${STARTOFSECTHDRLINE} | cut -d ' ' -f 5) -+ SIZEOFSECTHDR=$(echo ${SIZEOFSECTHDRLINE} | cut -d ' ' -f 5) -+ INDEXOFNOTEGNUPROPFRAG=$(echo ${INDEXOFNOTEGNUPROPLINE} | cut -d '.' -f 1) -+ -+ INDEXOFNOTEGNUPROP=$(echo ${INDEXOFNOTEGNUPROPFRAG} | grep -Eo "[[:digit:]]+") -+ -+ OFFSET=$(( ${STARTOFSECTHDR} + 4 + ( ${SIZEOFSECTHDR} * ${INDEXOFNOTEGNUPROP} ) )) -+ -+ printf '\x07' | dd of=${object} bs=1 seek=${OFFSET} count=1 conv=notrunc &> /dev/null -+ -+fi + mov rax, crc_init ;; rax = crc_init; + ++ cmp len, 8 ++ jb less_than_8 + - [ -n "$touch" ] && touch $touch + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;; 1) ALIGN: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - true diff --git a/SOURCES/0003-src-common-bitstr.h.patch b/SOURCES/0003-src-common-bitstr.h.patch index 3c7a516..ed2b0ce 100644 --- a/SOURCES/0003-src-common-bitstr.h.patch +++ b/SOURCES/0003-src-common-bitstr.h.patch @@ -8,3 +8,14 @@ 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/0004-src-CMakeLists.txt.patch b/SOURCES/0004-src-CMakeLists.txt.patch new file mode 100644 index 0000000..f3f2e36 --- /dev/null +++ b/SOURCES/0004-src-CMakeLists.txt.patch @@ -0,0 +1,12 @@ +--- ceph-16.0.0/src/CMakeLists.txt.orig 2021-01-25 13:45:15.316053258 -0500 ++++ ceph-16.0.0/src/CMakeLists.txt 2021-01-25 13:43:34.418305591 -0500 +@@ -29,7 +29,8 @@ + -D_THREAD_SAFE + -D__STDC_FORMAT_MACROS + -D_FILE_OFFSET_BITS=64 +- -DBOOST_ASIO_DISABLE_THREAD_KEYWORD_EXTENSION) ++ -DBOOST_ASIO_DISABLE_THREAD_KEYWORD_EXTENSION ++ -DBOOST_ASIO_USE_TS_EXECUTOR_AS_DEFAULT) + if(LINUX) + add_definitions("-D_GNU_SOURCE") + endif() diff --git a/SOURCES/0006-src-blk-CMakeLists.txt.patch b/SOURCES/0006-src-blk-CMakeLists.txt.patch new file mode 100644 index 0000000..548f676 --- /dev/null +++ b/SOURCES/0006-src-blk-CMakeLists.txt.patch @@ -0,0 +1,11 @@ +--- ceph-16.1.0-43-g6b74fb5c/src/blk/CMakeLists.txt.orig 2021-02-01 08:16:26.719517641 -0500 ++++ ceph-16.1.0-43-g6b74fb5c/src/blk/CMakeLists.txt 2021-02-01 08:16:47.810092341 -0500 +@@ -25,7 +25,7 @@ + zoned/HMSMRDevice.cc) + endif() + +-add_library(blk ${libblk_srcs}) ++add_library(blk STATIC ${libblk_srcs}) + target_include_directories(blk PRIVATE "./") + + if(HAVE_LIBAIO) diff --git a/SOURCES/0007-src-test-neorados-CMakeLists.txt.patch b/SOURCES/0007-src-test-neorados-CMakeLists.txt.patch new file mode 100644 index 0000000..a160f38 --- /dev/null +++ b/SOURCES/0007-src-test-neorados-CMakeLists.txt.patch @@ -0,0 +1,11 @@ +--- 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/0008-cmake-modules-Finduring.cmake.patch b/SOURCES/0008-cmake-modules-Finduring.cmake.patch new file mode 100644 index 0000000..61b93f7 --- /dev/null +++ b/SOURCES/0008-cmake-modules-Finduring.cmake.patch @@ -0,0 +1,11 @@ +--- ceph-16.1.0-43-g6b74fb5c/cmake/modules/Finduring.cmake.orig 2021-02-01 08:45:39.316108287 -0500 ++++ ceph-16.1.0-43-g6b74fb5c/cmake/modules/Finduring.cmake 2021-02-01 08:45:59.813665378 -0500 +@@ -5,7 +5,7 @@ + # uring_FOUND - True if uring found. + + find_path(URING_INCLUDE_DIR liburing.h) +-find_library(URING_LIBRARIES liburing.a liburing) ++find_library(URING_LIBRARIES liburing.so liburing) + + include(FindPackageHandleStandardArgs) + find_package_handle_standard_args(uring DEFAULT_MSG URING_LIBRARIES URING_INCLUDE_DIR) diff --git a/SOURCES/0009-librgw-notifications-initialize-kafka-and-amqp.patch b/SOURCES/0009-librgw-notifications-initialize-kafka-and-amqp.patch new file mode 100644 index 0000000..17a12ae --- /dev/null +++ b/SOURCES/0009-librgw-notifications-initialize-kafka-and-amqp.patch @@ -0,0 +1,63 @@ +From 178f6bdac97b57300bbe0956633cf686a7e3ccee Mon Sep 17 00:00:00 2001 +From: Yuval Lifshitz +Date: Fri, 12 Mar 2021 08:56:45 +0200 +Subject: [PATCH] librgw/notifications: initialize kafka and amqp + +Fixes: https://tracker.ceph.com/issues/49738 + +Signed-off-by: Yuval Lifshitz +--- + src/rgw/librgw.cc | 23 +++++++++++++++++++++++ + 1 file changed, 23 insertions(+) + +diff --git a/src/rgw/librgw.cc b/src/rgw/librgw.cc +index 012cc54c3b..a5351dbe7c 100644 +--- a/src/rgw/librgw.cc ++++ b/src/rgw/librgw.cc +@@ -53,6 +53,12 @@ + #include "rgw_http_client.h" + #include "rgw_http_client_curl.h" + #include "rgw_perf_counters.h" ++#ifdef WITH_RADOSGW_AMQP_ENDPOINT ++#include "rgw_amqp.h" ++#endif ++#ifdef WITH_RADOSGW_KAFKA_ENDPOINT ++#include "rgw_kafka.h" ++#endif + + #include "services/svc_zone.h" + +@@ -617,6 +623,17 @@ namespace rgw { + /* ignore error */ + } + ++#ifdef WITH_RADOSGW_AMQP_ENDPOINT ++ if (!rgw::amqp::init(cct.get())) { ++ derr << "ERROR: failed to initialize AMQP manager" << dendl; ++ } ++#endif ++#ifdef WITH_RADOSGW_KAFKA_ENDPOINT ++ if (!rgw::kafka::init(cct.get())) { ++ derr << "ERROR: failed to initialize Kafka manager" << dendl; ++ } ++#endif ++ + return 0; + } /* RGWLib::init() */ + +@@ -645,6 +662,12 @@ namespace rgw { + rgw_shutdown_resolver(); + rgw_http_client_cleanup(); + rgw::curl::cleanup_curl(); ++#ifdef WITH_RADOSGW_AMQP_ENDPOINT ++ rgw::amqp::shutdown(); ++#endif ++#ifdef WITH_RADOSGW_KAFKA_ENDPOINT ++ rgw::kafka::shutdown(); ++#endif + + rgw_perf_stop(g_ceph_context); + +-- +2.26.2 + 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 new file mode 100644 index 0000000..036f0fc --- /dev/null +++ b/SOURCES/0010-os-bluestore-strip-trailing-slash-for-directory-list.patch @@ -0,0 +1,57 @@ +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/doc-_templates-layout-stripped-Google-Analytics.patch b/SOURCES/doc-_templates-layout-stripped-Google-Analytics.patch deleted file mode 100644 index f724841..0000000 --- a/SOURCES/doc-_templates-layout-stripped-Google-Analytics.patch +++ /dev/null @@ -1,24 +0,0 @@ -diff --git a/doc/_templates/layout.html b/doc/_templates/layout.html -index d5f4b70d..8ff160de 100644 ---- a/doc/_templates/layout.html -+++ b/doc/_templates/layout.html -@@ -5,16 +5,6 @@ - - - --{# Google Analytics #} -- - {% endblock %} - - {%- macro searchform(classes, button) %} --- -2.26.2 - diff --git a/SOURCES/doc-_templates-layout-stripped-download-links.patch b/SOURCES/doc-_templates-layout-stripped-download-links.patch deleted file mode 100644 index 9d26197..0000000 --- a/SOURCES/doc-_templates-layout-stripped-download-links.patch +++ /dev/null @@ -1,49 +0,0 @@ -diff --git a/doc/_templates/layout.html b/doc/_templates/layout.html -index 8ff160de..85eba08d 100644 ---- a/doc/_templates/layout.html -+++ b/doc/_templates/layout.html -@@ -42,16 +42,6 @@ - {# Collect the nav links, forms, and other content for toggling #} -