]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: PurgeQueue.cc fix for 32bit compilation 44169/head
authorDuncan Bellamy <dunk@denkimushi.com>
Sat, 8 May 2021 10:52:35 +0000 (11:52 +0100)
committerCory Snyder <csnyder@iland.com>
Wed, 1 Dec 2021 19:50:05 +0000 (14:50 -0500)
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>
(cherry picked from commit 0b7f69252c7701f70d38cc6221d393cbd5a507a4)

Conflicts:
src/mds/PurgeQueue.cc

Cherry-pick notes:
- Octopus did not previously have static_cast to uint64

src/mds/PurgeQueue.cc

index c47a43ec4a19c1e63778c2816e696093c3423b08..c13a61f856d261daafab70442a56faccb5b14815 100644 (file)
@@ -503,7 +503,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, 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;
@@ -581,7 +582,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, 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;
   }
@@ -659,7 +661,8 @@ 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, 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;