#define tracepoint(...)
#endif
-static coll_t META_COLL;
-
#define dout_subsys ceph_subsys_osd
#undef dout_prefix
#define dout_prefix _prefix(_dout, whoami, get_osdmap_epoch())
bool found = map_bl_cache.lookup(e, &bl);
if (found)
return true;
- found = store->read(
- META_COLL, OSD::get_osdmap_pobject_name(e), 0, 0, bl) >= 0;
+ found = store->read(coll_t::meta(),
+ OSD::get_osdmap_pobject_name(e), 0, 0, bl) >= 0;
if (found)
_add_map_bl(e, bl);
return found;
bool found = map_bl_inc_cache.lookup(e, &bl);
if (found)
return true;
- found = store->read(
- META_COLL, OSD::get_inc_osdmap_pobject_name(e), 0, 0, bl) >= 0;
+ found = store->read(coll_t::meta(),
+ OSD::get_inc_osdmap_pobject_name(e), 0, 0, bl) >= 0;
if (found)
_add_map_inc_bl(e, bl);
return found;
OSDSuperblock sb;
bufferlist sbbl;
- ret = store->read(META_COLL, OSD_SUPERBLOCK_POBJECT, 0, 0, sbbl);
+ ret = store->read(coll_t::meta(), OSD_SUPERBLOCK_POBJECT, 0, 0, sbbl);
if (ret >= 0) {
dout(0) << " have superblock" << dendl;
if (whoami != sb.whoami) {
::encode(sb, bl);
ObjectStore::Transaction t;
- t.create_collection(META_COLL);
- t.write(META_COLL, OSD_SUPERBLOCK_POBJECT, 0, bl.length(), bl);
+ t.create_collection(coll_t::meta());
+ t.write(coll_t::meta(), OSD_SUPERBLOCK_POBJECT, 0, bl.length(), bl);
ret = store->apply_transaction(t);
if (ret) {
derr << "OSD::mkfs: error while writing OSD_SUPERBLOCK_POBJECT: "
}
// make sure snap mapper object exists
- if (!store->exists(META_COLL, OSD::make_snapmapper_oid())) {
+ if (!store->exists(coll_t::meta(), OSD::make_snapmapper_oid())) {
dout(10) << "init creating/touching snapmapper object" << dendl;
ObjectStore::Transaction t;
- t.touch(META_COLL, OSD::make_snapmapper_oid());
+ t.touch(coll_t::meta(), OSD::make_snapmapper_oid());
r = store->apply_transaction(t);
if (r < 0)
goto out;
bufferlist bl;
::encode(superblock, bl);
- t.write(META_COLL, OSD_SUPERBLOCK_POBJECT, 0, bl.length(), bl);
+ t.write(coll_t::meta(), OSD_SUPERBLOCK_POBJECT, 0, bl.length(), bl);
}
int OSD::read_superblock()
{
bufferlist bl;
- int r = store->read(META_COLL, OSD_SUPERBLOCK_POBJECT, 0, 0, bl);
+ int r = store->read(coll_t::meta(), OSD_SUPERBLOCK_POBJECT, 0, 0, bl);
if (r < 0)
return r;
}
// clean up old infos object?
- if (has_upgraded && store->exists(META_COLL, OSD::make_infos_oid())) {
+ if (has_upgraded && store->exists(coll_t::meta(), OSD::make_infos_oid())) {
dout(1) << __func__ << " removing legacy infos object" << dendl;
ObjectStore::Transaction t;
- t.remove(META_COLL, OSD::make_infos_oid());
+ t.remove(coll_t::meta(), OSD::make_infos_oid());
int r = store->apply_transaction(t);
if (r != 0) {
derr << __func__ << ": apply_transaction returned "
object_t oid(nm);
hobject_t soid(sobject_t(oid, 0));
ObjectStore::Transaction *t = new ObjectStore::Transaction;
- t->write(META_COLL, soid, 0, bsize, bl);
+ t->write(coll_t::meta(), soid, 0, bsize, bl);
store->queue_transaction_and_cleanup(NULL, t);
- cleanupt->remove(META_COLL, soid);
+ cleanupt->remove(coll_t::meta(), soid);
}
store->sync_and_flush();
utime_t end = ceph_clock_now(cct);
last_marked_full = e;
hobject_t fulloid = get_osdmap_pobject_name(e);
- t.write(META_COLL, fulloid, 0, bl.length(), bl);
+ t.write(coll_t::meta(), fulloid, 0, bl.length(), bl);
pin_map_bl(e, bl);
pinned_maps.push_back(add_map(o));
continue;
dout(10) << "handle_osd_map got inc map for epoch " << e << dendl;
bufferlist& bl = p->second;
hobject_t oid = get_inc_osdmap_pobject_name(e);
- t.write(META_COLL, oid, 0, bl.length(), bl);
+ t.write(coll_t::meta(), oid, 0, bl.length(), bl);
pin_map_inc_bl(e, bl);
OSDMap *o = new OSDMap;
hobject_t fulloid = get_osdmap_pobject_name(e);
- t.write(META_COLL, fulloid, 0, fbl.length(), fbl);
+ t.write(coll_t::meta(), fulloid, 0, fbl.length(), fbl);
pin_map_bl(e, fbl);
pinned_maps.push_back(add_map(o));
continue;
service.map_cache.cached_key_lower_bound()));
for (epoch_t e = superblock.oldest_map; e < min; ++e) {
dout(20) << " removing old osdmap epoch " << e << dendl;
- t.remove(META_COLL, get_osdmap_pobject_name(e));
- t.remove(META_COLL, get_inc_osdmap_pobject_name(e));
+ t.remove(coll_t::meta(), get_osdmap_pobject_name(e));
+ t.remove(coll_t::meta(), get_inc_osdmap_pobject_name(e));
superblock.oldest_map = e+1;
num++;
if (num >= cct->_conf->osd_target_transaction_size &&
#undef dout_prefix
#define dout_prefix _prefix(_dout, this)
-static coll_t META_COLL;
-
// prefix pgmeta_oid keys with _ so that PGLog::read_log() can
// easily skip them
const string infover_key("_infover");
pg_log.mark_log_for_rewrite();
hobject_t log_oid(OSD::make_pg_log_oid(pg_id));
hobject_t biginfo_oid(OSD::make_pg_biginfo_oid(pg_id));
- t.remove(META_COLL, log_oid);
- t.remove(META_COLL, biginfo_oid);
+ t.remove(coll_t::meta(), log_oid);
+ t.remove(coll_t::meta(), biginfo_oid);
t.collection_rmattr(coll, "info");
t.touch(coll, pgmeta_oid);
keys.clear();
values.clear();
keys.insert(ek);
- store->omap_get_values(META_COLL, legacy_infos_oid, keys, &values);
+ store->omap_get_values(coll_t::meta(), legacy_infos_oid, keys, &values);
assert(values.size() == 1);
bufferlist::iterator p = values[ek].begin();
::decode(cur_epoch, p);
keys.insert(k);
keys.insert(bk);
values.clear();
- store->omap_get_values(META_COLL, infos_oid, keys, &values);
+ store->omap_get_values(coll_t::meta(), infos_oid, keys, &values);
assert(values.size() == 2);
p = values[k].begin();
ostringstream oss;
pg_log.read_log(store,
coll,
- info_struct_v < 8 ? META_COLL : coll,
+ info_struct_v < 8 ? coll_t::meta() : coll,
info_struct_v < 8 ? OSD::make_pg_log_oid(pg_id) : pgmeta_oid,
info, oss);
if (oss.str().length())
#define dout_subsys ceph_subsys_osd
-static coll_t META_COLL;
-
//////////////////// PGLog::IndexedLog ////////////////////
void PGLog::IndexedLog::advance_rollback_info_trimmed_to(
calc_str();
}
+ // named constructors
+ static coll_t meta() {
+ return coll_t();
+ }
+ static coll_t pg(spg_t p) {
+ return coll_t(p);
+ }
+
const std::string& to_str() const {
return _str;
}
#undef dout_prefix
#define dout_prefix *_dout << "ceph_test_objectstore_state "
-const coll_t TestObjectStoreState::META_COLL;
-
void TestObjectStoreState::init(int colls, int objs)
{
dout(5) << "init " << colls << " colls " << objs << " objs" << dendl;
ObjectStore::Transaction *t;
t = new ObjectStore::Transaction;
- t->create_collection(META_COLL);
+ t->create_collection(coll_t::meta());
m_store->apply_transaction(*t);
wait_for_ready();
::encode(num_objs, hint);
t->collection_hint(entry->m_coll, ObjectStore::Transaction::COLL_HINT_EXPECTED_NUM_OBJECTS, hint);
dout(5) << "give collection hint, number of objects per collection: " << num_objs << dendl;
- t->touch(META_COLL, entry->m_meta_obj);
+ t->touch(coll_t::meta(), entry->m_meta_obj);
for (int i = 0; i < objs; i++) {
hobject_t *obj = entry->touch_obj(i + baseid);
hobject_t *get_obj_at(int pos, bool remove, int *key = NULL);
};
- /* kept in upper case for consistency with coll_t's */
- static const coll_t META_COLL;
- static const coll_t TEMP_COLL;
-
protected:
boost::shared_ptr<ObjectStore> m_store;
map<int, coll_entry_t*> m_collections;
hobject_t log_obj = entry->m_meta_obj;
dout(2) << __func__ << " coll " << entry->m_coll << " "
- << META_COLL << " /" << log_obj << " (" << bl.length() << ")" << dendl;
+ << coll_t::meta() << " /" << log_obj << " (" << bl.length() << ")" << dendl;
if (m_do_stats && (stat != NULL))
stat->written_data += bl.length();
uint64_t s = pg_log_size[entry->m_coll];
- t->write(META_COLL, log_obj, s, bl.length(), bl);
+ t->write(coll_t::meta(), log_obj, s, bl.length(), bl);
pg_log_size[entry->m_coll] += bl.length();
}
}
t->remove_collection(entry->m_coll);
- t->remove(META_COLL, entry->m_meta_obj);
+ t->remove(coll_t::meta(), entry->m_meta_obj);
}
TestObjectStoreState::coll_entry_t
dout(2) << __func__ << " id " << entry->m_id << " coll " << entry->m_coll << dendl;
t->create_collection(entry->m_coll);
- dout(2) << __func__ << " meta " << META_COLL << "/" << entry->m_meta_obj << dendl;
- t->touch(META_COLL, entry->m_meta_obj);
+ dout(2) << __func__ << " meta " << coll_t::meta() << "/" << entry->m_meta_obj << dendl;
+ t->touch(coll_t::meta(), entry->m_meta_obj);
return entry;
}
namespace po = boost::program_options;
using namespace std;
-static coll_t META_COLL;
-
#ifdef INTERNAL_TEST
CompatSet get_test_compat_set() {
CompatSet::FeatureSet ceph_osd_feature_compat;
ostringstream oss;
assert(struct_ver > 0);
PGLog::read_log(fs, coll,
- struct_ver >= 8 ? coll : META_COLL,
+ struct_ver >= 8 ? coll : coll_t::meta(),
struct_ver >= 8 ? pgid.make_pgmeta_oid() : log_oid,
info, divergent_priors, log, missing, oss);
if (debug && oss.str().size())
bufferlist one;
one.append('1');
t->collection_setattr(coll, "remove", one);
- cout << "remove " << META_COLL << " " << log_oid.hobj.oid << std::endl;
- t->remove(META_COLL, log_oid);
- cout << "remove " << META_COLL << " " << biginfo_oid.oid << std::endl;
- t->remove(META_COLL, biginfo_oid);
+ cout << "remove " << coll_t::meta() << " " << log_oid.hobj.oid << std::endl;
+ t->remove(coll_t::meta(), log_oid);
+ cout << "remove " << coll_t::meta() << " " << biginfo_oid.oid << std::endl;
+ t->remove(coll_t::meta(), biginfo_oid);
} else {
// new omap key
cout << "setting '_remove' omap key" << std::endl;
int get_osdmap(ObjectStore *store, epoch_t e, OSDMap &osdmap, bufferlist& bl)
{
bool found = store->read(
- META_COLL, OSD::get_osdmap_pobject_name(e), 0, 0, bl) >= 0;
+ coll_t::meta(), OSD::get_osdmap_pobject_name(e), 0, 0, bl) >= 0;
if (!found) {
cerr << "Can't find OSDMap for pg epoch " << e << std::endl;
return -ENOENT;
bufferlist bl;
OSDSuperblock superblock;
bufferlist::iterator p;
- ret = fs->read(META_COLL, OSD_SUPERBLOCK_POBJECT, 0, 0, bl);
+ ret = fs->read(coll_t::meta(), OSD_SUPERBLOCK_POBJECT, 0, 0, bl);
if (ret < 0) {
cerr << "Failure to read OSD superblock: " << cpp_strerror(ret) << std::endl;
goto out;
ObjectStore::Transaction t;
bl.clear();
::encode(superblock, bl);
- t.write(META_COLL, OSD_SUPERBLOCK_POBJECT, 0, bl.length(), bl);
+ t.write(coll_t::meta(), OSD_SUPERBLOCK_POBJECT, 0, bl.length(), bl);
ret = fs->apply_transaction(t);
if (ret < 0) {
cerr << "Error writing OSD superblock: " << cpp_strerror(ret) << std::endl;