From fe6d71cd20b549a643709cc8e3b2658541a744b7 Mon Sep 17 00:00:00 2001 From: Jan Fajerski Date: Wed, 28 Jun 2017 18:19:53 +0200 Subject: [PATCH] mds/MDSMap: use find in is_data_pool binary_search assumes that vector data_pools is ordered. add_data_pool however only appends to the vector, so no order can be assumed. Fixes: http://tracker.ceph.com/issues/20452 Signed-off-by: Jan Fajerski --- src/mds/MDSMap.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/mds/MDSMap.h b/src/mds/MDSMap.h index e99be2be67b57..93fd1ce73f2f0 100644 --- a/src/mds/MDSMap.h +++ b/src/mds/MDSMap.h @@ -314,7 +314,10 @@ public: int64_t get_first_data_pool() const { return *data_pools.begin(); } int64_t get_metadata_pool() const { return metadata_pool; } bool is_data_pool(int64_t poolid) const { - return std::binary_search(data_pools.begin(), data_pools.end(), poolid); + auto p = std::find(data_pools.begin(), data_pools.end(), poolid); + if (p == data_pools.end()) + return false; + return true; } bool pool_in_use(int64_t poolid) const { -- 2.39.5