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);
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)
{