From: xiexingguo <258156334@qq.com> Date: Thu, 19 Nov 2015 04:48:32 +0000 (+0800) Subject: RadosClient: reimplement the pool alignment methods using the new ones X-Git-Tag: v10.0.1~35^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F6489%2Fhead;p=ceph.git 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 --- diff --git a/src/librados/RadosClient.cc b/src/librados/RadosClient.cc index 09128e2a0bd1..1acde03ae21e 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