Avoid use of size_t when necessary
authorJames Page james.page@ubuntu.com, Bernd Zeimetz <bzed@debian.org>
Fri, 31 Jan 2020 23:47:27 +0000 (23:47 +0000)
committerBernd Zeimetz <bzed@debian.org>
Fri, 31 Jan 2020 23:47:27 +0000 (23:47 +0000)
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 cc10924dc51163db73d29d1bd35aba8bd4a1d03c..10b2e50532bbf4fdd3d94294a763a84c02b9afe1 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 563919f1afe3b00adb54dd3fac9af3a802eaeada..5e70bb651f3eaa6846c0b06a9c90d9b39683e0b3 100644 (file)
@@ -5523,12 +5523,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 374034ace2d53353159838b75ce63dc9e9ec9818..04d615133e4593874fcaff565d2886a83db2b9ef 100644 (file)
@@ -3064,7 +3064,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 27cf2f43039068e5385ce4ab171927425836bd0a..c6944f3fef952095d0b7de7cbb6fdd32afb76cf6 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) {