]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osdmap: restructure flow in OSDMap::decode
authorSage Weil <sage@newdream.net>
Wed, 18 Apr 2012 21:36:43 +0000 (14:36 -0700)
committerSage Weil <sage@newdream.net>
Wed, 18 Apr 2012 22:23:57 +0000 (15:23 -0700)
Signed-off-by: Sage Weil <sage@newdream.net>
Reviewed-by: Greg Farnum <gregory.farnum@dreamhost.com>
src/osd/OSDMap.cc

index 5b16de7023879c2fe6ad352758415acbef231f7b..0189fca617c9ce820186eddf417e1bf5d48240bd 100644 (file)
@@ -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) {