aboutsummaryrefslogtreecommitdiffstats
path: root/community/ceph
diff options
context:
space:
mode:
Diffstat (limited to 'community/ceph')
-rw-r--r--community/ceph/10-musl-fixes.patch1
-rw-r--r--community/ceph/20-pci.patch2
-rw-r--r--community/ceph/30-32bit_fix.patch.noauto128
-rw-r--r--community/ceph/30-cypress.patch.noauto14
-rw-r--r--community/ceph/30-ubuntu-32bit-fixes.patch.noauto137
-rw-r--r--community/ceph/31-32bit_fix_tests.patch.noauto16
-rw-r--r--community/ceph/32-PurgeQueue.cc-cast.patch85
-rw-r--r--community/ceph/32-fix_ceph_thread_timeout.patch74
-rw-r--r--community/ceph/32-upstream32bit.patch92
-rw-r--r--community/ceph/32-upstream32bitcleanup.patch143
-rw-r--r--community/ceph/34-fix_cpu_detection.patch76
-rw-r--r--community/ceph/35-fix_ErasureCodeShec.patch2
-rw-r--r--community/ceph/36-fix_librbd_duplicate.patch12
-rw-r--r--community/ceph/37-fix_tests.patch30
-rw-r--r--community/ceph/40-uint.patch11
-rw-r--r--community/ceph/41-test-uint.patch49
-rw-r--r--community/ceph/42-no-virtualenvs.patch14
-rw-r--r--community/ceph/44-LogClock.h.patch16
-rw-r--r--community/ceph/44-cmake-buildtype.patch36
-rw-r--r--community/ceph/44-missing-include.patch28
-rw-r--r--community/ceph/44-missing-include2.patch117
-rw-r--r--community/ceph/44-node_modules.patch19
-rw-r--r--community/ceph/44-signal_handler.patch16
-rw-r--r--community/ceph/44-staticcast.patch13
-rw-r--r--community/ceph/APKBUILD383
25 files changed, 920 insertions, 594 deletions
diff --git a/community/ceph/10-musl-fixes.patch b/community/ceph/10-musl-fixes.patch
index 183097514b..1b7c9079c1 100644
--- a/community/ceph/10-musl-fixes.patch
+++ b/community/ceph/10-musl-fixes.patch
@@ -1,3 +1,4 @@
+fix for musl
diff -Nurp a/src/tools/rbd_nbd/rbd-nbd.cc b/src/tools/rbd_nbd/rbd-nbd.cc
--- a/src/tools/rbd_nbd/rbd-nbd.cc 2020-11-21 08:06:35.834423310 +0000
diff --git a/community/ceph/20-pci.patch b/community/ceph/20-pci.patch
index ded258677a..c16e27699e 100644
--- a/community/ceph/20-pci.patch
+++ b/community/ceph/20-pci.patch
@@ -1,3 +1,5 @@
+Musl patch for pci
+
diff -Nurp a/src/spdk/dpdk/drivers/bus/pci/linux/pci_uio.c b/src/spdk/dpdk/drivers/bus/pci/linux/pci_uio.c
--- a/src/spdk/dpdk/drivers/bus/pci/linux/pci_uio.c 2020-11-21 13:07:44.255206657 +0000
+++ b/src/spdk/dpdk/drivers/bus/pci/linux/pci_uio.c 2020-11-21 13:04:06.488285583 +0000
diff --git a/community/ceph/30-32bit_fix.patch.noauto b/community/ceph/30-32bit_fix.patch.noauto
index cf505bd570..aba21d6400 100644
--- a/community/ceph/30-32bit_fix.patch.noauto
+++ b/community/ceph/30-32bit_fix.patch.noauto
@@ -1,3 +1,5 @@
+32bit specific patches
+
diff -uNr ceph-15.2.4/src/client/Client.cc ceph-15.2.4-arm32_fix/src/client/Client.cc
--- ceph-15.2.4/src/client/Client.cc 2020-07-01 01:10:51.000000000 +0930
+++ ceph-15.2.4-arm32_fix/src/client/Client.cc 2020-11-21 22:11:16.061796876 +1030
@@ -28,66 +30,6 @@ diff -uNr ceph-15.2.4/src/client/Client.cc ceph-15.2.4-arm32_fix/src/client/Clie
{
std::lock_guard lock(client_lock);
return _ll_forget(in, count);
-diff -uNr ceph-15.2.4/src/client/Client.h ceph-15.2.4-arm32_fix/src/client/Client.h
---- ceph-15.2.4/src/client/Client.h 2020-07-01 01:10:51.000000000 +0930
-+++ ceph-15.2.4-arm32_fix/src/client/Client.h 2020-11-21 22:11:16.063796882 +1030
-@@ -482,7 +482,7 @@
- int ll_lookupx(Inode *parent, const char *name, Inode **out,
- struct ceph_statx *stx, unsigned want, unsigned flags,
- const UserPerm& perms);
-- bool ll_forget(Inode *in, uint64_t count);
-+ bool ll_forget(Inode *in, size_t count);
- bool ll_put(Inode *in);
- int ll_get_snap_ref(snapid_t snap);
-
-@@ -1028,7 +1028,7 @@
- void _fragmap_remove_stopped_mds(Inode *in, mds_rank_t mds);
-
- void _ll_get(Inode *in);
-- int _ll_put(Inode *in, uint64_t num);
-+ int _ll_put(Inode *in, size_t num);
- void _ll_drop_pins();
-
- Fh *_create_fh(Inode *in, int flags, int cmode, const UserPerm& perms);
-@@ -1179,7 +1179,7 @@
- int _lookup_parent(Inode *in, const UserPerm& perms, Inode **parent=NULL);
- int _lookup_name(Inode *in, Inode *parent, const UserPerm& perms);
- int _lookup_ino(inodeno_t ino, const UserPerm& perms, Inode **inode=NULL);
-- bool _ll_forget(Inode *in, uint64_t count);
-+ bool _ll_forget(Inode *in, size_t count);
-
-
- uint32_t deleg_timeout = 0;
-diff -uNr ceph-15.2.4/src/common/options.h ceph-15.2.4-arm32_fix/src/common/options.h
---- ceph-15.2.4/src/common/options.h 2020-07-01 01:10:51.000000000 +0930
-+++ ceph-15.2.4-arm32_fix/src/common/options.h 2020-11-21 22:12:48.805115681 +1030
-@@ -35,7 +35,7 @@
- case TYPE_ADDR: return "entity_addr_t";
- case TYPE_ADDRVEC: return "entity_addrvec_t";
- case TYPE_UUID: return "uuid_d";
-- case TYPE_SIZE: return "size_t";
-+ case TYPE_SIZE: return "uint64_t";
- case TYPE_SECS: return "secs";
- default: return "unknown";
- }
-@@ -121,7 +121,7 @@
- };
-
- struct size_t {
-- std::size_t value;
-+ std::uint64_t value;
- operator uint64_t() const {
- return static_cast<uint64_t>(value);
- }
-@@ -262,7 +262,7 @@
- case TYPE_BOOL:
- v = bool(new_value); break;
- case TYPE_SIZE:
-- v = size_t{static_cast<std::size_t>(new_value)}; break;
-+ v = size_t{static_cast<std::uint64_t>(new_value)}; break;
- case TYPE_SECS:
- v = std::chrono::seconds{new_value}; break;
- default:
diff -uNr ceph-15.2.4/src/mds/PurgeQueue.h ceph-15.2.4-arm32_fix/src/mds/PurgeQueue.h
--- ceph-15.2.4/src/mds/PurgeQueue.h 2020-07-01 01:10:51.000000000 +0930
+++ ceph-15.2.4-arm32_fix/src/mds/PurgeQueue.h 2020-11-21 22:11:16.065796889 +1030
@@ -99,17 +41,6 @@ diff -uNr ceph-15.2.4/src/mds/PurgeQueue.h ceph-15.2.4-arm32_fix/src/mds/PurgeQu
+ size_t files_high_water = 0;
};
#endif
-diff -uNr ceph-15.2.4/src/pybind/mgr/dashboard/frontend/package.json ceph-15.2.4-arm32_fix/src/pybind/mgr/dashboard/frontend/package.json
---- ceph-15.2.4/src/pybind/mgr/dashboard/frontend/package.json 2020-07-01 01:10:51.000000000 +0930
-+++ ceph-15.2.4-arm32_fix/src/pybind/mgr/dashboard/frontend/package.json 2020-11-21 22:11:16.065796889 +1030
-@@ -122,7 +122,6 @@
- "@types/node": "12.12.34",
- "@types/simplebar": "5.1.1",
- "codelyzer": "5.2.2",
-- "cypress": "4.4.0",
- "html-linter": "1.1.1",
- "htmllint-cli": "0.0.7",
- "jest": "25.2.4",
diff -uNr ceph-15.2.4/src/test/common/test_json_formattable.cc ceph-15.2.4-arm32_fix/src/test/common/test_json_formattable.cc
--- ceph-15.2.4/src/test/common/test_json_formattable.cc 2020-07-01 01:10:51.000000000 +0930
+++ ceph-15.2.4-arm32_fix/src/test/common/test_json_formattable.cc 2020-11-21 22:11:16.065796889 +1030
@@ -146,33 +77,34 @@ diff -uNr ceph-15.2.4/src/test/rbd_mirror/image_deleter/test_mock_TrashWatcher.c
bufferlist out_bl;
encode(images, out_bl);
-diff -uNr ceph-15.2.4/src/tools/rbd_mirror/image_replayer/snapshot/Replayer.cc ceph-15.2.4-arm32_fix/src/tools/rbd_mirror/image_replayer/snapshot/Replayer.cc
---- ceph-15.2.4/src/tools/rbd_mirror/image_replayer/snapshot/Replayer.cc 2020-07-01 01:10:51.000000000 +0930
-+++ ceph-15.2.4-arm32_fix/src/tools/rbd_mirror/image_replayer/snapshot/Replayer.cc 2020-11-21 22:11:16.066796893 +1030
-@@ -234,7 +234,7 @@
+diff -Nurp a/src/client/Client.h b/src/client/Client.h
+--- a/src/client/Client.h
++++ b/src/client/Client.h
+@@ -525,7 +525,7 @@
+ int ll_lookupx(Inode *parent, const char *name, Inode **out,
+ struct ceph_statx *stx, unsigned want, unsigned flags,
+ const UserPerm& perms);
+- bool ll_forget(Inode *in, uint64_t count);
++ bool ll_forget(Inode *in, size_t count);
+ bool ll_put(Inode *in);
+ int ll_get_snap_ref(snapid_t snap);
- json_spirit::mObject root_obj;
- root_obj["replay_state"] = replay_state;
-- root_obj["remote_snapshot_timestamp"] = remote_snap_info->timestamp.sec();
-+ root_obj["remote_snapshot_timestamp"] = (uint64_t) remote_snap_info->timestamp.sec();
+@@ -1241,7 +1241,7 @@
+ void _fragmap_remove_stopped_mds(Inode *in, mds_rank_t mds);
- auto matching_remote_snap_id = util::compute_remote_snap_id(
- m_state_builder->local_image_ctx->image_lock,
-@@ -249,7 +249,7 @@
- // the local snapshot would just be the time the snapshot was
- // synced and not the consistency point in time.
- root_obj["local_snapshot_timestamp"] =
-- matching_remote_snap_it->second.timestamp.sec();
-+ (uint64_t) matching_remote_snap_it->second.timestamp.sec();
- }
+ void _ll_get(Inode *in);
+- int _ll_put(Inode *in, uint64_t num);
++ int _ll_put(Inode *in, size_t num);
+ void _ll_drop_pins();
+
+ Fh *_create_fh(Inode *in, int flags, int cmode, const UserPerm& perms);
+@@ -1405,7 +1405,7 @@
+ int _lookup_parent(Inode *in, const UserPerm& perms, Inode **parent=NULL);
+ int _lookup_name(Inode *in, Inode *parent, const UserPerm& perms);
+ int _lookup_vino(vinodeno_t ino, const UserPerm& perms, Inode **inode=NULL);
+- bool _ll_forget(Inode *in, uint64_t count);
++ bool _ll_forget(Inode *in, size_t count);
+
+ void collect_and_send_metrics();
+ void collect_and_send_global_metrics();
- matching_remote_snap_it = m_state_builder->remote_image_ctx->snap_info.find(
-@@ -257,7 +257,7 @@
- if (m_remote_snap_id_end != CEPH_NOSNAP &&
- matching_remote_snap_it !=
- m_state_builder->remote_image_ctx->snap_info.end()) {
-- root_obj["syncing_snapshot_timestamp"] = remote_snap_info->timestamp.sec();
-+ root_obj["syncing_snapshot_timestamp"] = (uint64_t) remote_snap_info->timestamp.sec();
- root_obj["syncing_percent"] = static_cast<uint64_t>(
- 100 * m_local_mirror_snap_ns.last_copied_object_number /
- static_cast<float>(std::max<uint64_t>(1U, m_local_object_count)));
diff --git a/community/ceph/30-cypress.patch.noauto b/community/ceph/30-cypress.patch.noauto
new file mode 100644
index 0000000000..fecf055915
--- /dev/null
+++ b/community/ceph/30-cypress.patch.noauto
@@ -0,0 +1,14 @@
+remove cypress as not availiable on 32bit platforms
+
+diff -Nurp a/src/pybind/mgr/dashboard/frontend/package.json b/src/pybind/mgr/dashboard/frontend/package.json
+--- a/src/pybind/mgr/dashboard/frontend/package.json 2021-04-03 08:58:07.611941559 +0100
++++ b/src/pybind/mgr/dashboard/frontend/package.json 2021-04-03 08:59:13.903122038 +0100
+@@ -119,8 +119,6 @@
+ "@types/node": "12.12.62",
+ "@types/simplebar": "5.1.1",
+ "codelyzer": "6.0.1",
+- "cypress": "5.3.0",
+- "cypress-multi-reporters": "1.4.0",
+ "html-linter": "1.1.1",
+ "htmllint-cli": "0.0.7",
+ "identity-obj-proxy": "3.0.0",
diff --git a/community/ceph/30-ubuntu-32bit-fixes.patch.noauto b/community/ceph/30-ubuntu-32bit-fixes.patch.noauto
new file mode 100644
index 0000000000..9b9318d8d3
--- /dev/null
+++ b/community/ceph/30-ubuntu-32bit-fixes.patch.noauto
@@ -0,0 +1,137 @@
+Description: Misc fixes for 32 bit architecture builds.
+Author: James Page <james.page@ubuntu.com>
+Forwarded: no
+
+--- a/src/tools/rbd_mirror/image_replayer/snapshot/Replayer.cc
++++ b/src/tools/rbd_mirror/image_replayer/snapshot/Replayer.cc
+@@ -235,7 +235,8 @@ bool Replayer<I>::get_replay_status(std:
+
+ json_spirit::mObject root_obj;
+ root_obj["replay_state"] = replay_state;
+- root_obj["remote_snapshot_timestamp"] = remote_snap_info->timestamp.sec();
++ root_obj["remote_snapshot_timestamp"] = static_cast<uint64_t>(
++ remote_snap_info->timestamp.sec());
+
+ auto matching_remote_snap_id = util::compute_remote_snap_id(
+ m_state_builder->local_image_ctx->image_lock,
+@@ -249,8 +250,8 @@ bool Replayer<I>::get_replay_status(std:
+ // use the timestamp from the matching remote image since
+ // the local snapshot would just be the time the snapshot was
+ // synced and not the consistency point in time.
+- root_obj["local_snapshot_timestamp"] =
+- matching_remote_snap_it->second.timestamp.sec();
++ root_obj["local_snapshot_timestamp"] = static_cast<uint64_t>(
++ matching_remote_snap_it->second.timestamp.sec());
+ }
+
+ matching_remote_snap_it = m_state_builder->remote_image_ctx->snap_info.find(
+@@ -258,7 +259,8 @@ bool Replayer<I>::get_replay_status(std:
+ if (m_remote_snap_id_end != CEPH_NOSNAP &&
+ matching_remote_snap_it !=
+ m_state_builder->remote_image_ctx->snap_info.end()) {
+- root_obj["syncing_snapshot_timestamp"] = remote_snap_info->timestamp.sec();
++ root_obj["syncing_snapshot_timestamp"] = static_cast<uint64_t>(
++ remote_snap_info->timestamp.sec());
+ root_obj["syncing_percent"] = static_cast<uint64_t>(
+ 100 * m_local_mirror_snap_ns.last_copied_object_number /
+ static_cast<float>(std::max<uint64_t>(1U, m_local_object_count)));
+--- a/src/s3select/include/s3select_functions.h
++++ b/src/s3select/include/s3select_functions.h
+@@ -585,7 +585,7 @@ struct _fn_diff_timestamp : public base_
+ {
+ 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)
+ {
+--- a/src/os/bluestore/BlueFS.cc
++++ b/src/os/bluestore/BlueFS.cc
+@@ -3744,11 +3744,11 @@ int BlueFS::do_replay_recovery_read(File
+
+ size_t BlueFS::probe_alloc_avail(int dev, uint64_t alloc_size)
+ {
+- size_t total = 0;
+- auto iterated_allocation = [&](size_t off, size_t len) {
++ uint64_t total = 0;
++ auto iterated_allocation = [&](uint64_t off, uint64_t len) {
+ //only count in size that is alloc_size aligned
+- size_t dist_to_alignment;
+- size_t offset_in_block = off & (alloc_size - 1);
++ uint64_t dist_to_alignment;
++ uint64_t offset_in_block = off & (alloc_size - 1);
+ if (offset_in_block == 0)
+ dist_to_alignment = 0;
+ else
+--- a/src/tools/neorados.cc
++++ b/src/tools/neorados.cc
+@@ -146,7 +146,7 @@ void create(R::RADOS& r, const std::vect
+ obj, pname));
+ }
+
+-inline constexpr std::size_t io_size = 4 << 20;
++inline constexpr std::uint64_t io_size = 4 << 20;
+
+ void write(R::RADOS& r, const std::vector<std::string>& p, s::yield_context y)
+ {
+@@ -156,7 +156,7 @@ void write(R::RADOS& r, const std::vecto
+
+ bs::error_code ec;
+ std::unique_ptr<char[]> buf = std::make_unique<char[]>(io_size);
+- std::size_t off = 0;
++ std::uint64_t off = 0;
+ boost::io::ios_exception_saver ies(std::cin);
+
+ std::cin.exceptions(std::istream::badbit);
+@@ -203,7 +203,7 @@ void read(R::RADOS& r, const std::vector
+ obj, pname));
+ }
+
+- std::size_t off = 0;
++ std::uint64_t off = 0;
+ ceph::buffer::list bl;
+ while (auto toread = std::max(len - off, io_size)) {
+ R::ReadOp op;
+--- a/src/tools/cephfs_mirror/FSMirror.cc
++++ b/src/tools/cephfs_mirror/FSMirror.cc
+@@ -334,7 +334,7 @@ void FSMirror::handle_acquire_directory(
+ 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());
++ static_cast<uint64_t>(m_directories.size()));
+
+ for (auto &[peer, peer_replayer] : m_peer_replayers) {
+ dout(10) << ": peer=" << peer << dendl;
+@@ -352,7 +352,7 @@ void FSMirror::handle_release_directory(
+ 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());
++ static_cast<uint64_t>(m_directories.size()));
+ for (auto &[peer, peer_replayer] : m_peer_replayers) {
+ dout(10) << ": peer=" << peer << dendl;
+ peer_replayer->remove_directory(dir_path);
+--- a/src/librbd/object_map/DiffRequest.cc
++++ b/src/librbd/object_map/DiffRequest.cc
+@@ -175,7 +175,7 @@ void DiffRequest<I>::handle_load_object_
+ m_object_map.resize(num_objs);
+ }
+
+- size_t prev_object_diff_state_size = m_object_diff_state->size();
++ uint64_t prev_object_diff_state_size = m_object_diff_state->size();
+ if (prev_object_diff_state_size < num_objs) {
+ // the diff state should be the largest of all snapshots in the set
+ m_object_diff_state->resize(num_objs);
+--- a/src/SimpleRADOSStriper.cc
++++ b/src/SimpleRADOSStriper.cc
+@@ -140,7 +140,7 @@ int SimpleRADOSStriper::remove()
+ return 0;
+ }
+
+-int SimpleRADOSStriper::truncate(uint64_t size)
++int SimpleRADOSStriper::truncate(size_t size)
+ {
+ d(5) << size << dendl;
+
diff --git a/community/ceph/31-32bit_fix_tests.patch.noauto b/community/ceph/31-32bit_fix_tests.patch.noauto
index d8b5d065c2..939c550dff 100644
--- a/community/ceph/31-32bit_fix_tests.patch.noauto
+++ b/community/ceph/31-32bit_fix_tests.patch.noauto
@@ -1,6 +1,5 @@
-diff -uNr ceph-15.2.4/src/test/objectstore/test_bdev.cc ceph-15.2.4-arm32_fix_tests/src/test/objectstore/test_bdev.cc
---- ceph-15.2.4/src/test/objectstore/test_bdev.cc 2020-07-01 01:10:51.000000000 +0930
-+++ ceph-15.2.4-arm32_fix_tests/src/test/objectstore/test_bdev.cc 2020-11-17 15:40:57.203039097 +1030
+--- a/src/test/objectstore/test_bdev.cc
++++ b/src/test/objectstore/test_bdev.cc
@@ -54,8 +54,8 @@
BlockDevice::create(g_ceph_context, bdev.path, NULL, NULL,
[](void* handle, void* aio) {}, NULL));
@@ -20,7 +19,7 @@ diff -uNr ceph-15.2.4/src/test/objectstore/test_bdev.cc ceph-15.2.4-arm32_fix_te
TEST(BlueFS, very_large_write) {
- // we'll write a ~5G file, so allocate more than that for the whole fs
+ // we'll write a ~1G file, so allocate more than that for the whole fs
- uint64_t size = 1048576 * 1024 * 8ull;
+ uint64_t size = 1048576 * 1024 * 6ull;
TempBdev bdev{size};
BlueFS fs(g_ceph_context);
@@ -260,12 +260,12 @@
@@ -56,3 +55,12 @@ diff -uNr ceph-15.2.4/src/test/objectstore/test_bdev.cc ceph-15.2.4-arm32_fix_te
bl.clear();
fs.read(h, &readbuf, i * sizeof(buf), sizeof(buf), &bl, NULL);
int r = memcmp(buf, bl.c_str(), sizeof(buf));
+@@ -313,7 +313,7 @@
+ }
+
+ TEST(BlueFS, very_large_write2) {
+- // we'll write a ~5G file, so allocate more than that for the whole fs
++ // we'll write a ~1G file, so allocate more than that for the whole fs
+ uint64_t size_full = 1048576 * 1024 * 6ull;
+ uint64_t size = 1048576 * 1024 * 5ull;
+ TempBdev bdev{ size_full };
diff --git a/community/ceph/32-PurgeQueue.cc-cast.patch b/community/ceph/32-PurgeQueue.cc-cast.patch
new file mode 100644
index 0000000000..19a0719c4a
--- /dev/null
+++ b/community/ceph/32-PurgeQueue.cc-cast.patch
@@ -0,0 +1,85 @@
+Submitted as: https://github.com/ceph/ceph/pull/41235
+
+commit 953e7dc0f911f84a4bb377aee45b22e2ffad6867
+Author: Duncan Bellamy <dunk@denkimushi.com>
+Date: Sat May 8 11:52:35 2021 +0100
+
+ mds: PurgeQueue.cc add static cast for 32bit compilation
+
+ files_high_water is defined as uint64_t but when compiling on 32bit these max functions
+ fail as they are both not considered uint64_t by gcc 10 even though they are
+
+ files_high_water = std::max(files_high_water,
+ static_cast<uint64_t>(in_flight.size()));
+
+ Fixes: https://tracker.ceph.com/issues/50707
+
+ Signed-off-by: Duncan Bellamy <dunk@denkimushi.com>
+
+diff --git a/src/mds/PurgeQueue.cc b/src/mds/PurgeQueue.cc
+index 977be2c118..3104a3ccc4 100644
+--- a/src/mds/PurgeQueue.cc
++++ b/src/mds/PurgeQueue.cc
+@@ -7,9 +7,9 @@
+ *
+ * This is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+- * License version 2.1, as published by the Free Software
++ * License version 2.1, as published by the Free Software
+ * Foundation. See file COPYING.
+- *
++ *
+ */
+
+ #include "common/debug.h"
+@@ -594,8 +594,8 @@ void PurgeQueue::_execute_item(
+
+ in_flight[expire_to] = item;
+ logger->set(l_pq_executing, in_flight.size());
+- files_high_water = std::max(files_high_water,
+- static_cast<uint64_t>(in_flight.size()));
++ files_high_water = std::max<uint64_t>(files_high_water,
++ in_flight.size());
+ logger->set(l_pq_executing_high_water, files_high_water);
+ auto ops = _calculate_ops(item);
+ ops_in_flight += ops;
+@@ -662,8 +662,8 @@ void PurgeQueue::_execute_item(
+ logger->set(l_pq_executing_ops_high_water, ops_high_water);
+ in_flight.erase(expire_to);
+ logger->set(l_pq_executing, in_flight.size());
+- files_high_water = std::max(files_high_water,
+- static_cast<uint64_t>(in_flight.size()));
++ files_high_water = std::max<uint64_t>(files_high_water,
++ in_flight.size());
+ logger->set(l_pq_executing_high_water, files_high_water);
+ return;
+ }
+@@ -716,19 +716,19 @@ void PurgeQueue::_execute_item_complete(
+
+ in_flight.erase(iter);
+ logger->set(l_pq_executing, in_flight.size());
+- files_high_water = std::max(files_high_water,
+- static_cast<uint64_t>(in_flight.size()));
++ files_high_water = std::max<uint64_t>(files_high_water,
++ in_flight.size());
+ logger->set(l_pq_executing_high_water, files_high_water);
+ dout(10) << "in_flight.size() now " << in_flight.size() << dendl;
+
+- uint64_t write_pos = journaler.get_write_pos();
+- uint64_t read_pos = journaler.get_read_pos();
+- uint64_t expire_pos = journaler.get_expire_pos();
+- uint64_t item_num = (write_pos - (in_flight.size() ? expire_pos : read_pos))
++ uint64_t write_pos = journaler.get_write_pos();
++ uint64_t read_pos = journaler.get_read_pos();
++ uint64_t expire_pos = journaler.get_expire_pos();
++ uint64_t item_num = (write_pos - (in_flight.size() ? expire_pos : read_pos))
+ / purge_item_journal_size;
+- dout(10) << "left purge items in journal: " << item_num
+- << " (purge_item_journal_size/write_pos/read_pos/expire_pos) now at "
+- << "(" << purge_item_journal_size << "/" << write_pos << "/" << read_pos
++ dout(10) << "left purge items in journal: " << item_num
++ << " (purge_item_journal_size/write_pos/read_pos/expire_pos) now at "
++ << "(" << purge_item_journal_size << "/" << write_pos << "/" << read_pos
+ << "/" << expire_pos << ")" << dendl;
+
+ logger->set(l_pq_item_in_journal, item_num);
diff --git a/community/ceph/32-fix_ceph_thread_timeout.patch b/community/ceph/32-fix_ceph_thread_timeout.patch
deleted file mode 100644
index 6740332644..0000000000
--- a/community/ceph/32-fix_ceph_thread_timeout.patch
+++ /dev/null
@@ -1,74 +0,0 @@
---- a/src/pybind/ceph_argparse.py
-+++ b/src/pybind/ceph_argparse.py
-@@ -564,11 +564,11 @@
- raise ArgumentFormat("{0} not a hex integer".format(val))
- try:
- int(val)
-- except:
-+ except ValueError:
- raise ArgumentFormat('can\'t convert {0} to integer'.format(val))
- try:
- int(bits)
-- except:
-+ except ValueError:
- raise ArgumentFormat('can\'t convert {0} to integer'.format(bits))
- self.val = s
-
-@@ -1077,15 +1077,12 @@
- # Have an arg; validate it
- try:
- validate_one(myarg, desc)
-- valid = True
- except ArgumentError as e:
-- valid = False
--
- # argument mismatch
- if not desc.req:
- # if not required, just push back; it might match
- # the next arg
-- save_exception = [ myarg, e ]
-+ save_exception = [myarg, e]
- myargs.insert(0, myarg)
- break
- else:
-@@ -1171,9 +1168,9 @@
- # (relies on a cmdsig being key,val where val is a list of len 1)
-
- def grade(cmd):
-- # prefer optional arguments over required ones
-- sigs = cmd['sig']
-- return sum(map(lambda sig: sig.req, sigs))
-+ # prefer optional arguments over required ones
-+ sigs = cmd['sig']
-+ return sum(map(lambda sig: sig.req, sigs))
-
- bestcmds_sorted = sorted(bestcmds, key=grade)
- if verbose:
-@@ -1227,7 +1224,6 @@
- return valid_dict
-
-
--
- def find_cmd_target(childargs):
- """
- Using a minimal validation, figure out whether the command
-@@ -1312,14 +1308,15 @@
-
-
- def run_in_thread(func, *args, **kwargs):
-- interrupt = False
- timeout = kwargs.pop('timeout', 0)
- if timeout == 0 or timeout == None:
- # python threading module will just get blocked if timeout is `None`,
- # otherwise it will keep polling until timeout or thread stops.
-- # wait for INT32_MAX, as python 3.6.8 use int32_t to present the
-- # timeout in integer when converting it to nanoseconds
-- timeout = (1 << (32 - 1)) - 1
-+ # timeout in integer when converting it to nanoseconds, but since
-+ # python3 uses `int64_t` for the deadline before timeout expires,
-+ # we have to use a safe value which does not overflow after being
-+ # added to current time in microseconds.
-+ timeout = 24 * 60 * 60
- t = RadosThread(func, *args, **kwargs)
-
- # allow the main thread to exit (presumably, avoid a join() on this
diff --git a/community/ceph/32-upstream32bit.patch b/community/ceph/32-upstream32bit.patch
new file mode 100644
index 0000000000..917cd036bc
--- /dev/null
+++ b/community/ceph/32-upstream32bit.patch
@@ -0,0 +1,92 @@
+commit 72a5993da70955182a73755ddba35005a6d9fc11
+Author: Kefu Chai <kchai@redhat.com>
+Date: Tue Apr 27 18:24:24 2021 +0800
+
+ cls/rbd, librbd: use uint64_t for sparse_size
+
+ the size of `size_t` is varies from architecture to architecture. the
+ C++ standard only requires it to be able to represent the maximum possible
+ size of object of any type. on 32-bit architectures, it's very likely a
+ 32-bit unsigned integer. to ensure the interoperability between the
+ 64-bit systems and 32-bit systems, we should use a type with explicitly
+ defined size.
+
+ also, we don't define the dencoder for size_t. so on systems where
+ size_t is not backed by uint32_t or uint64_t, the tree does not compile.
+
+ in this change, use uint64_t for sparse_size. and leave
+ `C_SparsifyObject::m_sparse_size` intact. as the latter should be able
+ to be promoted to uint64_t when necessary.
+
+ this change is backward compatible on 64-bit systems.
+
+ Signed-off-by: Kefu Chai <kchai@redhat.com>
+
+diff --git a/src/cls/rbd/cls_rbd.cc b/src/cls/rbd/cls_rbd.cc
+index 33910b7df5..e3e05d85ed 100644
+--- a/src/cls/rbd/cls_rbd.cc
++++ b/src/cls/rbd/cls_rbd.cc
+@@ -7996,7 +7996,7 @@ int namespace_list(cls_method_context_t hctx, bufferlist *in, bufferlist *out)
+ */
+ int sparsify(cls_method_context_t hctx, bufferlist *in, bufferlist *out)
+ {
+- size_t sparse_size;
++ uint64_t sparse_size;
+ bool remove_empty;
+ try {
+ auto iter = in->cbegin();
+diff --git a/src/cls/rbd/cls_rbd_client.cc b/src/cls/rbd/cls_rbd_client.cc
+index cefa1fed79..fee3ac8923 100644
+--- a/src/cls/rbd/cls_rbd_client.cc
++++ b/src/cls/rbd/cls_rbd_client.cc
+@@ -2974,7 +2974,7 @@ int namespace_list(librados::IoCtx *ioctx,
+ return namespace_list_finish(&iter, entries);
+ }
+
+-void sparsify(librados::ObjectWriteOperation *op, size_t sparse_size,
++void sparsify(librados::ObjectWriteOperation *op, uint64_t sparse_size,
+ bool remove_empty)
+ {
+ bufferlist bl;
+@@ -2983,7 +2983,7 @@ void sparsify(librados::ObjectWriteOperation *op, size_t sparse_size,
+ op->exec("rbd", "sparsify", bl);
+ }
+
+-int sparsify(librados::IoCtx *ioctx, const std::string &oid, size_t sparse_size,
++int sparsify(librados::IoCtx *ioctx, const std::string &oid, uint64_t sparse_size,
+ bool remove_empty)
+ {
+ librados::ObjectWriteOperation op;
+diff --git a/src/cls/rbd/cls_rbd_client.h b/src/cls/rbd/cls_rbd_client.h
+index 12b34c4832..ef2b05fd84 100644
+--- a/src/cls/rbd/cls_rbd_client.h
++++ b/src/cls/rbd/cls_rbd_client.h
+@@ -652,9 +652,9 @@ int sparse_copyup(librados::IoCtx *ioctx, const std::string &oid,
+ const std::map<uint64_t, uint64_t> &extent_map,
+ ceph::buffer::list data);
+
+-void sparsify(librados::ObjectWriteOperation *op, size_t sparse_size,
++void sparsify(librados::ObjectWriteOperation *op, uint64_t sparse_size,
+ bool remove_empty);
+-int sparsify(librados::IoCtx *ioctx, const std::string &oid, size_t sparse_size,
++int sparsify(librados::IoCtx *ioctx, const std::string &oid, uint64_t sparse_size,
+ bool remove_empty);
+
+ } // namespace cls_client
+diff --git a/src/librbd/WatchNotifyTypes.h b/src/librbd/WatchNotifyTypes.h
+index ca0b40f28f..4fad31ffac 100644
+--- a/src/librbd/WatchNotifyTypes.h
++++ b/src/librbd/WatchNotifyTypes.h
+@@ -410,10 +410,10 @@ struct MigratePayload : public AsyncRequestPayloadBase {
+ };
+
+ struct SparsifyPayload : public AsyncRequestPayloadBase {
+- size_t sparse_size = 0;
++ uint64_t sparse_size = 0;
+
+ SparsifyPayload() {}
+- SparsifyPayload(const AsyncRequestId &id, size_t sparse_size)
++ SparsifyPayload(const AsyncRequestId &id, uint64_t sparse_size)
+ : AsyncRequestPayloadBase(id), sparse_size(sparse_size) {
+ }
+
diff --git a/community/ceph/32-upstream32bitcleanup.patch b/community/ceph/32-upstream32bitcleanup.patch
new file mode 100644
index 0000000000..1fe036ed83
--- /dev/null
+++ b/community/ceph/32-upstream32bitcleanup.patch
@@ -0,0 +1,143 @@
+submitted as https://github.com/ceph/ceph/pull/41239
+
+commit 558adef26a2149b0dd644a2c9a7e2db8d370b556
+Author: Kefu Chai <kchai@redhat.com>
+Date: Sat May 8 21:02:54 2021 +0800
+
+ librbd/deep_copy: cast uint64_t to size_t for constructing SparseBufferlistExtent
+
+ SparseBufferlistExtent's ctor accepts size_t, so, on a 32-bit platform,
+ the parameter would be narrowed before passing to the ctor, and GCC
+ complains at seeing this:
+
+ /builds/a16bitsysop/aports/community/ceph/src/ceph-16.2.3/src/librbd/deep_copy/ObjectCopyRequest.cc:789:60: warning: narrowing conversion of 'object_extent.striper::LightweightObjectExtent::length'
+ from 'uint64_t' {aka 'long long unsigned int'} to 'size_t' {aka 'unsigned int'} [-Wnarrowing]
+ 789 | {io::SPARSE_EXTENT_STATE_ZEROED, object_extent.length});
+ | ~~~~~~~~~~~~~~^~~~~~
+
+ this change make this cast explicit and silences the warning.
+
+ Signed-off-by: Kefu Chai <kchai@redhat.com>
+
+diff --git a/src/librbd/deep_copy/ObjectCopyRequest.cc b/src/librbd/deep_copy/ObjectCopyRequest.cc
+index e86ed5ea1c..efc6749536 100644
+--- a/src/librbd/deep_copy/ObjectCopyRequest.cc
++++ b/src/librbd/deep_copy/ObjectCopyRequest.cc
+@@ -614,7 +614,8 @@ void ObjectCopyRequest<I>::merge_write_ops() {
+
+ m_snapshot_sparse_bufferlist[src_snap_seq].insert(
+ object_extent.offset, object_extent.length,
+- {io::SPARSE_EXTENT_STATE_DATA, object_extent.length,\
++ {io::SPARSE_EXTENT_STATE_DATA,
++ static_cast<size_t>(object_extent.length),
+ std::move(sub_bl)});
+
+ buffer_offset += object_extent.length;
+diff --git a/src/librbd/io/CopyupRequest.cc b/src/librbd/io/CopyupRequest.cc
+index d70851409f..a3af713151 100644
+--- a/src/librbd/io/CopyupRequest.cc
++++ b/src/librbd/io/CopyupRequest.cc
+@@ -711,7 +711,9 @@ int CopyupRequest<I>::prepare_copyup_data() {
+
+ sparse_bufferlist.insert(
+ object_offset, object_length,
+- {SPARSE_EXTENT_STATE_DATA, object_length, std::move(sub_bl)});
++ {SPARSE_EXTENT_STATE_DATA,
++ static_cast<size_t>(object_length),
++ std::move(sub_bl)});
+ }
+ } else {
+ // copyup that will concurrently written to the HEAD revision with the
+commit 130fdf7bcfd2b4c5a5b34809952b69b70e9c11a4
+Author: Kefu Chai <kchai@redhat.com>
+Date: Sat May 8 20:59:07 2021 +0800
+
+ mgr/PyModule: use Py_ssize_t for the PyList index
+
+ also silences the warnings like:
+
+ mgr/PyModule.cc:574:30: warning: comparison of integer expressions of different signedness: 'unsigned int' and 'Py_ssize_t' {aka 'int'} [-Wsign-compare]
+ 574 | for (unsigned i = 0; i < PyList_Size(p); ++i) {
+ | ~~^~~~~~~~~~~~~~~~
+
+ Signed-off-by: Kefu Chai <kchai@redhat.com>
+
+diff --git a/src/mgr/PyModule.cc b/src/mgr/PyModule.cc
+index 28c76fe7ed..ff1ff85e7e 100644
+--- a/src/mgr/PyModule.cc
++++ b/src/mgr/PyModule.cc
+@@ -562,7 +562,7 @@ int PyModule::load_options()
+ }
+ p = PyDict_GetItemString(pOption, "enum_allowed");
+ if (p && PyObject_TypeCheck(p, &PyList_Type)) {
+- for (unsigned i = 0; i < PyList_Size(p); ++i) {
++ for (Py_ssize_t i = 0; i < PyList_Size(p); ++i) {
+ auto q = PyList_GetItem(p, i);
+ if (q) {
+ auto r = PyObject_Str(q);
+@@ -573,7 +573,7 @@ int PyModule::load_options()
+ }
+ p = PyDict_GetItemString(pOption, "see_also");
+ if (p && PyObject_TypeCheck(p, &PyList_Type)) {
+- for (unsigned i = 0; i < PyList_Size(p); ++i) {
++ for (Py_ssize_t i = 0; i < PyList_Size(p); ++i) {
+ auto q = PyList_GetItem(p, i);
+ if (q && PyObject_TypeCheck(q, &PyUnicode_Type)) {
+ option.see_also.insert(PyUnicode_AsUTF8(q));
+@@ -582,7 +582,7 @@ int PyModule::load_options()
+ }
+ p = PyDict_GetItemString(pOption, "tags");
+ if (p && PyObject_TypeCheck(p, &PyList_Type)) {
+- for (unsigned i = 0; i < PyList_Size(p); ++i) {
++ for (Py_ssize_t i = 0; i < PyList_Size(p); ++i) {
+ auto q = PyList_GetItem(p, i);
+ if (q && PyObject_TypeCheck(q, &PyUnicode_Type)) {
+ option.tags.insert(PyUnicode_AsUTF8(q));
+commit 3bf4b32c9bd15652b24bc4b8c8ea07fb6bb04357
+Author: Kefu Chai <kchai@redhat.com>
+Date: Sat May 8 20:51:19 2021 +0800
+
+ os/bluestore: print size_t using %xz
+
+ we cannot assume that size_t is an alias of "long"
+
+ Signed-off-by: Kefu Chai <kchai@redhat.com>
+
+diff --git a/src/os/bluestore/Allocator.cc b/src/os/bluestore/Allocator.cc
+index 75f3172ca5..3428545414 100644
+--- a/src/os/bluestore/Allocator.cc
++++ b/src/os/bluestore/Allocator.cc
+@@ -81,8 +81,8 @@ public:
+ f->open_object_section("free");
+ char off_hex[30];
+ char len_hex[30];
+- snprintf(off_hex, sizeof(off_hex) - 1, "0x%lx", off);
+- snprintf(len_hex, sizeof(len_hex) - 1, "0x%lx", len);
++ snprintf(off_hex, sizeof(off_hex) - 1, "0x%zx", off);
++ snprintf(len_hex, sizeof(len_hex) - 1, "0x%zx", len);
+ f->dump_string("offset", off_hex);
+ f->dump_string("length", len_hex);
+ f->close_section();
+commit 3af466ee84209896f8671046c837350e736f15de
+Author: Kefu Chai <kchai@redhat.com>
+Date: Sat May 8 20:50:08 2021 +0800
+
+ client: print int64_t using PRId64
+
+ we cannot assume that int64_t is an alias of "long"
+
+ Signed-off-by: Kefu Chai <kchai@redhat.com>
+
+diff --git a/src/client/Client.cc b/src/client/Client.cc
+index acdd8f0934..7352824f6c 100644
+--- a/src/client/Client.cc
++++ b/src/client/Client.cc
+@@ -12772,7 +12772,7 @@ size_t Client::_vxattrcb_cluster_fsid(Inode *in, char *val, size_t size)
+ size_t Client::_vxattrcb_client_id(Inode *in, char *val, size_t size)
+ {
+ auto name = messenger->get_myname();
+- return snprintf(val, size, "%s%ld", name.type_str(), name.num());
++ return snprintf(val, size, "%s%" PRId64, name.type_str(), name.num());
+ }
+
+ #define CEPH_XATTR_NAME(_type, _name) "ceph." #_type "." #_name
diff --git a/community/ceph/34-fix_cpu_detection.patch b/community/ceph/34-fix_cpu_detection.patch
deleted file mode 100644
index 0e42b23a06..0000000000
--- a/community/ceph/34-fix_cpu_detection.patch
+++ /dev/null
@@ -1,76 +0,0 @@
-diff -uNr ceph-15.2.4/cmake/modules/SIMDExt.cmake ceph-15.2.4-fix_cpu_detection/cmake/modules/SIMDExt.cmake
---- ceph-15.2.4/cmake/modules/SIMDExt.cmake 2020-07-01 01:10:51.000000000 +0930
-+++ ceph-15.2.4-fix_cpu_detection/cmake/modules/SIMDExt.cmake 2020-07-07 11:30:28.234565030 +0930
-@@ -48,32 +48,53 @@
- 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)
-+ execute_process(COMMAND bash -c "gcc -Q --help=target | grep '\\-msse\\s' | grep -c enabled" OUTPUT_VARIABLE RUN_RESULT OUTPUT_STRIP_TRAILING_WHITESPACE)
-+ if (${RUN_RESULT})
-+ set(HAVE_INTEL_SSE 1)
-+ endif()
- 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)
-+ execute_process(COMMAND bash -c "gcc -Q --help=target | grep '\\-msse2\\s' | grep -c enabled" OUTPUT_VARIABLE RUN_RESULT OUTPUT_STRIP_TRAILING_WHITESPACE)
-+ if (${RUN_RESULT})
-+ set(HAVE_INTEL_SSE2 1)
-+ endif()
- if(HAVE_INTEL_SSE2)
- set(SIMD_COMPILE_FLAGS "${SIMD_COMPILE_FLAGS} -msse2")
- endif()
-- CHECK_C_COMPILER_FLAG(-msse3 HAVE_INTEL_SSE3)
-+ execute_process(COMMAND bash -c "gcc -Q --help=target | grep '\\-msse3\\s' | grep -c enabled" OUTPUT_VARIABLE RUN_RESULT OUTPUT_STRIP_TRAILING_WHITESPACE)
-+ if (${RUN_RESULT})
-+ set(HAVE_INTEL_SSE3 1)
-+ endif()
- if(HAVE_INTEL_SSE3)
- set(SIMD_COMPILE_FLAGS "${SIMD_COMPILE_FLAGS} -msse3")
- endif()
-- CHECK_C_COMPILER_FLAG(-mssse3 HAVE_INTEL_SSSE3)
-+ execute_process(COMMAND bash -c "gcc -Q --help=target | grep '\\-mssse3\\s' | grep -c enabled" OUTPUT_VARIABLE RUN_RESULT OUTPUT_STRIP_TRAILING_WHITESPACE)
-+ if (${RUN_RESULT})
-+ set(HAVE_INTEL_SSSE3 1)
-+ endif()
- if(HAVE_INTEL_SSSE3)
- set(SIMD_COMPILE_FLAGS "${SIMD_COMPILE_FLAGS} -mssse3")
- endif()
-- CHECK_C_COMPILER_FLAG(-mpclmul HAVE_INTEL_PCLMUL)
-+ execute_process(COMMAND bash -c "gcc -Q --help=target | grep '\\-mpclmul\\s' | grep -c enabled" OUTPUT_VARIABLE RUN_RESULT OUTPUT_STRIP_TRAILING_WHITESPACE)
-+ if (${RUN_RESULT})
-+ set(HAVE_INTEL_PCLMUL 1)
-+ endif()
- if(HAVE_INTEL_PCLMUL)
- set(SIMD_COMPILE_FLAGS "${SIMD_COMPILE_FLAGS} -mpclmul")
- endif()
-- CHECK_C_COMPILER_FLAG(-msse4.1 HAVE_INTEL_SSE4_1)
-+ execute_process(COMMAND bash -c "gcc -Q --help=target | grep '\\-msse4\\.1\\s' | grep -c enabled" OUTPUT_VARIABLE RUN_RESULT OUTPUT_STRIP_TRAILING_WHITESPACE)
-+ if (${RUN_RESULT})
-+ set(HAVE_INTEL_SSE4_1 1)
-+ endif()
- 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)
-+ execute_process(COMMAND bash -c "gcc -Q --help=target | grep '\\-msse4\\.2\\s' | grep -c enabled" OUTPUT_VARIABLE RUN_RESULT OUTPUT_STRIP_TRAILING_WHITESPACE)
-+ if (${RUN_RESULT})
-+ set(HAVE_INTEL_SSE4_2 1)
-+ endif()
- if(HAVE_INTEL_SSE4_2)
- set(SIMD_COMPILE_FLAGS "${SIMD_COMPILE_FLAGS} -msse4.2")
- endif()
-diff -uNr ceph-15.2.4/src/test/test_arch.cc ceph-15.2.4-fix_cpu_detection/src/test/test_arch.cc
---- ceph-15.2.4/src/test/test_arch.cc 2020-07-01 01:10:51.000000000 +0930
-+++ ceph-15.2.4-fix_cpu_detection/src/test/test_arch.cc 2020-07-07 11:30:28.239565039 +0930
-@@ -69,7 +69,7 @@
- expected = strstr(flags, " sse4_1 ") ? 1 : 0;
- EXPECT_EQ(expected, ceph_arch_intel_sse41);
-
-- expected = (strstr(flags, " sse3 ") || strstr(flags, " ssse3 ")) ? 1 : 0;
-+ expected = (strstr(flags, " sse3 ") || strstr(flags, " ssse3 ") || strstr(flags, " pni ")) ? 1 : 0;
- EXPECT_EQ(expected, ceph_arch_intel_sse3);
-
- expected = strstr(flags, " ssse3 ") ? 1 : 0;
diff --git a/community/ceph/35-fix_ErasureCodeShec.patch b/community/ceph/35-fix_ErasureCodeShec.patch
index cf99132112..0ab2cc2ed0 100644
--- a/community/ceph/35-fix_ErasureCodeShec.patch
+++ b/community/ceph/35-fix_ErasureCodeShec.patch
@@ -1,3 +1,5 @@
+patch by Vladimir Bashkirtsev
+
diff -uNr ceph-15.2.4/src/erasure-code/shec/ErasureCodeShec.cc ceph-15.2.4-fix_ErasureCodeShec/src/erasure-code/shec/ErasureCodeShec.cc
--- ceph-15.2.4/src/erasure-code/shec/ErasureCodeShec.cc 2020-07-01 01:10:51.000000000 +0930
+++ ceph-15.2.4-fix_ErasureCodeShec/src/erasure-code/shec/ErasureCodeShec.cc 2020-11-14 00:46:20.029488684 +1030
diff --git a/community/ceph/36-fix_librbd_duplicate.patch b/community/ceph/36-fix_librbd_duplicate.patch
deleted file mode 100644
index a819a23901..0000000000
--- a/community/ceph/36-fix_librbd_duplicate.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -uNr ceph-15.2.4/src/librbd/image/OpenRequest.cc ceph-15.2.4-fix_librbd_duplicate/src/librbd/image/OpenRequest.cc
---- ceph-15.2.4/src/librbd/image/OpenRequest.cc 2020-06-30 15:40:51.000000000 +0000
-+++ ceph-15.2.4-fix_librbd_duplicate/src/librbd/image/OpenRequest.cc 2020-09-30 07:58:38.979496776 +0000
-@@ -9,7 +9,7 @@
- #include "librbd/Utils.h"
- #include "librbd/cache/ObjectCacherObjectDispatch.h"
- #include "librbd/cache/WriteAroundObjectDispatch.h"
--#include "librbd/cache/ParentCacheObjectDispatch.cc"
-+#include "librbd/cache/ParentCacheObjectDispatch.h"
- #include "librbd/image/CloseRequest.h"
- #include "librbd/image/RefreshRequest.h"
- #include "librbd/image/SetSnapRequest.h"
diff --git a/community/ceph/37-fix_tests.patch b/community/ceph/37-fix_tests.patch
index 042578553b..169f6ef189 100644
--- a/community/ceph/37-fix_tests.patch
+++ b/community/ceph/37-fix_tests.patch
@@ -1,18 +1,6 @@
-diff -uNr ceph-15.2.4/src/test/cli/ceph-conf/env-vs-args.t ceph-15.2.4-fix_tests/src/test/cli/ceph-conf/env-vs-args.t
---- ceph-15.2.4/src/test/cli/ceph-conf/env-vs-args.t 2020-07-01 01:10:51.000000000 +0930
-+++ ceph-15.2.4-fix_tests/src/test/cli/ceph-conf/env-vs-args.t 2020-11-08 17:37:15.783767433 +1030
-@@ -2,9 +2,9 @@
- $ env CEPH_CONF=from-env ceph-conf -s foo bar
- did not load config file, using default settings.
- .* \-1 Errors while parsing config file! (re)
-- .* \-1 parse_file: filesystem error: .* file.size: (No such file or directory )?\[from-env\] (re)
-+ .* \-1 parse_file: filesystem error: .* file.size:? (No such file or directory )?\[from-env\] (re)
- .* \-1 Errors while parsing config file! (re)
-- .* \-1 parse_file: filesystem error: .* file.size: (No such file or directory )?\[from-env\] (re)
-+ .* \-1 parse_file: filesystem error: .* file.size:? (No such file or directory )?\[from-env\] (re)
- [1]
-
- # command-line arguments should override environment
+patch by Vladimir Bashkirtsev
+increase timeouts for armv7 ci
+
diff -uNr ceph-15.2.4/src/test/CMakeLists.txt ceph-15.2.4-fix_tests/src/test/CMakeLists.txt
--- ceph-15.2.4/src/test/CMakeLists.txt 2020-07-01 01:10:51.000000000 +0930
+++ ceph-15.2.4-fix_tests/src/test/CMakeLists.txt 2020-11-08 17:37:15.788767448 +1030
@@ -96,15 +84,3 @@ diff -uNr ceph-15.2.4/src/test/osd/TestOSDScrub.cc ceph-15.2.4-fix_tests/src/tes
tm.tm_isdst = -1;
strptime("2015-01-16 12:05:13", "%Y-%m-%d %H:%M:%S", &tm);
utime_t now = utime_t(mktime(&tm), 0);
-diff -uNr ceph-15.2.4/src/test/smoke.sh ceph-15.2.4-fix_tests/src/test/smoke.sh
---- ceph-15.2.4/src/test/smoke.sh 2020-07-01 01:10:51.000000000 +0930
-+++ ceph-15.2.4-fix_tests/src/test/smoke.sh 2020-11-08 17:37:15.794767466 +1030
-@@ -53,7 +53,7 @@
- ceph osd out 0
- wait_for_clean
-
-- timeout 8 rados -p foo bench 4 write -b 4096 --no-cleanup || return 1
-+ timeout 80 rados -p foo bench 4 write -b 4096 --no-cleanup || return 1
- wait_for_clean
-
- ceph osd in 0
diff --git a/community/ceph/40-uint.patch b/community/ceph/40-uint.patch
deleted file mode 100644
index e2e504e878..0000000000
--- a/community/ceph/40-uint.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/src/dmclock/support/src/indirect_intrusive_heap.h
-+++ b/src/dmclock/support/src/indirect_intrusive_heap.h
-@@ -48,7 +48,7 @@
- typename T,
- IndIntruHeapData T::*heap_info,
- typename C,
-- uint K = 2>
-+ unsigned K = 2>
- class IndIntruHeap {
-
- // shorthand
diff --git a/community/ceph/41-test-uint.patch b/community/ceph/41-test-uint.patch
deleted file mode 100644
index eb66a91d55..0000000000
--- a/community/ceph/41-test-uint.patch
+++ /dev/null
@@ -1,49 +0,0 @@
---- a/src/test/lazy-omap-stats/lazy_omap_stats_test.h
-+++ b/src/test/lazy-omap-stats/lazy_omap_stats_test.h
-@@ -22,8 +22,8 @@
- #include "include/rados/librados.hpp"
-
- struct index_t {
-- uint byte_index = 0;
-- uint key_index = 0;
-+ unsigned byte_index = 0;
-+ unsigned key_index = 0;
- };
-
- class LazyOmapStatsTest
-@@ -33,13 +33,13 @@
- std::map<std::string, librados::bufferlist> payload;
-
- struct lazy_omap_test_t {
-- uint payload_size = 0;
-- uint replica_count = 3;
-- uint keys = 2000;
-- uint how_many = 50;
-+ unsigned payload_size = 0;
-+ unsigned replica_count = 3;
-+ unsigned keys = 2000;
-+ unsigned how_many = 50;
- std::string pool_name = "lazy_omap_test_pool";
-- uint total_bytes = 0;
-- uint total_keys = 0;
-+ unsigned total_bytes = 0;
-+ unsigned total_keys = 0;
- } conf;
-
- LazyOmapStatsTest(LazyOmapStatsTest&) = delete;
-@@ -49,13 +49,13 @@
- void write_omap(const std::string& object_name);
- const std::string get_name() const;
- void create_payload();
-- void write_many(const uint how_many);
-+ void write_many(const unsigned how_many);
- void scrub() const;
- const int find_matches(std::string& output, std::regex& reg) const;
- void check_one();
- const int find_index(std::string& haystack, std::regex& needle,
- std::string label) const;
-- const uint tally_column(const uint omap_bytes_index,
-+ const unsigned tally_column(const unsigned omap_bytes_index,
- const std::string& table, bool header) const;
- void check_column(const int index, const std::string& table,
- const std::string& type, bool header = true) const;
diff --git a/community/ceph/42-no-virtualenvs.patch b/community/ceph/42-no-virtualenvs.patch
index 66175596dd..81efe72ea5 100644
--- a/community/ceph/42-no-virtualenvs.patch
+++ b/community/ceph/42-no-virtualenvs.patch
@@ -1,3 +1,6 @@
+based on gentoo patch
+use system node instead of nodeenv installing one as only availiable for x86 with musl
+
--- a/cmake/modules/AddCephTest.cmake
+++ b/cmake/modules/AddCephTest.cmake
@@ -68,14 +68,6 @@
@@ -52,16 +55,17 @@
string(REPLACE " " ";" command "${command}")
add_custom_command(
OUTPUT "${NC_OUTPUT}"
-@@ -29,10 +26,8 @@
- set(nodeenv NODEENV)
-
+@@ -51,11 +48,8 @@
+ set(node_mirror_opt "--mirror=$ENV{NODE_MIRROR}")
+ endif()
add_custom_command(
- OUTPUT "${mgr-dashboard-nodeenv-dir}/bin/npm"
- COMMAND ${CMAKE_SOURCE_DIR}/src/tools/setup-virtualenv.sh --python=${MGR_PYTHON_EXECUTABLE} ${mgr-dashboard-nodeenv-dir}
- COMMAND ${mgr-dashboard-nodeenv-dir}/bin/pip install nodeenv
-- COMMAND ${mgr-dashboard-nodeenv-dir}/bin/nodeenv -p --node=10.18.1
+- COMMAND ${mgr-dashboard-nodeenv-dir}/bin/nodeenv --verbose ${node_mirror_opt} -p --node=12.18.2
+- COMMAND mkdir ${mgr-dashboard-nodeenv-dir}/.npm
+ OUTPUT "/usr/bin/npm"
+ COMMAND /usr/bin/nodeenv -p --node=system
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMENT "dashboard nodeenv is being installed"
- )
+ )
diff --git a/community/ceph/44-LogClock.h.patch b/community/ceph/44-LogClock.h.patch
new file mode 100644
index 0000000000..b50d6f5b21
--- /dev/null
+++ b/community/ceph/44-LogClock.h.patch
@@ -0,0 +1,16 @@
+reported as issue
+https://tracker.ceph.com/issues/50133
+
+--- aa/src/log/LogClock.h
++++ bb/src/log/LogClock.h
+@@ -12,10 +12,6 @@
+ #include "include/ceph_assert.h"
+ #include "common/ceph_time.h"
+
+-#ifndef suseconds_t
+-typedef long suseconds_t;
+-#endif
+-
+ namespace ceph {
+ namespace logging {
+ namespace _logclock {
diff --git a/community/ceph/44-cmake-buildtype.patch b/community/ceph/44-cmake-buildtype.patch
new file mode 100644
index 0000000000..3580cdf5f6
--- /dev/null
+++ b/community/ceph/44-cmake-buildtype.patch
@@ -0,0 +1,36 @@
+commit a7e3ece459111d157a20d05de3a92cf4dab6bde6
+Author: Kefu Chai <kchai@redhat.com>
+Date: Thu Jul 1 15:24:50 2021 +0800
+
+ cmake: set CMAKE_BUILD_TYPE only if .git exists
+
+ distros intend to fine tune the CFLAGS and CXXFLAGS by themselves, see
+
+ - https://git.alpinelinux.org/abuild/tree/abuild.conf
+ - https://wiki.archlinux.org/title/CMake_package_guidelines#CMake_undesired_behaviors
+ - https://github.com/Debian/debhelper/blob/5d1bb29841043d8e47ebbdd043e6cd086cad508e/lib/Debian/Debhelper/Buildsystem/cmake.pm#L16
+
+ so instead of setting a CMAKE_BUILD_TYPE when building from a
+ dist tarball, let's just leave it empty.
+
+ Signed-off-by: Kefu Chai <kchai@redhat.com>
+
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index 760a2ceb0c..6f35e87f90 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -156,12 +156,8 @@ elseif(CMAKE_CXX_COMPILER_ID STREQUAL Clang)
+ endif()
+ endif(CMAKE_CXX_COMPILER_ID STREQUAL GNU)
+
+-if(NOT CMAKE_BUILD_TYPE)
+- if(EXISTS "${CMAKE_SOURCE_DIR}/.git")
+- set(default_build_type "Debug")
+- else()
+- set(default_build_type "RelWithDebInfo")
+- endif()
++if(DEFINED CMAKE_BUILD_TYPE OR EXISTS "${CMAKE_SOURCE_DIR}/.git")
++ set(default_build_type "Debug")
+ set(CMAKE_BUILD_TYPE "${default_build_type}" CACHE
+ STRING "Default BUILD_TYPE is Debug, other options are: RelWithDebInfo, Release, and MinSizeRel." FORCE)
+ endif()
diff --git a/community/ceph/44-missing-include.patch b/community/ceph/44-missing-include.patch
index eaa6f949af..f944255079 100644
--- a/community/ceph/44-missing-include.patch
+++ b/community/ceph/44-missing-include.patch
@@ -1,14 +1,16 @@
-Taken from Arch Linux
-upstream MR https://github.com/ceph/ceph/commit/f16ac13c13eceed7adb5a4a04a3372b921e63031
+submitted as:
+https://github.com/ceph/ceph/pull/41470
---- a/src/tools/rbd/action/Bench.cc
-+++ b/src/tools/rbd/action/Bench.cc
-@@ -9,6 +9,8 @@
- #include "common/ceph_mutex.h"
- #include "include/types.h"
- #include "global/signal_handler.h"
-+#include <atomic>
-+#include <chrono>
- #include <iostream>
- #include <boost/accumulators/accumulators.hpp>
- #include <boost/accumulators/statistics/stats.hpp>
+diff --git a/src/rgw/rgw_string.h b/src/rgw/rgw_string.h
+index 257daa9c1..90e64f98a 100644
+--- a/src/rgw/rgw_string.h
++++ b/src/rgw/rgw_string.h
+@@ -8,6 +8,8 @@
+ #include <stdlib.h>
+ #include <limits.h>
+ #include <string_view>
++#include <string>
++#include <stdexcept>
+
+ #include <boost/container/small_vector.hpp>
+
diff --git a/community/ceph/44-missing-include2.patch b/community/ceph/44-missing-include2.patch
new file mode 100644
index 0000000000..6974cd86ff
--- /dev/null
+++ b/community/ceph/44-missing-include2.patch
@@ -0,0 +1,117 @@
+commit ff79cae5a1243111c8a039426081638d40a258fa
+Author: Kefu Chai <kchai@redhat.com>
+Date: Mon Apr 12 17:28:56 2021 +0800
+
+ common/Formatter: include used header
+
+ otherwise it fails to build with gcc-toolset-10, like:
+
+ ../src/common/Formatter.cc: In member function ‘virtual void ceph::XMLFormatter::close_section()’:
+ ../src/common/Formatter.cc:449:8: error: ‘transform’ is not a member of ‘std’
+ 449 | std::transform(section.begin(), section.end(), section.begin(),
+ | ^~~~~~~~~
+
+ Signed-off-by: Kefu Chai <kchai@redhat.com>
+
+diff --git a/src/common/Formatter.cc b/src/common/Formatter.cc
+index b599e48b34..362deffb5a 100644
+--- a/src/common/Formatter.cc
++++ b/src/common/Formatter.cc
+@@ -19,6 +19,7 @@
+ #include "include/buffer.h"
+
+ #include <fmt/format.h>
++#include <algorithm>
+ #include <set>
+ #include <limits>
+
+From 7c2f58ea5ec70e5606ab362e6f4cfda087cec65a Mon Sep 17 00:00:00 2001
+From: Kefu Chai <kchai@redhat.com>
+Date: Mon, 12 Apr 2021 17:32:59 +0800
+Subject: [PATCH] mon,osd: always init local variable
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+this change silences the warning like:
+
+../src/mon/Monitor.cc: In member function ‘void Monitor::handle_command(MonOpRequestRef)’:
+../src/mon/Monitor.cc:3703:55: warning: ‘osd’ may be used uninitialized in this function [-Wmaybe-uninitialized]
+ 3703 | uint64_t seq = mgrstatmon()->get_last_osd_stat_seq(osd);
+ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~
+
+Signed-off-by: Kefu Chai <kchai@redhat.com>
+---
+ src/mon/Monitor.cc | 2 +-
+ src/osd/osd_types.h | 4 ++--
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/src/mon/Monitor.cc b/src/mon/Monitor.cc
+index 6126db9caa609..ffac8be278c16 100644
+--- a/src/mon/Monitor.cc
++++ b/src/mon/Monitor.cc
+@@ -3698,7 +3698,7 @@ void Monitor::handle_command(MonOpRequestRef op)
+ rs = ss2.str();
+ r = 0;
+ } else if (prefix == "osd last-stat-seq") {
+- int64_t osd;
++ int64_t osd = 0;
+ cmd_getval(cmdmap, "id", osd);
+ uint64_t seq = mgrstatmon()->get_last_osd_stat_seq(osd);
+ if (f) {
+diff --git a/src/osd/osd_types.h b/src/osd/osd_types.h
+index c0fe8f781c21e..fe2fe7defa9a8 100644
+--- a/src/osd/osd_types.h
++++ b/src/osd/osd_types.h
+@@ -1631,12 +1631,12 @@ struct pg_pool_t {
+ }
+
+ int64_t get_dedup_tier() const {
+- int64_t tier_id;
++ int64_t tier_id = 0;
+ opts.get(pool_opts_t::DEDUP_TIER, &tier_id);
+ return tier_id;
+ }
+ int64_t get_dedup_cdc_chunk_size() const {
+- int64_t chunk_size;
++ int64_t chunk_size = 0;
+ opts.get(pool_opts_t::DEDUP_CDC_CHUNK_SIZE, &chunk_size);
+ return chunk_size;
+ }
+From 03770f75562812c683ff1503d2032dcd66d83289 Mon Sep 17 00:00:00 2001
+From: Kefu Chai <kchai@redhat.com>
+Date: Mon, 12 Apr 2021 17:43:13 +0800
+Subject: [PATCH] include/denc: include used header
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+to address the FTBFS like:
+
+/home/kchai/ceph/src/include/denc.h: In member function ‘void DencDumper<T>::dump() const’:
+/home/kchai/ceph/src/include/denc.h:121:60: error: ‘O_BINARY’ was not declared in this scope
+ int fd = ::open(fn, O_WRONLY|O_TRUNC|O_CREAT|O_CLOEXEC|O_BINARY, 0644);
+ ^~~~~~~~
+/home/kchai/ceph/src/include/denc.h:121:60: note: the macro ‘O_BINARY’ had not yet been defined
+In file included from /home/kchai/ceph/src/include/statlite.h:14,
+ from /home/kchai/ceph/src/include/types.h:41,
+ from /home/kchai/ceph/src/auth/Crypto.h:19,
+ from /home/kchai/ceph/src/auth/Crypto.cc:21:
+
+Signed-off-by: Kefu Chai <kchai@redhat.com>
+---
+ src/include/denc.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/include/denc.h b/src/include/denc.h
+index 266121bd20cda..10fa8d0c87124 100644
+--- a/src/include/denc.h
++++ b/src/include/denc.h
+@@ -39,6 +39,7 @@
+ #include <boost/intrusive/set.hpp>
+ #include <boost/optional.hpp>
+
++#include "include/compat.h"
+ #include "include/intarith.h"
+ #include "include/int_types.h"
+ #include "include/scope_guard.h"
diff --git a/community/ceph/44-node_modules.patch b/community/ceph/44-node_modules.patch
new file mode 100644
index 0000000000..1e74f9ce0a
--- /dev/null
+++ b/community/ceph/44-node_modules.patch
@@ -0,0 +1,19 @@
+submitted as :
+https://github.com/ceph/ceph/pull/41353
+
+--- a/src/pybind/mgr/CMakeLists.txt
++++ b/src/pybind/mgr/CMakeLists.txt
+@@ -22,4 +22,12 @@
+ REGEX "rook/rook-client-python.*" EXCLUDE
+ REGEX "osd_perf_query/.*" EXCLUDE
+ REGEX "tox.ini" EXCLUDE
+- REGEX "requirements.txt" EXCLUDE)
++ REGEX "requirements.*\.txt" EXCLUDE
++ REGEX "constraints.*\.txt" EXCLUDE
++ REGEX "node_modules" EXCLUDE
++ REGEX "cypress.*" EXCLUDE
++ REGEX "\.coveragerc" EXCLUDE
++ REGEX "\.editorconfig" EXCLUDE
++ REGEX "\..*lintrc" EXCLUDE
++ REGEX "\.browserslistrc" EXCLUDE
++ REGEX "\.prettier*" EXCLUDE)
diff --git a/community/ceph/44-signal_handler.patch b/community/ceph/44-signal_handler.patch
deleted file mode 100644
index 723b31503e..0000000000
--- a/community/ceph/44-signal_handler.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-submitted upstream as: https://github.com/ceph/ceph/pull/39689
-
---- a/src/global/signal_handler.h
-+++ b/src/global/signal_handler.h
-@@ -20,9 +20,9 @@
-
- typedef void (*signal_handler_t)(int);
-
--#ifdef HAVE_SIGDESCR_NP
-+#if defined(HAVE_SIGDESCR_NP)
- # define sig_str(signum) sigdescr_np(signum)
--#elif HAVE_REENTRANT_STRSIGNAL
-+#elif defined(HAVE_REENTRANT_STRSIGNAL)
- # define sig_str(signum) strsignal(signum)
- #else
- # define sig_str(signum) sys_siglist[signum]
diff --git a/community/ceph/44-staticcast.patch b/community/ceph/44-staticcast.patch
new file mode 100644
index 0000000000..ebe8bbff3c
--- /dev/null
+++ b/community/ceph/44-staticcast.patch
@@ -0,0 +1,13 @@
+submitted as https://github.com/ceph/ceph/pull/40582
+
+--- a/src/common/buffer.cc
++++ b/src/common/buffer.cc
+@@ -2268,7 +2268,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(static_cast<size_t>(min_alloc), static_cast<size_t>((len + CEPH_PAGE_SIZE - 1) & CEPH_PAGE_MASK));
+ auto new_back = \
+ ptr_node::create(buffer::create_page_aligned(alloc));
+ new_back->set_length(0); // unused, so far.
diff --git a/community/ceph/APKBUILD b/community/ceph/APKBUILD
index cf0c254d24..d51b0bd650 100644
--- a/community/ceph/APKBUILD
+++ b/community/ceph/APKBUILD
@@ -3,17 +3,18 @@
# Contributor: Duncan Bellamy <dunk@denkimushi.com>
# Maintainer: Duncan Bellamy <dunk@denkimushi.com>
pkgname=ceph
-pkgver=15.2.9
-pkgrel=0
+pkgver=16.2.5
+pkgrel=1
pkgdesc="Ceph is a distributed object store and file system"
pkgusers="ceph"
pkggroups="ceph"
url="https://ceph.com/"
-# s390x has DWARF linker errors
-arch="all !s390x !mips !mips64"
+# riscv64 missing nodejs
+arch="all !mips !mips64 !riscv64"
# https://github.com/ceph/ceph/blob/master/COPYING
license="LGPL-2.1-only AND LGPL-2.0-or-later AND GPL-2.0-only AND GPL-3.0-only AND CC-BY-SA-1.0 AND BSL-1.0 AND GPL-2.0-or-later WITH Autoconf-exception-2.0 AND BSD-3-Clause AND MIT AND custom"
depends="ceph-osd ceph-mds ceph-mon"
+_lua=5.3
_base_deps="
cryptsetup
e2fsprogs
@@ -45,10 +46,12 @@ makedepends="
bzip2-dev
cmake
coreutils
+ cryptsetup-dev
cunit-dev
curl-dev
cython
diffutils
+ doxygen
eudev-dev
expat-dev
fcgi-dev
@@ -57,6 +60,7 @@ makedepends="
fuse
fuse-dev
git
+ graphviz-dev
grep
gperf
jq
@@ -72,7 +76,7 @@ makedepends="
libtool
libxml2-dev
linux-headers
- lua5.3-dev
+ lua$_lua-dev
lvm2-dev
lz4-dev
nodejs
@@ -88,6 +92,7 @@ makedepends="
readline-dev
rpcgen
snappy-dev
+ sqlite-dev
userspace-rcu-dev
xfsprogs-dev
xmlstarlet
@@ -105,18 +110,22 @@ source="https://download.ceph.com/tarballs/ceph_$pkgver.orig.tar.gz
10-musl-fixes.patch
20-pci.patch
30-32bit_fix.patch.noauto
+ 30-cypress.patch.noauto
+ 30-ubuntu-32bit-fixes.patch.noauto
31-32bit_fix_tests.patch.noauto
- 32-fix_ceph_thread_timeout.patch
- 34-fix_cpu_detection.patch
+ 32-PurgeQueue.cc-cast.patch
+ 32-upstream32bit.patch
+ 32-upstream32bitcleanup.patch
35-fix_ErasureCodeShec.patch
- 36-fix_librbd_duplicate.patch
37-fix_tests.patch
- 40-uint.patch
- 41-test-uint.patch
42-no-virtualenvs.patch
43-aarch64-erasure.patch
+ 44-cmake-buildtype.patch
+ 44-LogClock.h.patch
+ 44-staticcast.patch
+ 44-node_modules.patch
44-missing-include.patch
- 44-signal_handler.patch
+ 44-missing-include2.patch
"
subpackages="
@@ -125,19 +134,20 @@ subpackages="
$pkgname-common
$pkgname-mds
$pkgname-mgr
- $pkgname-mon
+ $pkgname-mon::noarch
$pkgname-mon-daemon:mon_daemon
$pkgname-mon-tools:mon_tools
$pkgname-fuse:ceph_fuse
$pkgname-openrc
- $pkgname-osd
+ $pkgname-osd::noarch
$pkgname-osd-daemon:osd_daemon
$pkgname-osd-tools:osd_tools
$pkgname-volume:ceph_volume:noarch
$pkgname-radosgw
$pkgname-bash-completion:bash_completion:noarch
$pkgname-dev
- $pkgname-user
+ $pkgname-user::noarch
+ $pkgname-utils
rbd-fuse:rbd_fuse
rbd-mirror:rbd_mirror
rbd-nbd:rbd_nbd
@@ -151,6 +161,14 @@ subpackages="
"
# secfixes:
+# 16.2.4-r0:
+# - CVE-2021-3509
+# - CVE-2021-3531
+# - CVE-2021-3524
+# 16.2.3-r0:
+# - CVE-2021-20288
+# 15.2.8-r0:
+# - CVE-2020-27781
# 15.2.6-r0:
# - CVE-2020-25660
# - CVE-2020-10736
@@ -167,20 +185,6 @@ subpackages="
_ceph_uid=167
_ceph_gid=167
-_prefix=/usr
-_bindir=$_prefix/bin
-_datadir=$_prefix/share
-_docdir=$_datadir/doc
-_libdir=$_prefix/lib
-_libexecdir=$_prefix/libexec
-_localstatedir=/var
-_mandir=$_datadir/man
-_sbindir=/usr/sbin
-_syssbindir=/sbin
-_sysconfdir=/etc
-
-_udevrulesdir=/etc/udev/rules.d
-
_py3_sitelib() {
python3 -c "import site; print(site.getsitepackages()[0])"
}
@@ -191,8 +195,13 @@ prepare() {
case "$CARCH" in
x86|armv7|armhf)
patch -p1 -i "$srcdir"/30-32bit_fix.patch.noauto
+ patch -p1 -i "$srcdir"/30-cypress.patch.noauto
+ patch -p1 -i "$srcdir"/30-ubuntu-32bit-fixes.patch.noauto
patch -p1 -i "$srcdir"/31-32bit_fix_tests.patch.noauto ;;
esac
+
+ #delete bundled boost as >300mb and using system boost
+ rm -rf src/boost
}
build() {
@@ -201,30 +210,23 @@ build() {
# builders keep failing when -jN == nproc
export MAKEFLAGS="$MAKEFLAGS -j$((JOBS<16 ? JOBS : 16))"
- # workaround for boost 1.74 -- similar fix exists upstream but I could
- # not get it to work: https://github.com/ceph/ceph/commit/3d708219092d
- export CPPFLAGS="$CPPFLAGS -DBOOST_ASIO_USE_TS_EXECUTOR_AS_DEFAULT"
- export CFLAGS="$CFLAGS -DBOOST_ASIO_USE_TS_EXECUTOR_AS_DEFAULT"
- export CXXFLAGS="$CXXFLAGS -DBOOST_ASIO_USE_TS_EXECUTOR_AS_DEFAULT"
+ # use alternate registry as original can timeout for arm32bit
+ export NPM_REGISTRY=https://registry.npmjs.org
cmake -B build \
+ -DCMAKE_BUILD_TYPE=None \
+ -DLUA_LIBRARIES=/usr/lib/lua"$_lua"/liblua.so \
-DALLOCATOR=libc \
- -DCMAKE_INSTALL_PREFIX=$_prefix \
- -DCMAKE_INSTALL_LIBDIR=$_libdir \
- -DCMAKE_INSTALL_LIBEXECDIR=$_libexecdir \
- -DCMAKE_INSTALL_LOCALSTATEDIR=$_localstatedir \
- -DCMAKE_INSTALL_SYSCONFDIR=$_sysconfdir \
- -DCMAKE_INSTALL_DOCDIR=$_docdir/ceph \
- -DCMAKE_INSTALL_MANDIR=$_mandir \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=/usr/lib \
+ -DCMAKE_INSTALL_LOCALSTATEDIR=/var \
+ -DCMAKE_INSTALL_SYSCONFDIR=/etc \
-DWITH_REENTRANT_STRSIGNAL=ON \
-DWITH_THREAD_SAFE_RES_QUERY=ON \
-DWITH_MANPAGE=ON \
-DWITH_SYSTEM_BOOST=ON \
-DWITH_SYSTEM_NPM=ON \
- -DPYTHON_EXECUTABLE:FILEPATH=/usr/bin/python3 \
- -DWITH_PYTHON2=OFF \
-DWITH_PYTHON3=3 \
- -DMGR_PYTHON_VERSION=3 \
-DWITH_LTTNG=OFF \
-DWITH_RDMA=OFF \
-DWITH_SYSTEMD=OFF \
@@ -237,30 +239,37 @@ build() {
}
package() {
- make -C build DESTDIR="$pkgdir" install
+ # free up some space before install
+ rm -rf build/src/pybind/mgr/dashboard/cypress
+ rm -rf src/pybind/mgr/dashboard/frontend/node_modules
- # Remove the upstream init file and put in openrc ones
- rm -f "$pkgdir"$_sysconfdir/init.d/ceph
- install -D -m 0744 "$startdir"/"$pkgname".initd "$pkgdir"$_sysconfdir/init.d/ceph
- install -D -m 0744 "$startdir"/"$pkgname".confd "$pkgdir"$_sysconfdir/conf.d/ceph
+ make -C build DESTDIR="$pkgdir" install
- # Move mount.* binaries to /sbin
- mkdir -p "$pkgdir"$_syssbindir
- mv "$pkgdir"$_sbindir/mount.* "$pkgdir"$_syssbindir
+ # remove the upstream init file and put in openrc ones
+ rm -f "$pkgdir"/etc/init.d/ceph
+ install -D -m 755 "$srcdir"/"$pkgname".initd "$pkgdir"/etc/init.d/ceph
+ install -D -m 644 "$srcdir"/"$pkgname".confd "$pkgdir"/etc/conf.d/ceph
- # We need to clean this out before packaging as it's freaking huge
- rm -rf "$pkgdir"$_datadir/ceph/mgr/dashboard/frontend/node_modules
+ # move mount.* binaries to /sbin
+ mkdir -p "$pkgdir"/sbin
+ mv "$pkgdir"/usr/sbin/mount.* "$pkgdir"/sbin
- install -m 0644 -D src/etc-rbdmap "$pkgdir"$_sysconfdir/ceph/rbdmap
- install -m 0644 -D src/logrotate.conf "$pkgdir"$_sysconfdir/logrotate.d/ceph
- install -m 0644 -D etc/sysctl/90-ceph-osd.conf "$pkgdir"/$_sysconfdir/sysctl.d/90-ceph-osd.conf
- chmod 0644 "$pkgdir"$_docdir/ceph/sample.ceph.conf
+ install -m 644 -D src/etc-rbdmap "$pkgdir"/etc/ceph/rbdmap
+ install -m 644 -D src/logrotate.conf "$pkgdir"/etc/logrotate.d/ceph
+ install -m 644 -D etc/sysctl/90-ceph-osd.conf "$pkgdir"/etc/sysctl.d/90-ceph-osd.conf
# udev rules
- install -m 0644 -D udev/50-rbd.rules "$pkgdir"$_udevrulesdir/50-rbd.rules
-
+ install -m 644 -D udev/50-rbd.rules "$pkgdir"/etc/udev/rules.d/50-rbd.rules
# sudoers.d
- install -m 0600 -D sudoers.d/ceph-osd-smartctl "$pkgdir"/$_sysconfdir/sudoers.d/ceph-osd-smartctl
+ install -m 600 -D sudoers.d/ceph-osd-smartctl "$pkgdir"/etc/sudoers.d/ceph-osd-smartctl
+
+ # delete systemd related stuff
+ rm "$pkgdir"/usr/sbin/ceph-volume-systemd
+
+ # move docs to docs
+ mkdir -p "$pkgdir"/usr/share/doc/ceph/dashboard
+ mv "$pkgdir"/usr/share/ceph/mgr/dashboard/*.rst "$pkgdir"/usr/share/doc/ceph/dashboard/
+ mv "$pkgdir"/usr/share/ceph/mgr/cephadm/HACKING.rst "$pkgdir"/usr/share/doc/ceph/cephadm-HACKING.rst
}
check() {
@@ -287,28 +296,26 @@ base() {
librbd=$pkgver-r$pkgrel
librados=$pkgver-r$pkgrel
libcephfs=$pkgver-r$pkgrel
- "
-
- _pkg $_bindir \
- ceph-crash \
- crushtool \
- monmaptool \
- osdmaptool \
- ceph-kvstore-tool \
- ceph-run
- _pkg $_sbindir ceph-create-keys
- _pkg $_libexecdir/ceph ceph_common.sh
- _pkg $_libdir/rados-classes '*.so*'
- _pkg $_libdir/ceph/erasure-code 'libec_*.so*'
- _pkg $_libdir/ceph/compressor 'libceph_*.so*'
- _pkg $_libdir/ceph/crypto 'libceph_*.so*'
- _pkg $_sysconfdir/logrotate.d ceph
+ "
+
+ amove usr/bin/ceph-crash \
+ usr/bin/crushtool \
+ usr/bin/*maptool \
+ usr/bin/ceph-kvstore-tool \
+ usr/bin/ceph-run \
+ usr/sbin/ceph-create-keys \
+ usr/libexec/ceph/ceph_common.sh \
+ usr/lib/rados-classes/*.so* \
+ usr/lib/ceph/erasure-code/libec_*.so* \
+ usr/lib/ceph/compressor/libceph_*.so* \
+ usr/lib/ceph/crypto/libceph_*.so* \
+ etc/logrotate.d/ceph
for dir in crash crash/posted tmp bootstrap-osd bootstrap-mds \
bootstrap-rgw bootstrap-mgr bootstrap-rbd \
bootstrap-rbd-mirror; do
install -m 750 -o $_ceph_uid -g $_ceph_gid -d \
- "$subpkgdir"$_localstatedir/lib/ceph/$dir
+ "$subpkgdir"/var/lib/ceph/$dir
done
}
@@ -316,43 +323,33 @@ common() {
pkgdesc="Common utilities to mount and interact with a ceph storage cluster."
depends="py3-rados py3-rbd py3-cephfs py3-prettytable"
- _pkg $_bindir ceph \
- ceph-authtool \
- ceph-conf \
- ceph-dencoder \
- ceph-rbdnamer \
- ceph-syn \
- cephfs-data-scan \
- cephfs-journal-tool \
- cephfs-table-tool \
- rados \
- rbd \
- rbd-replay \
- rbd-replay-many \
- rbdmap \
- ceph-post-file
- _pkg $_syssbindir mount.ceph
- _pkg $_datadir/ceph known_hosts_drop.ceph.com \
- id_rsa_drop.ceph.com \
- id_rsa_drop.ceph.com.pub
- _pkg $_sysconfdir/ceph rbdmap
-
- _pkg "$(_py3_sitelib)" ceph_argparse.py* ceph_daemon.py*
-
- _pkg $_udevrulesdir 50-rbd.rules
+ amove usr/bin/ceph \
+ usr/bin/ceph-authtool \
+ usr/bin/ceph-conf \
+ usr/bin/ceph-rbdnamer \
+ usr/bin/rados \
+ usr/bin/rbd \
+ usr/bin/rbdmap \
+ sbin/mount.ceph \
+ usr/share/ceph/*.ceph.com* \
+ etc/ceph/rbdmap
+
+ amove "$(_py3_sitelib)"/ceph_argparse.py* "$(_py3_sitelib)"/ceph_daemon.py*
+
+ amove etc/udev/rules.d/50-rbd.rules
install -m 3770 -o $_ceph_uid -g $_ceph_gid -d \
- "$subpkgdir"$_localstatedir/log/ceph
+ "$subpkgdir"/var/log/ceph
install -m 750 -o $_ceph_uid -g $_ceph_gid -d \
- "$subpkgdir"$_localstatedir/lib/ceph
+ "$subpkgdir"/var/lib/ceph
}
mds() {
pkgdesc="Metadata server daemon for the Ceph distributed file system."
depends="ceph-base"
- _pkg $_bindir ceph-mds
+ amove usr/bin/ceph-mds
install -m 750 -o $_ceph_uid -g $_ceph_gid -d \
- "$subpkgdir"$_localstatedir/lib/ceph/mds
+ "$subpkgdir"/var/lib/ceph/mds
}
mon() {
@@ -368,54 +365,54 @@ mon_daemon() {
pkgdesc="Cluster monitor daemon for the Ceph distributed file system."
depends="$pkgname-user=$pkgver-r$pkgrel"
- _pkg $_bindir ceph-mon
+ amove usr/bin/ceph-mon
install -m 750 -o $_ceph_uid -g $_ceph_gid -d \
- "$subpkgdir"$_localstatedir/lib/ceph/mon
+ "$subpkgdir"/var/lib/ceph/mon
}
mon_tools() {
pkgdesc="Cluster monitor tools for the Ceph distributed file system."
depends=
- _pkg $_bindir ceph-monstore-tool
+ amove usr/bin/ceph-monstore-tool
install -m 750 -o $_ceph_uid -g $_ceph_gid -d \
- "$subpkgdir"$_localstatedir/lib/ceph/mon
+ "$subpkgdir"/var/lib/ceph/mon
}
ceph_fuse() {
pkgdesc="FUSE based client for Ceph distributed network file system."
depends=
- _pkg $_bindir ceph-fuse
- _pkg $_syssbindir mount.fuse.ceph
+
+ amove usr/bin/ceph-fuse sbin/mount.fuse.ceph
}
rbd_fuse() {
pkgdesc="FUSE based client to map Ceph rbd images to files."
depends=
- _pkg $_bindir rbd-fuse
+
+ amove usr/bin/rbd-fuse
}
rbd_mirror() {
pkgdesc="Daemon for mirroring RBD images between Ceph clusters."
depends="ceph-common=$pkgver-r$pkgrel"
- _pkg $_bindir rbd-mirror
+
+ amove usr/bin/rbd-mirror
}
rbd_nbd() {
pkgdesc="NBD based client to map Ceph rbd images to local device."
depends=
- _pkg $_bindir rbd-nbd
+
+ amove usr/bin/rbd-nbd
}
radosgw() {
pkgdesc="Rados REST gateway which implements Amazon's S3 and OpenStack's Swift APIs."
depends="ceph-common oath-toolkit-liboath"
- _pkg $_bindir radosgw \
- radosgw-admin \
- radosgw-es \
- radosgw-object-expirer \
- radosgw-token
- mkdir -p "$subpkgdir"$_localstatedir/lib/ceph/radosgw
+
+ amove usr/bin/radosgw*
+ mkdir -p "$subpkgdir"/var/lib/ceph/radosgw
}
osd() {
@@ -431,165 +428,133 @@ osd_daemon() {
pkgdesc="Object storage daemon for the Ceph distributed file system."
depends="$_osd_daemon_deps $pkgname-user=$pkgver-r$pkgrel"
- _pkg $_bindir ceph-osd
- _pkg $_libexecdir/ceph ceph-osd-prestart.sh
- _pkg $_sysconfdir/sudoers.d ceph-osd-smartctl
- _pkg $_sysconfdir/sysctl.d 90-ceph-osd.conf
+ amove usr/bin/ceph-osd \
+ usr/libexec/ceph/ceph-osd-prestart.sh \
+ etc/sudoers.d/ceph-osd-smartctl \
+ etc/sysctl.d/90-ceph-osd.conf
install -m 750 -o $_ceph_uid -g $_ceph_gid -d \
- "$subpkgdir"$_localstatedir/lib/ceph/osd
+ "$subpkgdir"/var/lib/ceph/osd
}
osd_tools() {
pkgdesc="Object storage daemon tools for the Ceph distributed file system."
depends="$pkgname-base=$pkgver-r$pkgrel $_osd_tools_deps"
- _pkg $_bindir ceph-clsinfo \
- ceph-bluestore-tool \
- ceph-objectstore-tool \
- ceph-osdomap-tool
+ amove usr/bin/ceph-clsinfo usr/bin/ceph-*-tool
install -m 750 -o $_ceph_uid -g $_ceph_gid -d \
- "$subpkgdir"$_localstatedir/lib/ceph/osd
+ "$subpkgdir"/var/lib/ceph/osd
}
ceph_volume() {
pkgdesc="ceph-volume tool for the Ceph distributed file system."
depends="$_ceph_volume_deps"
- _pkg $_sbindir ceph-volume
- _pkg "$(_py3_sitelib)" ceph_volume 'ceph_volume-*'
+ amove usr/sbin/ceph-volume \
+ "$(_py3_sitelib)"/ceph_volume "$(_py3_sitelib)"/ceph_volume-*
}
librados() {
pkgdesc="RADOS distributed object store client library"
depends=
- _pkg $_libdir librados.so.*
- _pkg $_libdir/ceph libceph-common.so.*
+
+ amove usr/lib/librados.so.* usr/lib/ceph/libceph-common.so.*
}
_py3_rados() {
pkgdesc="Python libraries for the RADOS object store"
depends=
- _pkg "$(_py3_sitelib)" rados*.so rados-*.egg-info
+ amove "$(_py3_sitelib)"/rados*
}
libradosstriper() {
pkgdesc="RADOS striping library"
depends=
- _pkg $_libdir libradosstriper.so.*
+ amove usr/lib/libradosstriper.so.*
}
librbd() {
pkgdesc="RADOS block device client library"
depends=
- _pkg $_libdir librbd.so.*
+
+ amove usr/lib/librbd.so.*
}
_py3_rbd() {
pkgdesc="Python libraries for the RADOS block device"
depends="py3-rados"
- _pkg "$(_py3_sitelib)" rbd*.so rbd-*.egg-info
+ amove "$(_py3_sitelib)"/rbd*
}
libcephfs() {
pkgdesc="Ceph distributed file system client library"
depends=
- _pkg $_libdir libcephfs.so.*
+
+ amove usr/lib/libcephfs.so.*
}
_py3_cephfs() {
pkgdesc="Python libraries for Ceph distributed file system"
depends="py3-rados"
- _pkg "$(_py3_sitelib)" cephfs*.so cephfs-*.egg-info ceph_volume_client.py*
+ amove "$(_py3_sitelib)"/cephfs* "$(_py3_sitelib)"/ceph_volume_client.py
}
-ceph_test() {
- pkgdesc="Ceph benchmarks and test tools"
- depends="ceph-common=$pkgver-r$pkgrel $_ceph_test_deps"
-
- _pkg $_bindir ceph-client-debug \
- ceph_bench_log \
- ceph_kvstorebench \
- ceph_multi_stress_watch \
- ceph_erasure_code \
- ceph_erasure_code_benchmark \
- ceph_omapbench \
- ceph_objectstore_bench \
- ceph_perf_objectstore \
- ceph_perf_local \
- ceph_perf_msgr_client \
- ceph_perf_msgr_server \
- ceph_psim \
- ceph_radosacl \
- ceph_rgw_jsonparser \
- ceph_rgw_multiparser \
- ceph_scratchtool \
- ceph_scratchtoolpp \
- ceph_smalliobench \
- ceph_smalliobenchdumb \
- ceph_smalliobenchfs \
- ceph_smalliobenchrbd \
- ceph_test_* \
- ceph_tpbench \
- ceph_xattr_bench \
- ceph-coverage \
- ceph-monstore-tool \
- ceph-osdomap-tool \
- ceph-kvstore-tool \
- ceph-debugpack
-
- _pkg $_libdir ceph/ceph-monstore-update-crush.sh
+utils() {
+ pkgdesc="Ceph utils and recovery tools"
+ depends="ceph-common=$pkgver-r$pkgrel"
+
+ amove usr/bin/ceph-diff-sorted \
+ usr/bin/ceph-post-file \
+ usr/bin/ceph-syn \
+ usr/bin/cephfs-data-scan \
+ usr/bin/ceph-dencoder \
+ usr/bin/cephfs-journal-tool \
+ usr/bin/cephfs-table-tool \
+ usr/bin/rbd-replay*
}
bash_completion() {
pkgdesc="Bash completions for Ceph"
depends=
+
install_if="ceph=$pkgver-r$pkgrel bash-completion"
- _pkg $_sysconfdir/bash_completion.d '*'
+ amove etc/bash_completion.d/*
}
mgr() {
pkgdesc="Ceph Manager Daemon"
- depends="ceph-base=$pkgver-r$pkgrel nodejs"
+ depends="ceph-base=$pkgver-r$pkgrel"
- _pkg $_bindir ceph-mgr
- _pkg $_datadir/ceph mgr
+ amove usr/bin/ceph-mgr usr/share/ceph/mgr
install -m 750 -o $_ceph_uid -g $_ceph_gid -d \
- "$subpkgdir"$_localstatedir/lib/ceph/mgr
-}
-
-_pkg() {
- local path=$1
- shift
- if ! [ -d "$pkgdir"/$path ]; then
- error "$pkgdir/$path is not a directory"
- return 1
- fi
- mkdir -p "$subpkgdir"$path
- for _file in "$@"; do
- mv "$pkgdir"$path/$_file "$subpkgdir"$path
- done
+ "$subpkgdir"/var/lib/ceph/mgr
}
-sha512sums="1f55b0a13bf06df782831d0c9d5f8617c22442ab97fb186e6ccb08183e02bf1756caf8633fa6b1cf156c3fb7b1bdff90a60a1249adfad0b9450036e2329bf8ff ceph_15.2.9.orig.tar.gz
+sha512sums="
+5c32f9aa817ecfa788725bcfe5743756853ca9b3f9ee453242110f1b5e1bdd1feaef79ad9ccf2b185445c9644bcecb1355e151a2255bfd27edc9818e0d6d4c4a ceph_16.2.5.orig.tar.gz
110bdbcb40216c7ed155a8d23020784741b4992d895f4f04a146d275506e4e68053854d3b063b41e9c9b3e3e4f95b6b90602f92c185c853c0d8f47ad0c6b7121 ceph.confd
ce5f162501f6b67fe254546dddf880d1a5b1d1a0fa69e0b1918de17e8da45c5c6124512b8cbd98b76f29d931403de0d11c5ffd330ed8ee1f4dc75bb04baecae3 ceph.initd
-c608f11cf358d76daf5281467a4ea941a81474fbe7f5faa41f7f4d0abaf9136a01576bbb1ab24bdd7bc91a49f66bd7f0a84717de5ec27250d74dd1e47e3b5dd3 10-musl-fixes.patch
-427ab410aeb02d49c5caa8ff68c7b8df325229823d625b7069cd48c66dd9e129e742270850fb2be2238eb6fa12b8256845b4d94426ca96b2a9187b2726e78423 20-pci.patch
-90042a4a3ef7374080974a2ebcbf88b75ef97c1a1770552205818c333cca802e98077d9244a14177d084e31da1b49c8fcca9c604a743286aa1bb8e7e4f208a4b 30-32bit_fix.patch.noauto
-2c4f3af87912918b28783002ec77908b96432060a96343b01a362bed642b5d58c25701e319b63c536c74b0c8f2b762f0a92711c983f1c36c308dfc5869aea95c 31-32bit_fix_tests.patch.noauto
-26ecf3dd0220d878ccf98cac2adbc201e5be31b1b966698d95a7058a8bd6c3640520764e85b2a1645fd1474be576ed03f80811f8ccc96bada71b05fe51b06ef8 32-fix_ceph_thread_timeout.patch
-62ef2e7e10978e9e0eef4a094bc63d9890f0d7e71eba0f0e15baede0597ea179a77924f6dbd4d4a9c9b151c9ae934f4c10d7f2a17ee960b017f942ec57c7af35 34-fix_cpu_detection.patch
-8a3e902309238ae6917b4c5fe9fa371dad3ba8e01848f462a9b67ad8d69b8370a8957f6c88462a7016319fd323eb6d6c31415734db56485a8a8b279d2705aff5 35-fix_ErasureCodeShec.patch
-ec8aec40fa04fd475834801232d644ff3baf0777b59dcede36a6caa0d63b2c379292253babc3678baee6a54935575cf9e4a622f4d16078ef8d3ac3c3d6502ad1 36-fix_librbd_duplicate.patch
-60ea21b17640edf5bd644c23fa27abcf166a709795ad29bb917a38e59f069dceb4666479819626421340f7c70dd76545a4f1fbee8b2db781cadb9c061cdb7728 37-fix_tests.patch
-92b5776925587c9c1491e975d49fe1a980cf65a1d556c22dd8547ff012e1a8a01c8cd04eedacdfa208e56aa9c260a8d8c0896c607bfc8079cfa38e8f1ece1a8a 40-uint.patch
-445f3ca5c582e0fe02c18061c98cd13358684091c8a45262552c8af75d1c52320de538f6b71765e8267d326402a14c21dc27fd0781c997ab491bd3cdecc2e49f 41-test-uint.patch
-270e214292fab2d6a7a0a0a6e3df9ee6b2e2d37397607329f19822fe41f18cec0f4365adca9b78647d0aa78e9a22a7c95300fa71390a7885716e52991fbb8ecc 42-no-virtualenvs.patch
+94687578411bf0de1b17555ed81c188c88ea63ac4a25993bd8fde9cf68afbbfbdec7b2d7c54fdcfbd4aed4eb78754e8061c308955596cbe037ff15b575874cc6 10-musl-fixes.patch
+03ef3598181c45ecba5600a1e4db7fd897ea9d3c8abdfaad2dcf84c7a241d9ba18e7f7885d69ee0572ee307fc94600a2784a07da909d37a51de27f8ded2e3a70 20-pci.patch
+b879993a285a771c3640c5214ff70e8e01673c0c5e23a0f88ac70db168aeb1dd2eaed12805ed5076adae5a0f596abcb9d82220c6fd97643169cb92788898a189 30-32bit_fix.patch.noauto
+2eebc4501d40edf92c5302b25dea554807caba6abd22a3569d708db8a057085d74a3ecdac2adab54edb0619cf3d74884e1d44ef95d991a069dd473279819b974 30-cypress.patch.noauto
+01c446ac4528d8e12d3544f603ba32a0bf0d5a3a72f9f8f3726725f9d225ee447d2fea4ee2ddf10b36498cc01f2ecf51175dbfcc6376aac4c8002f52c6a04299 30-ubuntu-32bit-fixes.patch.noauto
+f974ab36cd6fa49c1d4613203a4f2152723e4952a185dfb6349bc4ca8ee1a7a9d0477bea136c54248271de30a4e584734ba41e8ec41bf274b04074622888ae39 31-32bit_fix_tests.patch.noauto
+964e7ca107cc731be2be7bf6813aca760ca1c6e6f6b3748103c1e6baef4d25e41442752a72f5e5daed2b1c6c4f96c9aebbb7114247e8a5047511fbd035767aeb 32-PurgeQueue.cc-cast.patch
+fb69f1c886f3cc05a10dd8722429c6bdc840674113e83cf3592caf75b5d4082e5bdaea73426b28edbde724c4973775f2109a3eb4e0a84384fa8083621d463fbd 32-upstream32bit.patch
+73326b47deb0967ff024731c28a956ca63800ffcbfa36c6351c157328d2036b3f8406368cc7c7e087841e144b32889f27d807f3405ac1c5a1c2daf6bd7ca5338 32-upstream32bitcleanup.patch
+abb3cab9c01cc3d6d42a9858678059a8c9c43bda2649bf97b489fdc205eb10ae27f9fb7302062e0fb41f5cffddbfc2ae529130569034f373732a0a5d33aba86e 35-fix_ErasureCodeShec.patch
+908169df45177240d2dcc721fe1637c521789aed56c3b3400ed3ba9c73d93634e4369258fb0e0395dc27053be26229ee8f370e445f0e69d01f551a710a29d407 37-fix_tests.patch
+2584ceb68b50423fac386ce83ad194f22aa574e11b99916e712471bacba28486d2639a8fe63d97c5697f33270c0de99db1f0e76eb43b14cc47c6de7da6903fde 42-no-virtualenvs.patch
aea43c2a99f16f7fccf33aeca3565077bb2274816ca68db64b672addc85bde5c479bc9ad0fb33dbde79c9390f9acf1d98545e20e311e40dd428dad5ed02f0651 43-aarch64-erasure.patch
-fd6d008dbd62db03299d5562eb15c76cf4a6a58b8f2d872c298254777bd6ab8484ec884d3b24c5e9f40a3118af391e24b1eff835b6370921b5f81b4d25d8b9d2 44-missing-include.patch
-12019e8af8f9ce53e66c9acbe6ed8f1e3d3efbbd8bf924beb13d5fbe250053fb4185a6ef46193137ca636a5dda4d19a931e8060a4dd217cdcad77dc9db42065c 44-signal_handler.patch"
+741a0f83ecf1a8298bcc8cb8ab9f25f6d27cfe69367150a8821fde445efe20a255b3f1296dc92003a2956475e3f15f3d0ac920be280dd03ac3f311c754dbb890 44-cmake-buildtype.patch
+e47d736d3ab1417758fc5f92798a77272b978799e6d9f0728b2036d6cc5975c6c10f8dc4590c2e1cb31e1e9fc03c582394b30727e315a6889de524fc8bf95369 44-LogClock.h.patch
+f89c913a53e2806c59508d26f5dc72abb428c7e4e3b7c1aeb6eaf92744ea9a13cac2f00a2ac90f91ad7682f66d876a5fffedd10feeceecd71a944793581da443 44-staticcast.patch
+85d0009b0d1442af81d115402cdbd17667d85314030e1748a4656c1ee798b02efdcff41ccb374a6b63f7bf012bf1756b61e75c5d2b6399c329a6e62024ad0011 44-node_modules.patch
+b95ec157f9c77177afd3deb8e3485bb5f10e1b634a15617d14e09b08d6680d32201ecb249ea5ea98127a312e1fdb22fdbe9f0216690291a2849419aa7ab81610 44-missing-include.patch
+8269647901e2c10d2e85668abb34f44a0b394460fb89e4eeb6dbf3eb964764a9e4b56b1ec90ab07da428ae33ad3147ea51830fdd83654e1b8b4c179db90b5e1f 44-missing-include2.patch
+"