Avoid use of size_t when necessary
authorJames Page james.page@ubuntu.com, Bernd Zeimetz <bzed@debian.org>
Fri, 24 Apr 2020 20:43:18 +0000 (21:43 +0100)
committerBernd Zeimetz <bzed@debian.org>
Fri, 24 Apr 2020 20:43:18 +0000 (21:43 +0100)
Forwarded: no

On 32 bit architectures size_t is not a 64 bit type, which
causes comparison mismatch failures during compilation.

Gbp-Pq: Name 32bit-avoid-size_t.patch

src/common/config_values.h
src/common/options.cc
src/os/bluestore/BlueFS.h
src/os/bluestore/BlueStore.cc
src/os/bluestore/BlueStore.h
src/osd/PrimaryLogPG.cc

index ab52060e462928c25be5abcf9c3e17ee7ac6029a..17eb11d0329dcd10e4d9bb9ea37b5c2e71b4acdb 100644 (file)
@@ -50,7 +50,7 @@ public:
 #define OPTION_OPT_U32(name) uint64_t name;
 #define OPTION_OPT_U64(name) uint64_t name;
 #define OPTION_OPT_UUID(name) uuid_d name;
-#define OPTION_OPT_SIZE(name) size_t name;
+#define OPTION_OPT_SIZE(name) uint64_t name;
 #define OPTION(name, ty)       \
   public:                      \
     OPTION_##ty(name)          
index 8135ea8f1ebcdd79042c1dac04492fa87c4e0ce0..d437d8d4e86956082116147f207cb5386ac7fa48 100644 (file)
@@ -189,7 +189,7 @@ int Option::parse_value(
     }
     *out = uuid;
   } else if (type == Option::TYPE_SIZE) {
-    Option::size_t sz{strict_iecstrtoll(val.c_str(), error_message)};
+    Option::size_t sz{static_cast<std::size_t>(strict_iecstrtoll(val.c_str(), error_message))};
     if (!error_message->empty()) {
       return -EINVAL;
     }
index fb89c213d2ad910968345777e9e3b2bfea79000c..78ff877c3801cd0bd4e70bd8b47969b48bb513f8 100644 (file)
@@ -69,7 +69,7 @@ public:
    * @params
    * alloc_size - allocation unit size to check
    */
-  virtual size_t available_freespace(uint64_t alloc_size) = 0;
+  virtual uint64_t available_freespace(uint64_t alloc_size) = 0;
 };
 
 class BlueFS {
index 253efb5a126fb7d8390fe14aebd38ef0bffb6023..298ef69c1fdf6024fc0ef3f90ea53fa8c2a922f2 100644 (file)
@@ -5585,12 +5585,12 @@ int BlueStore::allocate_bluefs_freespace(
   return 0;
 }
 
-size_t BlueStore::available_freespace(uint64_t alloc_size) {
-  size_t total = 0;
-  auto iterated_allocation = [&](size_t off, size_t len) {
+uint64_t BlueStore::available_freespace(uint64_t alloc_size) {
+  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
index 97315f0eabf3759b4f4af446c2d6945523268ee8..ed9bf580ac1a560b06a4a7d73524d17d6d84bd16 100644 (file)
@@ -3067,7 +3067,7 @@ private:
     PExtentVector& extents) override {
     return allocate_bluefs_freespace(min_size, size, &extents);
   };
-  size_t available_freespace(uint64_t alloc_size) override;
+  uint64_t available_freespace(uint64_t alloc_size) override;
 
 public:
   struct sb_info_t {
index 7caed663360c0247d56aa7cc260136929b9b5de4..90c8ade50aa841ae617dd5093c89c772cb3a2c20 100644 (file)
@@ -1611,7 +1611,7 @@ int PrimaryLogPG::do_scrub_ls(MOSDOp *m, OSDOp *osd_op)
 
 void PrimaryLogPG::calc_trim_to()
 {
-  size_t target = cct->_conf->osd_min_pg_log_entries;
+  uint64_t target = cct->_conf->osd_min_pg_log_entries;
   if (is_degraded() ||
       state_test(PG_STATE_RECOVERING |
                  PG_STATE_RECOVERY_WAIT |
@@ -1627,15 +1627,15 @@ void PrimaryLogPG::calc_trim_to()
   if (limit != eversion_t() &&
       limit != pg_trim_to &&
       pg_log.get_log().approx_size() > target) {
-    size_t num_to_trim = std::min(pg_log.get_log().approx_size() - target,
-                             cct->_conf->osd_pg_log_trim_max);
+    uint64_t num_to_trim = std::min(pg_log.get_log().approx_size() - target,
+                                    cct->_conf->osd_pg_log_trim_max);
     if (num_to_trim < cct->_conf->osd_pg_log_trim_min &&
         cct->_conf->osd_pg_log_trim_max >= cct->_conf->osd_pg_log_trim_min) {
       return;
     }
     list<pg_log_entry_t>::const_iterator it = pg_log.get_log().log.begin();
     eversion_t new_trim_to;
-    for (size_t i = 0; i < num_to_trim; ++i) {
+    for (uint64_t i = 0; i < num_to_trim; ++i) {
       new_trim_to = it->version;
       ++it;
       if (new_trim_to > limit) {