[packages/ceph] - disable broken autodetection of CPU features (misdetecs on ix86) - disable assembly on ix86 (broke
baggins
baggins at pld-linux.org
Sun Feb 13 11:30:53 CET 2022
commit bbe3668811f56b652559b2dd70cf39d25bee61b6
Author: Jan Rękorajski <baggins at pld-linux.org>
Date: Sun Feb 13 11:28:10 2022 +0100
- disable broken autodetection of CPU features (misdetecs on ix86)
- disable assembly on ix86 (broken detection, no asm there)
- fix json time_t parsing code (it's long int on ix86)
- merge x32 patch into types, these are just bad assumptions needing casting
ceph.spec | 19 +++++++--
ix86-no-asm.patch | 12 ++++++
long-int-time_t.patch | 23 +++++++++++
types.patch | 74 +++++++++++++++++++++++++++++++++
use-provided-cpu-flag-values.patch | 37 +++++++++++++++++
x32.patch | 85 --------------------------------------
6 files changed, 162 insertions(+), 88 deletions(-)
---
diff --git a/ceph.spec b/ceph.spec
index 80e8def..9b9e972 100644
--- a/ceph.spec
+++ b/ceph.spec
@@ -49,7 +49,9 @@ Patch3: string-includes.patch
Patch4: no-virtualenvs.patch
Patch5: system-zstd.patch
Patch6: types.patch
-Patch7: x32.patch
+Patch7: use-provided-cpu-flag-values.patch
+Patch8: ix86-no-asm.patch
+Patch9: long-int-time_t.patch
URL: https://ceph.io/
%{?with_accelio:BuildRequires: accelio-devel}
%{?with_babeltrace:BuildRequires: babeltrace-devel}
@@ -276,14 +278,25 @@ uruchamiania demonów.
%patch4 -p1
%patch5 -p1
%patch6 -p1
-%ifarch x32
%patch7 -p1
-%endif
+%patch8 -p1
+%patch9 -p1
%build
install -d build
cd build
%cmake .. \
+%ifarch %{x8664} %{ix86} x32
+ -DHAVE_INTEL_SSE=1 \
+%endif
+%ifarch %{x8664} x32
+ -DHAVE_INTEL_SSE2=1 \
+ -DHAVE_INTEL_SSE3=1 \
+ -DHAVE_INTEL_SSSE3=1 \
+ -DHAVE_INTEL_PCLMUL=1 \
+ -DHAVE_INTEL_SSE4_1=1 \
+ -DHAVE_INTEL_SSE4_2=1 \
+%endif
-DALLOCATOR="%{?with_tcmalloc:tcmalloc}%{!?with_tcmalloc:libc}" \
-DFIO_INCLUDE_DIR=/usr/include/fio \
-DWITH_PYTHON3=%{py3_ver} \
diff --git a/ix86-no-asm.patch b/ix86-no-asm.patch
new file mode 100644
index 0000000..70b72c3
--- /dev/null
+++ b/ix86-no-asm.patch
@@ -0,0 +1,12 @@
+--- ceph-16.2.7/cmake/modules/CheckNasm.cmake~ 2021-12-07 17:15:49.000000000 +0100
++++ ceph-16.2.7/cmake/modules/CheckNasm.cmake 2022-02-12 19:19:51.463245367 +0100
+@@ -10,6 +10,9 @@
+ set(CMAKE_REQUIRED_QUIET true)
+ include(CheckCXXSourceCompiles)
+ check_cxx_source_compiles("
++ #if !defined(__x86_64__)
++ #error ix86
++ #endif
+ #if defined(__x86_64__) && defined(__ILP32__)
+ #error x32
+ #endif
diff --git a/long-int-time_t.patch b/long-int-time_t.patch
new file mode 100644
index 0000000..7fba0d2
--- /dev/null
+++ b/long-int-time_t.patch
@@ -0,0 +1,23 @@
+--- /home/users/baggins/devel/PLD/rpm/BUILD/ceph-16.2.7/src/json_spirit/json_spirit_value.h.orig 2021-12-07 17:15:49.000000000 +0100
++++ /home/users/baggins/devel/PLD/rpm/BUILD/ceph-16.2.7/src/json_spirit/json_spirit_value.h 2022-02-13 10:26:48.023109513 +0100
+@@ -51,6 +51,7 @@
+ Value_impl( const Array& value );
+ Value_impl( bool value );
+ Value_impl( int value );
++ Value_impl( long int value );
+ Value_impl( boost::int64_t value );
+ Value_impl( boost::uint64_t value );
+ Value_impl( double value );
+@@ -294,6 +295,12 @@
+ : v_( static_cast< boost::int64_t >( value ) )
+ {
+ }
++
++ template< class Config >
++ Value_impl< Config >::Value_impl( long int value )
++ : v_( static_cast< boost::int64_t >( value ) )
++ {
++ }
+
+ template< class Config >
+ Value_impl< Config >::Value_impl( boost::int64_t value )
diff --git a/types.patch b/types.patch
index 42f061c..8f518c1 100644
--- a/types.patch
+++ b/types.patch
@@ -28,3 +28,77 @@
{
d(5) << size << dendl;
+--- ceph-16.2.7/src/common/buffer.cc~ 2021-12-07 17:15:49.000000000 +0100
++++ ceph-16.2.7/src/common/buffer.cc 2022-02-12 19:45:24.576619502 +0100
+@@ -2272,7 +2272,7 @@
+
+ void ceph::buffer::list::page_aligned_appender::_refill(size_t len) {
+ const size_t alloc = \
+- std::max((size_t)min_alloc, (len + CEPH_PAGE_SIZE - 1) & CEPH_PAGE_MASK);
++ std::max((size_t)min_alloc, (size_t)((len + CEPH_PAGE_SIZE - 1) & CEPH_PAGE_MASK));
+ auto new_back = \
+ ptr_node::create(buffer::create_page_aligned(alloc));
+--- ceph-16.2.7/src/os/bluestore/BlueFS.cc~ 2021-12-07 17:15:49.000000000 +0100
++++ ceph-16.2.7/src/os/bluestore/BlueFS.cc 2022-02-12 21:40:54.182516511 +0100
+@@ -3799,7 +3799,7 @@
+ if (dist_to_alignment >= len)
+ return;
+ len -= dist_to_alignment;
+- total += p2align(len, alloc_size);
++ total += p2align((uint64_t)len, alloc_size);
+ };
+ if (alloc[dev]) {
+ alloc[dev]->dump(iterated_allocation);
+--- ceph-16.2.7/src/s3select/include/s3select_functions.h~ 2020-06-23 03:08:18.000000000 +0200
++++ ceph-16.2.7/src/s3select/include/s3select_functions.h 2022-02-12 22:04:21.710093616 +0100
+@@ -585,7 +585,7 @@
+ {
+ boost::gregorian::date_period dp =
+ boost::gregorian::date_period( val_dt1.timestamp()->date(), val_dt2.timestamp()->date());
+- result->set_value( dp.length().days() );
++ result->set_value( (int64_t)dp.length().days() );
+ }
+ else if (strcmp(val_date_part.str(), "hours") == 0)
+ {
+--- ceph-16.2.7/src/librbd/object_map/DiffRequest.cc.orig 2021-12-07 17:15:49.000000000 +0100
++++ ceph-16.2.7/src/librbd/object_map/DiffRequest.cc 2022-02-12 22:17:55.163378523 +0100
+@@ -187,7 +187,7 @@
+ m_object_map.resize(m_object_diff_state->size());
+ }
+
+- uint64_t overlap = std::min(m_object_map.size(), prev_object_diff_state_size);
++ uint64_t overlap = std::min(m_object_map.size(), (uint64_t)prev_object_diff_state_size);
+ auto it = m_object_map.begin();
+ auto overlap_end_it = it + overlap;
+ auto diff_it = m_object_diff_state->begin();
+--- ceph-16.2.7/src/tools/neorados.cc~ 2021-12-07 17:15:49.000000000 +0100
++++ ceph-16.2.7/src/tools/neorados.cc 2022-02-12 22:23:25.836643956 +0100
+@@ -205,7 +205,7 @@
+
+ std::size_t off = 0;
+ ceph::buffer::list bl;
+- while (auto toread = std::max(len - off, io_size)) {
++ while (auto toread = std::max(len - off, (uint64_t)io_size)) {
+ R::ReadOp op;
+ op.read(off, toread, &bl);
+ r.execute(obj, pool, std::move(op), nullptr, y[ec]);
+--- ceph-16.2.7/src/tools/cephfs_mirror/FSMirror.cc.orig 2021-12-07 17:15:49.000000000 +0100
++++ ceph-16.2.7/src/tools/cephfs_mirror/FSMirror.cc 2022-02-12 22:30:46.487298972 +0100
+@@ -345,7 +345,7 @@
+ std::scoped_lock locker(m_lock);
+ m_directories.emplace(dir_path);
+ m_service_daemon->add_or_update_fs_attribute(m_filesystem.fscid, SERVICE_DAEMON_DIR_COUNT_KEY,
+- m_directories.size());
++ (uint64_t)m_directories.size());
+
+ for (auto &[peer, peer_replayer] : m_peer_replayers) {
+ dout(10) << ": peer=" << peer << dendl;
+@@ -363,7 +363,7 @@
+ if (it != m_directories.end()) {
+ m_directories.erase(it);
+ m_service_daemon->add_or_update_fs_attribute(m_filesystem.fscid, SERVICE_DAEMON_DIR_COUNT_KEY,
+- m_directories.size());
++ (uint64_t)m_directories.size());
+ for (auto &[peer, peer_replayer] : m_peer_replayers) {
+ dout(10) << ": peer=" << peer << dendl;
+ peer_replayer->remove_directory(dir_path);
diff --git a/use-provided-cpu-flag-values.patch b/use-provided-cpu-flag-values.patch
new file mode 100644
index 0000000..55c82b0
--- /dev/null
+++ b/use-provided-cpu-flag-values.patch
@@ -0,0 +1,37 @@
+diff --git a/cmake/modules/SIMDExt.cmake b/cmake/modules/SIMDExt.cmake
+index 5330835aa1..a4dd881e34 100644
+--- a/cmake/modules/SIMDExt.cmake
++++ b/cmake/modules/SIMDExt.cmake
+@@ -76,32 +76,25 @@ elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "arm|ARM")
+ elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "i386|i686|amd64|x86_64|AMD64")
+ set(HAVE_INTEL 1)
+ if(CMAKE_SYSTEM_PROCESSOR MATCHES "i686|amd64|x86_64|AMD64")
+- CHECK_C_COMPILER_FLAG(-msse HAVE_INTEL_SSE)
+ if(HAVE_INTEL_SSE)
+ set(SIMD_COMPILE_FLAGS "${SIMD_COMPILE_FLAGS} -msse")
+ endif()
+ if(CMAKE_SYSTEM_PROCESSOR MATCHES "amd64|x86_64|AMD64")
+- CHECK_C_COMPILER_FLAG(-msse2 HAVE_INTEL_SSE2)
+ if(HAVE_INTEL_SSE2)
+ set(SIMD_COMPILE_FLAGS "${SIMD_COMPILE_FLAGS} -msse2")
+ endif()
+- CHECK_C_COMPILER_FLAG(-msse3 HAVE_INTEL_SSE3)
+ if(HAVE_INTEL_SSE3)
+ set(SIMD_COMPILE_FLAGS "${SIMD_COMPILE_FLAGS} -msse3")
+ endif()
+- CHECK_C_COMPILER_FLAG(-mssse3 HAVE_INTEL_SSSE3)
+ if(HAVE_INTEL_SSSE3)
+ set(SIMD_COMPILE_FLAGS "${SIMD_COMPILE_FLAGS} -mssse3")
+ endif()
+- CHECK_C_COMPILER_FLAG(-mpclmul HAVE_INTEL_PCLMUL)
+ if(HAVE_INTEL_PCLMUL)
+ set(SIMD_COMPILE_FLAGS "${SIMD_COMPILE_FLAGS} -mpclmul")
+ endif()
+- CHECK_C_COMPILER_FLAG(-msse4.1 HAVE_INTEL_SSE4_1)
+ if(HAVE_INTEL_SSE4_1)
+ set(SIMD_COMPILE_FLAGS "${SIMD_COMPILE_FLAGS} -msse4.1")
+ endif()
+- CHECK_C_COMPILER_FLAG(-msse4.2 HAVE_INTEL_SSE4_2)
+ if(HAVE_INTEL_SSE4_2)
+ set(SIMD_COMPILE_FLAGS "${SIMD_COMPILE_FLAGS} -msse4.2")
+ endif()
diff --git a/x32.patch b/x32.patch
deleted file mode 100644
index cb6376b..0000000
--- a/x32.patch
+++ /dev/null
@@ -1,85 +0,0 @@
---- ceph-16.2.7/src/common/buffer.cc~ 2021-12-07 17:15:49.000000000 +0100
-+++ ceph-16.2.7/src/common/buffer.cc 2022-02-12 19:45:24.576619502 +0100
-@@ -2272,7 +2272,7 @@
-
- void ceph::buffer::list::page_aligned_appender::_refill(size_t len) {
- const size_t alloc = \
-- std::max((size_t)min_alloc, (len + CEPH_PAGE_SIZE - 1) & CEPH_PAGE_MASK);
-+ std::max((size_t)min_alloc, (size_t)((len + CEPH_PAGE_SIZE - 1) & CEPH_PAGE_MASK));
- auto new_back = \
- ptr_node::create(buffer::create_page_aligned(alloc));
---- ceph-16.2.7/src/os/bluestore/BlueFS.cc~ 2021-12-07 17:15:49.000000000 +0100
-+++ ceph-16.2.7/src/os/bluestore/BlueFS.cc 2022-02-12 21:40:54.182516511 +0100
-@@ -3799,7 +3799,7 @@
- if (dist_to_alignment >= len)
- return;
- len -= dist_to_alignment;
-- total += p2align(len, alloc_size);
-+ total += p2align((uint64_t)len, alloc_size);
- };
- if (alloc[dev]) {
- alloc[dev]->dump(iterated_allocation);
---- ceph-16.2.7/src/s3select/include/s3select_functions.h~ 2020-06-23 03:08:18.000000000 +0200
-+++ ceph-16.2.7/src/s3select/include/s3select_functions.h 2022-02-12 22:04:21.710093616 +0100
-@@ -585,7 +585,7 @@
- {
- boost::gregorian::date_period dp =
- boost::gregorian::date_period( val_dt1.timestamp()->date(), val_dt2.timestamp()->date());
-- result->set_value( dp.length().days() );
-+ result->set_value( (int64_t)dp.length().days() );
- }
- else if (strcmp(val_date_part.str(), "hours") == 0)
- {
---- ceph-16.2.7/src/librbd/object_map/DiffRequest.cc.orig 2021-12-07 17:15:49.000000000 +0100
-+++ ceph-16.2.7/src/librbd/object_map/DiffRequest.cc 2022-02-12 22:17:55.163378523 +0100
-@@ -187,7 +187,7 @@
- m_object_map.resize(m_object_diff_state->size());
- }
-
-- uint64_t overlap = std::min(m_object_map.size(), prev_object_diff_state_size);
-+ uint64_t overlap = std::min(m_object_map.size(), (uint64_t)prev_object_diff_state_size);
- auto it = m_object_map.begin();
- auto overlap_end_it = it + overlap;
- auto diff_it = m_object_diff_state->begin();
---- ceph-16.2.7/src/tools/neorados.cc~ 2021-12-07 17:15:49.000000000 +0100
-+++ ceph-16.2.7/src/tools/neorados.cc 2022-02-12 22:23:25.836643956 +0100
-@@ -205,7 +205,7 @@
-
- std::size_t off = 0;
- ceph::buffer::list bl;
-- while (auto toread = std::max(len - off, io_size)) {
-+ while (auto toread = std::max(len - off, (uint64_t)io_size)) {
- R::ReadOp op;
- op.read(off, toread, &bl);
- r.execute(obj, pool, std::move(op), nullptr, y[ec]);
---- ceph-16.2.7/src/tools/cephfs_mirror/FSMirror.cc~ 2021-12-07 17:15:49.000000000 +0100
-+++ ceph-16.2.7/src/tools/cephfs_mirror/FSMirror.cc 2022-02-12 22:28:42.717060249 +0100
-@@ -345,7 +345,7 @@
- std::scoped_lock locker(m_lock);
- m_directories.emplace(dir_path);
- m_service_daemon->add_or_update_fs_attribute(m_filesystem.fscid, SERVICE_DAEMON_DIR_COUNT_KEY,
-- m_directories.size());
-+ (uint64_t)m_directories.size());
-
- for (auto &[peer, peer_replayer] : m_peer_replayers) {
- dout(10) << ": peer=" << peer << dendl;
---- ceph-16.2.7/src/tools/cephfs_mirror/FSMirror.cc.orig 2021-12-07 17:15:49.000000000 +0100
-+++ ceph-16.2.7/src/tools/cephfs_mirror/FSMirror.cc 2022-02-12 22:30:46.487298972 +0100
-@@ -345,7 +345,7 @@
- std::scoped_lock locker(m_lock);
- m_directories.emplace(dir_path);
- m_service_daemon->add_or_update_fs_attribute(m_filesystem.fscid, SERVICE_DAEMON_DIR_COUNT_KEY,
-- m_directories.size());
-+ (uint64_t)m_directories.size());
-
- for (auto &[peer, peer_replayer] : m_peer_replayers) {
- dout(10) << ": peer=" << peer << dendl;
-@@ -363,7 +363,7 @@
- if (it != m_directories.end()) {
- m_directories.erase(it);
- m_service_daemon->add_or_update_fs_attribute(m_filesystem.fscid, SERVICE_DAEMON_DIR_COUNT_KEY,
-- m_directories.size());
-+ (uint64_t)m_directories.size());
- for (auto &[peer, peer_replayer] : m_peer_replayers) {
- dout(10) << ": peer=" << peer << dendl;
- peer_replayer->remove_directory(dir_path);
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/ceph.git/commitdiff/bbe3668811f56b652559b2dd70cf39d25bee61b6
More information about the pld-cvs-commit
mailing list