From: Mingxin Liu Date: Wed, 18 Jan 2017 10:31:52 +0000 (+0800) Subject: osd/OSDMap: make get prev/next up osd more efficient X-Git-Tag: v12.0.0~124^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=a37765c7c7d02bfeabe761a484e2eee6998de96f;p=ceph.git osd/OSDMap: make get prev/next up osd more efficient what's more, in get_previous_up_osd_before(), if arg n = 0, run into endless loop Signed-off-by: Mingxin Liu --- diff --git a/src/osd/OSDMap.h b/src/osd/OSDMap.h index 1d966e0321aa..c662bdcea8dc 100644 --- a/src/osd/OSDMap.h +++ b/src/osd/OSDMap.h @@ -525,6 +525,8 @@ public: } int get_next_up_osd_after(int n) const { + if (get_max_osd() == 0) + return -1; for (int i = n + 1; i != n; ++i) { if (i >= get_max_osd()) i = 0; @@ -537,6 +539,8 @@ public: } int get_previous_up_osd_before(int n) const { + if (get_max_osd() == 0) + return -1; for (int i = n - 1; i != n; --i) { if (i < 0) i = get_max_osd() - 1;