From: Sage Weil Date: Wed, 14 Oct 2015 13:35:29 +0000 (-0400) Subject: Revert "ceph-objectstore-tool: drop support for pre-pgmeta PGs" X-Git-Tag: v9.2.0~6^2~6 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=dff5783b11ce99dc7d490d6af67e562284f06ec3;p=ceph.git Revert "ceph-objectstore-tool: drop support for pre-pgmeta PGs" This reverts commit b297e6d2b206c0da733ae9d4ac5fb321f113ae5d. --- diff --git a/src/tools/ceph_objectstore_tool.cc b/src/tools/ceph_objectstore_tool.cc index 11de3bc32b48..e833bf9c7d9b 100644 --- a/src/tools/ceph_objectstore_tool.cc +++ b/src/tools/ceph_objectstore_tool.cc @@ -470,6 +470,10 @@ int finish_remove_pgs(ObjectStore *store) return 0; } +#pragma GCC diagnostic ignored "-Wpragmas" +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" + int mark_pg_for_removal(ObjectStore *fs, spg_t pgid, ObjectStore::Transaction *t) { pg_info_t info(pgid); @@ -488,14 +492,29 @@ int mark_pg_for_removal(ObjectStore *fs, spg_t pgid, ObjectStore::Transaction *t cerr << __func__ << " error on read_info " << cpp_strerror(r) << std::endl; return r; } - assert(struct_v >= 8); - cout << "setting '_remove' omap key" << std::endl; - map values; - ::encode((char)1, values["_remove"]); - t->omap_setkeys(coll, pgmeta_oid, values); + if (struct_v < 8) { + // old xattr + cout << "setting legacy 'remove' xattr flag" << std::endl; + bufferlist one; + one.append('1'); + t->collection_setattr(coll, "remove", one); + cout << "remove " << coll_t::meta() << " " << log_oid << std::endl; + t->remove(coll_t::meta(), log_oid); + cout << "remove " << coll_t::meta() << " " << biginfo_oid << std::endl; + t->remove(coll_t::meta(), biginfo_oid); + } else { + // new omap key + cout << "setting '_remove' omap key" << std::endl; + map values; + ::encode((char)1, values["_remove"]); + t->omap_setkeys(coll, pgmeta_oid, values); + } return 0; } +#pragma GCC diagnostic pop +#pragma GCC diagnostic warning "-Wpragmas" + int initiate_new_remove_pg(ObjectStore *store, spg_t r_pgid, ObjectStore::Sequencer &osr) {