]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
os/bluestore: fix broken cap in _balance_bluefs_freespace() 21097/head
authorIgor Fedotov <ifedotov@suse.com>
Wed, 28 Mar 2018 12:55:48 +0000 (15:55 +0300)
committerIgor Fedotov <ifedotov@suse.com>
Wed, 28 Mar 2018 12:55:48 +0000 (15:55 +0300)
1 << 31 is cast to signed int that results in huge value when casting to
uint64_t making min() call ineffective.

Signed-off-by: Igor Fedotov <ifedotov@suse.com>
src/os/bluestore/BlueStore.cc

index a59c02bb7eb468c9eacbce32501932eb89715693..fbd84137211e2013145cebd5b9ad6acd5d5bd4fd 100644 (file)
@@ -5129,7 +5129,7 @@ int BlueStore::_balance_bluefs_freespace(PExtentVector *extents)
     gift = p2roundup(gift, cct->_conf->bluefs_alloc_size);
 
     // hard cap to fit into 32 bits
-    gift = std::min<uint64_t>(gift, 1 << 31);
+    gift = std::min<uint64_t>(gift, 1ull << 31);
     dout(10) << __func__ << " gifting " << gift
             << " (" << pretty_si_t(gift) << ")" << dendl;
 
@@ -5166,7 +5166,7 @@ int BlueStore::_balance_bluefs_freespace(PExtentVector *extents)
     reclaim = p2roundup(reclaim, cct->_conf->bluefs_alloc_size);
 
     // hard cap to fit into 32 bits
-    reclaim = std::min<uint64_t>(reclaim, 1 << 31);
+    reclaim = std::min<uint64_t>(reclaim, 1ull << 31);
     dout(10) << __func__ << " reclaiming " << reclaim
             << " (" << pretty_si_t(reclaim) << ")" << dendl;