]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd/PG: fix upgrade() 14444/head
authorSage Weil <sage@redhat.com>
Wed, 19 Apr 2017 03:42:16 +0000 (23:42 -0400)
committerSage Weil <sage@redhat.com>
Fri, 28 Apr 2017 15:32:17 +0000 (11:32 -0400)
We need to update the infover_key on any upgrade.

Signed-off-by: Sage Weil <sage@redhat.com>
src/osd/PG.cc

index edfd5d174d79534e181bc662086426561608740a..5afc5db13faf9da2d91825f6a381d545476984e3 100644 (file)
@@ -2773,12 +2773,7 @@ void PG::upgrade(ObjectStore *store)
     ghobject_t biginfo_oid(OSD::make_pg_biginfo_oid(pg_id));
     t.remove(coll_t::meta(), log_oid);
     t.remove(coll_t::meta(), biginfo_oid);
-
     t.touch(coll, pgmeta_oid);
-    map<string,bufferlist> v;
-    __u8 ver = cur_struct_v;
-    ::encode(ver, v[infover_key]);
-    t.omap_setkeys(coll, pgmeta_oid, v);
   }
 
   // 8 -> 9
@@ -2795,6 +2790,14 @@ void PG::upgrade(ObjectStore *store)
     }
   }
 
+  // update infover_key
+  if (info_struct_v < cur_struct_v) {
+    map<string,bufferlist> v;
+    __u8 ver = cur_struct_v;
+    ::encode(ver, v[infover_key]);
+    t.omap_setkeys(coll, pgmeta_oid, v);
+  }
+
   dirty_info = true;
   dirty_big_info = true;
   write_if_dirty(t);