From e3998f0e30acdc5f09ff745c5b96f78c0623cbba Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Tue, 18 Apr 2017 23:42:16 -0400 Subject: [PATCH] osd/PG: fix upgrade() We need to update the infover_key on any upgrade. Signed-off-by: Sage Weil --- src/osd/PG.cc | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) 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); -- 2.47.3