From: Sage Weil Date: Wed, 19 Apr 2017 03:42:16 +0000 (-0400) Subject: osd/PG: fix upgrade() X-Git-Tag: v12.0.3~129^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=e3998f0e30acdc5f09ff745c5b96f78c0623cbba;p=ceph.git osd/PG: fix upgrade() We need to update the infover_key on any upgrade. Signed-off-by: Sage Weil --- diff --git a/src/osd/PG.cc b/src/osd/PG.cc index edfd5d174d7..5afc5db13fa 100644 --- a/src/osd/PG.cc +++ b/src/osd/PG.cc @@ -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 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 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);