[packages/ceph/DEVEL-17] - trying more functionality (zbd, qat, qatlib; seastar is LP64 only)
qboosh
qboosh at pld-linux.org
Mon Aug 29 06:31:35 CEST 2022
commit 32e4d0ffbd144d748cf581bf8feb9f312f5b430a
Author: Jakub Bogusz <qboosh at pld-linux.org>
Date: Mon Aug 29 06:31:29 2022 +0200
- trying more functionality (zbd, qat, qatlib; seastar is LP64 only)
ceph-libdir.patch | 11 ++++++
ceph-qat.patch | 102 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
ceph.spec | 41 ++++++++++++++++++----
types.patch | 40 +++++++++++++++++++++
4 files changed, 188 insertions(+), 6 deletions(-)
---
diff --git a/ceph.spec b/ceph.spec
index e31c82b..6e4b43e 100644
--- a/ceph.spec
+++ b/ceph.spec
@@ -1,7 +1,5 @@
# TODO:
-# - libzbd bluestore backend? (WITH_ZBD=ON, BR: libzbd-devel)
-# - bluefs? (WITH_BLUEFS=ON)
-# - QATZIP? (WITH_QATZIP=ON, BR: qatzip-devel)
+# - QATZIP? (WITH_QATZIP=ON, BR: QATzip-devel)
# - brotli? (WITH_BROTLI=ON, uses internal brotli as downloaded subproject)
# - seastar (WITH_SEASTAR=ON, BR: c-ares-devel >= 1.13.0)
# - proper init scripts if non-systemd boot is to be supported
@@ -15,6 +13,7 @@
# Conditional build:
%bcond_without java # Java binding
%bcond_with angular # Angular-based mgr/dashboard frontend (built using npm, too outdated currently)
+%bcond_without bluefs # BlueFS library
%bcond_with dpdk # DPDK messaging
# 15.2.x/16.2.x build fails with:
# src/rgw/rgw_fcgi_process.cc:92:53: error: 'class rgw::sal::RGWRadosStore' has no member named 'get_new_req_id'
@@ -22,9 +21,13 @@
%bcond_with fio # FIO engines support (16.x: downloads fio as internal subproject)
%bcond_with kerberos # GSSAPI/KRB5 support
%bcond_without pmem # PMDK (persistent memory) support
+%bcond_without qat # QAT driver
+%bcond_without qatzip # QATZIP
%bcond_without rdma # RDMA transport support
+%bcond_without seastar # seastar components (64-bit pointers required)
%bcond_with spdk # Ceph SPDK support (DPDK based)
%bcond_without system_rocksdb # system RocksDB storage support
+%bcond_without zbd # ZBD bluestore backend
# 15.2.x/16.2.x: "fallthrough" define from OpenZFS's spl breaks "[[fallthrough]]" in src/include/blobhash.h
%bcond_with zfs # ZFS support [not ready for zfs 0.8.x]
%bcond_without lttng # LTTng tracing
@@ -38,6 +41,9 @@
%ifnarch %{x8664} aarch64
%undefine with_pmem
%endif
+%ifnarch %{x8664} aarch64 mips64 ppc64 sparc64 s390x
+%undefine with_seastar
+%endif
#
Summary: User space components of the Ceph file system
Summary(pl.UTF-8): Działające w przestrzeni użytkownika elementy systemu plików Ceph
@@ -55,19 +61,24 @@ Patch1: %{name}-fio.patch
Patch2: %{name}-cmake-static.patch
Patch3: %{name}-arrow-pld.patch
Patch4: no-virtualenvs.patch
+Patch5: %{name}-libdir.patch
Patch6: types.patch
Patch7: use-provided-cpu-flag-values.patch
Patch8: ix86-no-asm.patch
Patch9: long-int-time_t.patch
+Patch10: %{name}-qat.patch
Patch11: %{name}-liburing.patch
URL: https://ceph.io/
+%{?with_qatzip:BuildRequires: QATzip-devel}
%{?with_babeltrace:BuildRequires: babeltrace-devel}
BuildRequires: boost-devel >= 1.72
BuildRequires: boost-python3-devel >= 1.72
+%{?with_seastar:BuildRequires: c-ares-devel >= 1.13.0}
BuildRequires: cmake >= 3.22.2
+%{?with_seastar:BuildRequires: cryptopp-devel >= 5.6.5}
BuildRequires: cryptsetup-devel >= 2.0.5
BuildRequires: curl-devel
-%if %{with dpdk} || %{with spdk}
+%if %{with dpdk} || %{with seastar} || %{with spdk}
BuildRequires: dpdk-devel
%endif
BuildRequires: doxygen
@@ -75,9 +86,11 @@ BuildRequires: expat-devel >= 1.95
%{?with_fcgi:BuildRequires: fcgi-devel}
%{?with_fio:BuildRequires: fio-devel >= 3.15}
BuildRequires: gdbm-devel
+%{?with_seastar:BuildRequires: gnutls-devel >= 3.3.26}
BuildRequires: gperf
%{?with_tcmalloc:BuildRequires: gperftools-devel >= 2.6.2}
%{?with_kerberos:BuildRequires: heimdal-devel}
+%{?with_seastar:BuildRequires: hwloc-devel >= 1.11.2}
%if %{with java}
BuildRequires: jdk
BuildRequires: jre-X11
@@ -97,19 +110,22 @@ BuildRequires: libltdl-devel
BuildRequires: libnl-devel >= 3.2
BuildRequires: librdkafka-devel >= 0.9.2
%{?with_rdma:BuildRequires: librdmacm-devel}
+%{?with_seastar:BuildRequires: libsctp-devel}
BuildRequires: libstdc++-devel >= 6:7
%{?with_tcmalloc:BuildRequires: libtcmalloc-devel >= 2.6.2}
BuildRequires: libtool >= 2:1.5
BuildRequires: liburing-devel
BuildRequires: libuuid-devel
BuildRequires: libxml2-devel >= 2.0
+%{?with_zbd:BuildRequires: libzbd-devel}
%{?with_lttng:BuildRequires: lttng-ust-devel}
BuildRequires: lua-devel >= 5.3
-BuildRequires: lz4-devel >= 1:1.7
+BuildRequires: lz4-devel >= 1:1.7.3
BuildRequires: ncurses-devel
%{?with_angular:BuildRequires: npm}
BuildRequires: nspr-devel >= 4
BuildRequires: nss-devel >= 3
+%{?with_seastar:BuildRequires: numactl-devel}
BuildRequires: oath-toolkit-devel
BuildRequires: openldap-devel
BuildRequires: openssl-devel >= 1.1
@@ -122,8 +138,10 @@ BuildRequires: python3-PyYAML
BuildRequires: python3-devel >= 1:3.2
%{?with_tests:BuildRequires: python3-tox >= 2.9.1}
BuildRequires: rabbitmq-c-devel
+%{?with_seastar:BuildRequires: ragel >= 6.10}
%{?with_system_rocksdb:BuildRequires: rocksdb-devel >= 5.14}
BuildRequires: rpmbuild(macros) >= 1.671
+%{?with_qat:BuildRequires: qatlib-devel}
BuildRequires: sed >= 4.0
BuildRequires: snappy-devel
BuildRequires: sphinx-pdg >= 4.4.0
@@ -133,6 +151,7 @@ BuildRequires: thrift-devel
BuildRequires: udev-devel
%{?with_dpdk:BuildRequires: xorg-lib-libpciaccess-devel}
BuildRequires: xfsprogs-devel
+%{?with_seastar:BuildRequires: yaml-cpp-devel >= 0.5.1}
%ifarch %{x8664}
BuildRequires: yasm
%endif
@@ -142,7 +161,7 @@ BuildRequires: zstd-devel >= 1.4.4
Requires(post,preun): /sbin/chkconfig
Requires(preun): rc-scripts
Requires: %{name}-libs = %{version}-%{release}
-Requires: lz4 >= 1:1.7
+Requires: lz4 >= 1:1.7.3
Requires: python3-%{name} = %{version}-%{release}
%{?with_system_rocksdb:Requires: rocksdb >= 5.14}
Requires: systemd-units >= 38
@@ -306,12 +325,14 @@ uruchamiania demonów.
%patch2 -p1
%patch3 -p1
%patch4 -p1
+%patch5 -p1
%patch6 -p1
%patch7 -p1
%patch8 -p1
%ifarch %{ix86}
%patch9 -p1
%endif
+%patch10 -p1
%patch11 -p1
%{__sed} -i -e '1s,/usr/bin/env bash,/bin/bash,' \
@@ -354,6 +375,7 @@ cd build
-DPYTHON=%{__python3} \
-DSPHINX_BUILD=/usr/bin/sphinx-build \
%{!?with_babeltrace:-DWITH_BABELTRACE=OFF} \
+ %{?with_bluefs:-DWITH_BLUEFS=ON} \
%if %{with pmem}
-DWITH_BLUESTORE_PMEM=ON \
-DWITH_SYSTEM_PMDK:BOOL=ON \
@@ -370,6 +392,9 @@ cd build
%{?with_fcgi:-DWITH_RADOSGW_FCGI_FRONTEND=ON} \
%{!?with_rdma:-DWITH_RDMA=OFF} \
-DWITH_REENTRANT_STRSIGNAL=ON \
+ %{?with_qat:-DWITH_QAT=ON} \
+ %{?with_qatzip:-DWITH_QATZIP=ON} \
+ %{?with_seastar:-DWITH_SEASTAR=ON} \
%{?with_spdk:-DWITH_SPDK=ON} \
-DWITH_SYSTEM_BOOST=ON \
-DWITH_SYSTEM_LIBURING=ON \
@@ -378,6 +403,7 @@ cd build
-DWITH_SYSTEM_ZSTD=ON \
-DWITH_SYSTEMD=ON \
%{!?with_tests:-DWITH_TESTS=OFF} \
+ %{?with_zbd:-DWITH_ZBD=ON} \
%{?with_zfs:-DWITH_ZFS=ON}
# some object files have missing dependencies on these, pregenerate to avoid global -j1
@@ -651,6 +677,9 @@ fi
%files libs
%defattr(644,root,root,755)
+%if %{with bluefs}
+%attr(755,root,root) %{_libdir}/libbluefs.so
+%endif
%attr(755,root,root) %{_libdir}/libcephfs.so.*.*.*
%attr(755,root,root) %ghost %{_libdir}/libcephfs.so.2
%attr(755,root,root) %{_libdir}/libos_tp.so.*.*.*
diff --git a/ceph-libdir.patch b/ceph-libdir.patch
new file mode 100644
index 0000000..871be3e
--- /dev/null
+++ b/ceph-libdir.patch
@@ -0,0 +1,11 @@
+--- ceph-17.2.3/src/os/CMakeLists.txt.orig 2022-07-28 23:52:12.000000000 +0200
++++ ceph-17.2.3/src/os/CMakeLists.txt 2022-08-28 13:58:09.699009978 +0200
+@@ -76,7 +76,7 @@ if(WITH_BLUEFS)
+ target_include_directories(bluefs SYSTEM PUBLIC
+ $<TARGET_PROPERTY:RocksDB::RocksDB,INTERFACE_INCLUDE_DIRECTORIES>)
+ target_link_libraries(bluefs global)
+- install(TARGETS bluefs DESTINATION lib)
++ install(TARGETS bluefs DESTINATION lib${LIB_SUFFIX})
+ endif(WITH_BLUEFS)
+
+ if(WITH_FUSE)
diff --git a/ceph-qat.patch b/ceph-qat.patch
new file mode 100644
index 0000000..0954baa
--- /dev/null
+++ b/ceph-qat.patch
@@ -0,0 +1,102 @@
+--- ceph-17.2.3/CMakeLists.txt.orig 2022-07-28 23:52:12.000000000 +0200
++++ ceph-17.2.3/CMakeLists.txt 2022-08-28 14:39:36.852487766 +0200
+@@ -278,7 +278,7 @@ option(WITH_BLUEFS "libbluefs library" O
+
+ option(WITH_QAT "Enable Qat driver" OFF)
+ if(WITH_QAT)
+- find_package(QatDrv REQUIRED COMPONENTS qat_s usdm_drv_s)
++ find_package(QatDrv REQUIRED COMPONENTS qat usdm)
+ set(HAVE_QATDRV $(QatDrv_FOUND))
+ endif()
+
+--- ceph-17.2.3/src/crypto/qat/CMakeLists.txt.orig 2022-07-28 23:52:12.000000000 +0200
++++ ceph-17.2.3/src/crypto/qat/CMakeLists.txt 2022-08-28 14:39:51.893274653 +0200
+@@ -12,8 +12,8 @@ add_library(ceph_crypto_qat SHARED ${qat
+ add_dependencies(crypto_plugins ceph_crypto_qat)
+
+ target_link_libraries(ceph_crypto_qat PRIVATE
+- QatDrv::qat_s
+- QatDrv::usdm_drv_s)
++ QatDrv::qat
++ QatDrv::usdm)
+
+ add_dependencies(crypto_plugins ceph_crypto_qat)
+ set_target_properties(ceph_crypto_qat PROPERTIES VERSION 1.0.0 SOVERSION 1)
+--- ceph-17.2.3/cmake/modules/FindQatDrv.cmake.orig 2022-07-28 23:52:12.000000000 +0200
++++ ceph-17.2.3/cmake/modules/FindQatDrv.cmake 2022-08-28 17:59:19.158087689 +0200
+@@ -39,23 +39,15 @@ function(get_qatdrv_version versionfile)
+ endfunction()
+
+ find_path(QATDRV_INCLUDE_DIR
+- name quickassist/include/cpa.h
+- HINTS $ENV{ICP_ROOT} /opt/APP/driver/QAT
+- NO_DEFAULT_PATH)
++ name qat/cpa.h
++ HINTS $ENV{ICP_ROOT}
++ )
+ if(QATDRV_INCLUDE_DIR)
+- get_qatdrv_version(${QATDRV_INCLUDE_DIR}/versionfile)
+- set(QatDrv_INCLUDE_DIRS
+- ${QATDRV_INCLUDE_DIR}/quickassist/include
+- ${QATDRV_INCLUDE_DIR}/quickassist/include/dc
+- ${QATDRV_INCLUDE_DIR}/quickassist/lookaside/access_layer/include
+- ${QATDRV_INCLUDE_DIR}/quickassist/include/lac
+- ${QATDRV_INCLUDE_DIR}/quickassist/utilities/libusdm_drv
+- ${QATDRV_INCLUDE_DIR}/quickassist/utilities/libusdm_drv/include)
++ set(QatDrv_INCLUDE_DIRS ${QATDRV_INCLUDE_DIR})
+ endif()
+ foreach(component ${QatDrv_FIND_COMPONENTS})
+ find_library(QatDrv_${component}_LIBRARIES
+- NAMES ${component}
+- HINTS ${QATDRV_INCLUDE_DIR}/build/)
++ NAMES ${component})
+ mark_as_advanced(QatDrv_INCLUDE_DIRS
+ QatDrv_${component}_LIBRARIES)
+ list(APPEND QatDrv_LIBRARIES "${QatDrv_${component}_LIBRARIES}")
+@@ -71,7 +63,7 @@ find_package_handle_standard_args(QatDrv
+
+ foreach(component ${QatDrv_FIND_COMPONENTS})
+ if(NOT TARGET QatDrv::${component})
+- add_library(QatDrv::${component} STATIC IMPORTED GLOBAL)
++ add_library(QatDrv::${component} SHARED IMPORTED GLOBAL)
+ set_target_properties(QatDrv::${component} PROPERTIES
+ INTERFACE_INCLUDE_DIRECTORIES "${QatDrv_INCLUDE_DIRS}"
+ IMPORTED_LINK_INTERFACE_LANGUAGES "C"
+--- ceph-17.2.3/src/compressor/CMakeLists.txt.orig 2022-07-28 23:52:12.000000000 +0200
++++ ceph-17.2.3/src/compressor/CMakeLists.txt 2022-08-28 18:59:38.018324891 +0200
+@@ -7,8 +7,8 @@ endif()
+ add_library(compressor_objs OBJECT ${compressor_srcs})
+ if(HAVE_QATZIP AND HAVE_QATDRV)
+ target_link_libraries(compressor_objs PRIVATE
+- QatDrv::qat_s
+- QatDrv::usdm_drv_s
++ QatDrv::qat
++ QatDrv::usdm
+ qatzip::qatzip
+ )
+ endif()
+--- ceph-17.2.3/src/crypto/qat/qcccrypto.h.orig 2022-07-28 23:52:12.000000000 +0200
++++ ceph-17.2.3/src/crypto/qat/qcccrypto.h 2022-08-28 20:18:02.916194325 +0200
+@@ -8,13 +8,15 @@
+ #include <pthread.h>
+ #include <queue>
+ extern "C" {
+-#include "cpa.h"
+-#include "lac/cpa_cy_sym.h"
+-#include "lac/cpa_cy_im.h"
+-#include "qae_mem.h"
+-#include "icp_sal_user.h"
+-#include "icp_sal_poll.h"
+-#include "qae_mem_utils.h"
++#include "qat/cpa.h"
++#include "qat/cpa_cy_sym.h"
++#include "qat/cpa_cy_im.h"
++#include "qat/qae_mem.h"
++#include "qat/icp_sal_user.h"
++#include "qat/icp_sal_poll.h"
++
++CpaStatus qaeMemInit(void);
++void qaeMemDestroy(void);
+ }
+
+ class QccCrypto {
diff --git a/types.patch b/types.patch
index 34515e2..f0cf146 100644
--- a/types.patch
+++ b/types.patch
@@ -98,3 +98,43 @@
out:
return rc;
+--- ceph-17.2.3/src/seastar/src/core/file.cc.orig 2021-12-19 23:02:10.000000000 +0100
++++ ceph-17.2.3/src/seastar/src/core/file.cc 2022-08-28 09:19:17.258501014 +0200
+@@ -313,7 +313,7 @@ posix_file_impl::close() noexcept {
+
+ future<uint64_t>
+ blockdev_file_impl::size(void) noexcept {
+- return engine()._thread_pool->submit<syscall_result_extra<size_t>>([this] {
++ return engine()._thread_pool->submit<syscall_result_extra<uint64_t>>([this] {
+ uint64_t size;
+ int ret = ::ioctl(_fd, BLKGETSIZE64, &size);
+ return wrap_syscall(ret, size);
+@@ -908,7 +908,7 @@ append_challenged_posix_file_impl::trunc
+
+ future<uint64_t>
+ append_challenged_posix_file_impl::size() noexcept {
+- return make_ready_future<size_t>(_logical_size);
++ return make_ready_future<uint64_t>(_logical_size);
+ }
+
+ future<>
+@@ -996,7 +996,7 @@ make_file_impl(int fd, file_open_options
+ engine().fstatfs(fd).then([fd, st_dev] (struct statfs sfs) {
+ internal::fs_info fsi;
+ fsi.block_size = sfs.f_bsize;
+- switch (sfs.f_type) {
++ switch (static_cast<unsigned>(sfs.f_type)) {
+ case 0x58465342: /* XFS */
+ dioattr da;
+ if (::ioctl(fd, XFS_IOC_DIOINFO, &da) == 0) {
+--- ceph-17.2.3/src/seastar/src/core/fstream.cc.orig 2021-12-19 23:02:10.000000000 +0100
++++ ceph-17.2.3/src/seastar/src/core/fstream.cc 2022-08-28 09:22:32.072057177 +0200
+@@ -419,7 +419,7 @@ private:
+ if ((buf.size() & (_file.disk_write_dma_alignment() - 1)) != 0) {
+ // If buf size isn't aligned, copy its content into a new aligned buf.
+ // This should only happen when the user calls output_stream::flush().
+- auto tmp = allocate_buffer(align_up(buf.size(), _file.disk_write_dma_alignment()));
++ auto tmp = allocate_buffer(align_up<uint64_t>(buf.size(), _file.disk_write_dma_alignment()));
+ ::memcpy(tmp.get_write(), buf.get(), buf.size());
+ ::memset(tmp.get_write() + buf.size(), 0, tmp.size() - buf.size());
+ buf = std::move(tmp);
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/ceph.git/commitdiff/32e4d0ffbd144d748cf581bf8feb9f312f5b430a
More information about the pld-cvs-commit
mailing list