]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
Revert "ceph-objectstore-tool: drop support for pre-pgmeta PGs"
authorSage Weil <sage@redhat.com>
Wed, 14 Oct 2015 13:35:29 +0000 (09:35 -0400)
committerSage Weil <sage@redhat.com>
Fri, 16 Oct 2015 18:08:42 +0000 (14:08 -0400)
This reverts commit b297e6d2b206c0da733ae9d4ac5fb321f113ae5d.

src/tools/ceph_objectstore_tool.cc

index 11de3bc32b4816ca7eb9b16c67958d6a4d03baf6..e833bf9c7d9bdcccf8ba8033ada841a3ac784b91 100644 (file)
@@ -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<string,bufferlist> 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<string,bufferlist> 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)
 {