From 3b146f590053702fa3a4497ae4e984f2ca7de8bc Mon Sep 17 00:00:00 2001 From: xiexingguo <258156334@qq.com> Date: Thu, 19 Nov 2015 12:48:32 +0800 Subject: [PATCH] RadosClient: reimplement the pool alignment methods using the new ones so we don't less duplicated code and the logic reveals the problem of the old methods in a more visible way. Fixes: #13715 Signed-off-by: xie xingguo --- src/librados/RadosClient.cc | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/src/librados/RadosClient.cc b/src/librados/RadosClient.cc index 09128e2a0bd1c..1acde03ae21ea 100644 --- a/src/librados/RadosClient.cc +++ b/src/librados/RadosClient.cc @@ -94,16 +94,15 @@ int64_t librados::RadosClient::lookup_pool(const char *name) bool librados::RadosClient::pool_requires_alignment(int64_t pool_id) { - int r = wait_for_osdmap(); + bool requires; + int r = pool_requires_alignment2(pool_id, &requires); if (r < 0) { - return r; + // Cast answer to false, this is a little bit problematic + // since we really don't know the answer yet, say. + return false; } - const OSDMap *osdmap = objecter->get_osdmap_read(); - bool ret = osdmap->have_pg_pool(pool_id) && - osdmap->get_pg_pool(pool_id)->requires_aligned_append(); - objecter->put_osdmap_read(); - return ret; + return requires; } // a safer version of pool_requires_alignment @@ -130,16 +129,13 @@ int librados::RadosClient::pool_requires_alignment2(int64_t pool_id, uint64_t librados::RadosClient::pool_required_alignment(int64_t pool_id) { - int r = wait_for_osdmap(); + uint64_t alignment; + int r = pool_required_alignment2(pool_id, &alignment); if (r < 0) { - return r; + return 0; } - const OSDMap *osdmap = objecter->get_osdmap_read(); - uint64_t ret = osdmap->have_pg_pool(pool_id) ? - osdmap->get_pg_pool(pool_id)->required_alignment() : 0; - objecter->put_osdmap_read(); - return ret; + return alignment; } // a safer version of pool_required_alignment -- 2.39.5