Avoid use of size_t when necessary
authorJames Page james.page@ubuntu.com, Bernd Zeimetz <bzed@debian.org>
Thu, 27 May 2021 10:04:21 +0000 (11:04 +0100)
committerThomas Goirand <zigo@debian.org>
Thu, 27 May 2021 10:04:21 +0000 (11:04 +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 768d6505d9d876a575e35e79e4722ea7932c3297..4d3dc6fdc3759d2563bcd7e603f7a4c25a45781d 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 2115870f049c79a91ad531e035e56878cdc65d32..929eadfe1144cf2db3f42ec8445e508e63d8815a 100644 (file)
@@ -72,7 +72,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 BlueFSVolumeSelector {
index d701ef4d1c8381455c1f56c983c189b2fd8ccf5b..6e728254d748c6615f391aab6914ddc89f88c6a6 100644 (file)
@@ -5930,12 +5930,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 159e92963e1f8344ce732a1e9a4e528c92fe65f8..d52d961171af5e4b1b9e979b9eebd2c38221010a 100644 (file)
@@ -3107,7 +3107,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 3b3e3e59292b717dc5f30fa7bc623930ee9c5326..561d4cf9e217057d438bdf060595b80e7ea772a0 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) {