From: Sage Weil Date: Wed, 18 Apr 2012 21:36:43 +0000 (-0700) Subject: osdmap: restructure flow in OSDMap::decode X-Git-Tag: v0.46~55 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=b0532aa6ed751d1fad0d2aec24690471371dfdf6;p=ceph.git osdmap: restructure flow in OSDMap::decode Signed-off-by: Sage Weil Reviewed-by: Greg Farnum --- diff --git a/src/osd/OSDMap.cc b/src/osd/OSDMap.cc index 5b16de702387..0189fca617c9 100644 --- a/src/osd/OSDMap.cc +++ b/src/osd/OSDMap.cc @@ -729,37 +729,35 @@ void OSDMap::decode(bufferlist::iterator& p) ::decode(created, p); ::decode(modified, p); - int32_t max_pools = 0; - if (v < 4) { - ::decode(max_pools, p); - } if (v < 6) { + if (v < 4) { + int32_t max_pools = 0; + ::decode(max_pools, p); + pool_max = max_pools; + } pools.clear(); ::decode(n, p); while (n--) { ::decode(t, p); ::decode(pools[t], p); } + if (v == 4) { + ::decode(n, p); + pool_max = n; + } else if (v == 5) { + pool_name.clear(); + ::decode(n, p); + while (n--) { + ::decode(t, p); + ::decode(pool_name[t], p); + } + ::decode(n, p); + pool_max = n; + } } else { ::decode(pools, p); - } - if (v == 5) { - pool_name.clear(); - ::decode(n, p); - while (n--) { - ::decode(t, p); - ::decode(pool_name[t], p); - } - } else if (v >= 6) { ::decode(pool_name, p); - } - if (v == 4 || v == 5) { - ::decode(n, p); - pool_max = n; - } else if (v >= 6) { ::decode(pool_max, p); - } else { - pool_max = max_pools; } // kludge around some old bug that zeroed out pool_max (#2307) if (pools.size() && pool_max < pools.rbegin()->first) {