PG *pg = _open_lock_pg(pgid);
// create collection
- assert(!store->collection_exists(pgid.to_coll()));
- t.create_collection(pgid.to_coll());
+ assert(!store->collection_exists(coll_t::build_pg_coll(pgid)));
+ t.create_collection(coll_t::build_pg_coll(pgid));
pg->write_info(t);
pg->write_log(t);
PG *pg = _open_lock_pg(pgid, true);
- assert(!store->collection_exists(pgid.to_coll()));
- t.create_collection(pgid.to_coll());
+ assert(!store->collection_exists(coll_t::build_pg_coll(pgid)));
+ t.create_collection(coll_t::build_pg_coll(pgid));
pg->set_role(0);
pg->acting.swap(acting);
it++) {
if (*it == 0)
continue;
- if (it->snap != 0)
+ if (it->snap != CEPH_NOSNAP)
continue;
pg_t pgid = it->pgid;
PG *pg = _open_lock_pg(pgid);
pg_t parentid = parent->info.pgid;
vector<sobject_t> olist;
- store->collection_list(parent->info.pgid.to_coll(), olist);
+ store->collection_list(coll_t::build_pg_coll(parent->info.pgid), olist);
for (vector<sobject_t>::iterator p = olist.begin(); p != olist.end(); p++) {
sobject_t poid = *p;
bufferlist bv;
struct stat st;
- store->stat(parentid.to_coll(), poid, &st);
- store->getattr(parentid.to_coll(), poid, OI_ATTR, bv);
+ store->stat(coll_t::build_pg_coll(parentid), poid, &st);
+ store->getattr(coll_t::build_pg_coll(parentid), poid, OI_ATTR, bv);
object_info_t oi(bv);
if (oi.version > child->info.last_update) {
dout(25) << " not tagging pg with v " << oi.version << " <= " << child->info.last_update << dendl;
}
- t.collection_add(pgid.to_coll(), parentid.to_coll(), poid);
- t.collection_remove(parentid.to_coll(), poid);
+ t.collection_add(coll_t::build_pg_coll(pgid), coll_t::build_pg_coll(parentid), poid);
+ t.collection_remove(coll_t::build_pg_coll(parentid), poid);
if (oi.snaps.size()) {
snapid_t first = oi.snaps[0];
- t.collection_add(pgid.to_snap_coll(first), parentid.to_coll(), poid);
- t.collection_remove(parentid.to_snap_coll(first), poid);
+ t.collection_add(coll_t::build_snap_pg_coll(pgid, first), coll_t::build_pg_coll(parentid), poid);
+ t.collection_remove(coll_t::build_snap_pg_coll(parentid, first), poid);
if (oi.snaps.size() > 1) {
snapid_t last = oi.snaps[oi.snaps.size()-1];
- t.collection_add(pgid.to_snap_coll(last), parentid.to_coll(), poid);
- t.collection_remove(parentid.to_snap_coll(last), poid);
+ t.collection_add(coll_t::build_snap_pg_coll(pgid, last), coll_t::build_pg_coll(parentid), poid);
+ t.collection_remove(coll_t::build_snap_pg_coll(parentid, last), poid);
}
}
p != pg->snap_collections.end();
p++) {
vector<sobject_t> olist;
- store->collection_list(pgid.to_snap_coll(*p), olist);
+ store->collection_list(coll_t::build_snap_pg_coll(pgid, *p), olist);
dout(10) << "_remove_pg " << pgid << " snap " << *p << " " << olist.size() << " objects" << dendl;
for (vector<sobject_t>::iterator q = olist.begin();
q != olist.end();
q++) {
ObjectStore::Transaction t;
- t.remove(pgid.to_snap_coll(*p), *q);
- t.remove(pgid.to_coll(), *q); // we may hit this twice, but it's harmless
+ t.remove(coll_t::build_snap_pg_coll(pgid, *p), *q);
+ t.remove(coll_t::build_pg_coll(pgid), *q); // we may hit this twice, but it's harmless
store->apply_transaction(t);
if ((++n & 0xff) == 0) {
}
}
ObjectStore::Transaction t;
- t.remove_collection(pgid.to_snap_coll(*p));
+ t.remove_collection(coll_t::build_snap_pg_coll(pgid, *p));
store->apply_transaction(t);
}
// (what remains of the) main collection
vector<sobject_t> olist;
- store->collection_list(pgid.to_coll(), olist);
+ store->collection_list(coll_t::build_pg_coll(pgid), olist);
dout(10) << "_remove_pg " << pgid << " " << olist.size() << " objects" << dendl;
for (vector<sobject_t>::iterator p = olist.begin();
p != olist.end();
p++) {
ObjectStore::Transaction t;
- t.remove(pgid.to_coll(), *p);
+ t.remove(coll_t::build_pg_coll(pgid), *p);
store->apply_transaction(t);
if ((++n & 0xff) == 0) {
{
ObjectStore::Transaction t;
- t.remove_collection(pgid.to_coll());
+ t.remove_collection(coll_t::build_pg_coll(pgid));
store->apply_transaction(t);
}
dout(20) << "merge_old_entry had " << oe << " new dne : ok" << dendl;
} else {
dout(20) << "merge_old_entry had " << oe << " new dne : deleting" << dendl;
- t.remove(info.pgid.to_coll(), oe.soid);
+ t.remove(coll_t::build_pg_coll(info.pgid), oe.soid);
missing.rm(oe.soid, oe.version);
}
}
dout(20) << "merge_log merging " << ne << dendl;
missing.add_next_event(ne);
if (ne.is_delete())
- t.remove(info.pgid.to_coll(), ne.soid);
+ t.remove(coll_t::build_pg_coll(info.pgid), ne.soid);
}
// find any divergent or removed items in old log.
log.index(ne);
missing.add_next_event(ne);
if (ne.is_delete())
- t.remove(info.pgid.to_coll(), ne.soid);
+ t.remove(coll_t::build_pg_coll(info.pgid), ne.soid);
}
// move aside divergent items
unlock();
vector<sobject_t> olist;
- osd->store->collection_list(info.pgid.to_coll(), olist);
+ osd->store->collection_list(coll_t::build_pg_coll(info.pgid), olist);
for (vector<sobject_t>::iterator it = olist.begin();
it != olist.end();
Log::Entry e;
e.soid = poid;
bufferlist bv;
- int r = osd->store->getattr(info.pgid.to_coll(), poid, OI_ATTR, bv);
+ int r = osd->store->getattr(coll_t::build_pg_coll(info.pgid), poid, OI_ATTR, bv);
if (r < 0)
continue; // musta just been deleted!
object_info_t oi(bv);
bufferlist infobl;
::encode(info, infobl);
dout(20) << "write_info info " << infobl.length() << dendl;
- t.collection_setattr(info.pgid.to_coll(), "info", infobl);
+ t.collection_setattr(coll_t::build_pg_coll(info.pgid), "info", infobl);
// local state
bufferlist snapbl;
::encode(snap_collections, snapbl);
dout(20) << "write_info snap " << snapbl.length() << dendl;
- t.collection_setattr(info.pgid.to_coll(), "snap_collections", snapbl);
+ t.collection_setattr(coll_t::build_pg_coll(info.pgid), "snap_collections", snapbl);
bufferlist ki;
::encode(past_intervals, ki);
dout(20) << "write_info pastintervals " << ki.length() << dendl;
- t.collection_setattr(info.pgid.to_coll(), "past_intervals", ki);
+ t.collection_setattr(coll_t::build_pg_coll(info.pgid), "past_intervals", ki);
dirty_info = false;
}
bufferlist blb(sizeof(ondisklog));
::encode(ondisklog, blb);
- t.collection_setattr(info.pgid.to_coll(), "ondisklog", blb);
+ t.collection_setattr(coll_t::build_pg_coll(info.pgid), "ondisklog", blb);
dout(10) << "write_log to " << ondisklog.tail << "~" << ondisklog.length() << dendl;
dirty_log = false;
bufferlist blb(sizeof(ondisklog));
::encode(ondisklog, blb);
- t.collection_setattr(info.pgid.to_coll(), "ondisklog", blb);
+ t.collection_setattr(coll_t::build_pg_coll(info.pgid), "ondisklog", blb);
if (!g_conf.osd_preserve_trimmed_log)
t.zero(0, log_oid, 0, ondisklog.tail & ~4095);
bufferlist blb(sizeof(ondisklog));
::encode(ondisklog, blb);
- t.collection_setattr(info.pgid.to_coll(), "ondisklog", blb);
+ t.collection_setattr(coll_t::build_pg_coll(info.pgid), "ondisklog", blb);
dout(10) << "append_log now " << ondisklog.tail << "~" << ondisklog.length() << dendl;
}
ondisklog.tail = ondisklog.head = 0;
bufferlist blb;
- store->collection_getattr(info.pgid.to_coll(), "ondisklog", blb);
+ store->collection_getattr(coll_t::build_pg_coll(info.pgid), "ondisklog", blb);
bufferlist::iterator p = blb.begin();
::decode(ondisklog, p);
bufferlist bv;
struct stat st;
- int r = osd->store->getattr(info.pgid.to_coll(), i->soid, OI_ATTR, bv);
+ int r = osd->store->getattr(coll_t::build_pg_coll(info.pgid), i->soid, OI_ATTR, bv);
if (r >= 0) {
object_info_t oi(bv);
if (oi.version < i->version) {
missing.add(i->soid, i->version, oi.version);
}
} else if (i->soid.snap == CEPH_NOSNAP &&
- osd->store->stat(info.pgid.to_coll(), i->soid, &st) == 0) {
+ osd->store->stat(coll_t::build_pg_coll(info.pgid), i->soid, &st) == 0) {
dout(0) << "read_log rebuilding missing xattr on " << *i << dendl;
object_info_t oi(i->soid);
oi.version = i->version;
bufferlist bl;
::encode(oi, bl);
ObjectStore::Transaction t;
- t.setattr(info.pgid.to_coll(), i->soid, OI_ATTR, bl);
+ t.setattr(coll_t::build_pg_coll(info.pgid), i->soid, OI_ATTR, bl);
osd->store->apply_transaction(t);
stringstream ss;
bufferlist::iterator p;
// info
- store->collection_getattr(info.pgid.to_coll(), "info", bl);
+ store->collection_getattr(coll_t::build_pg_coll(info.pgid), "info", bl);
p = bl.begin();
::decode(info, p);
// snap_collections
bl.clear();
- store->collection_getattr(info.pgid.to_coll(), "snap_collections", bl);
+ store->collection_getattr(coll_t::build_pg_coll(info.pgid), "snap_collections", bl);
p = bl.begin();
::decode(snap_collections, p);
// past_intervals
bl.clear();
- store->collection_getattr(info.pgid.to_coll(), "past_intervals", bl);
+ store->collection_getattr(coll_t::build_pg_coll(info.pgid), "past_intervals", bl);
if (bl.length()) {
p = bl.begin();
::decode(past_intervals, p);
coll_t PG::make_snap_collection(ObjectStore::Transaction& t, snapid_t s)
{
- coll_t c = info.pgid.to_snap_coll(s);
+ coll_t c = coll_t::build_snap_pg_coll(info.pgid, s);
if (snap_collections.count(s) == 0) {
snap_collections.insert(s);
dout(10) << "create_snap_collection " << c << ", set now " << snap_collections << dendl;
bufferlist bl;
::encode(snap_collections, bl);
- t.collection_setattr(info.pgid.to_coll(), "snap_collections", bl);
+ t.collection_setattr(coll_t::build_pg_coll(info.pgid), "snap_collections", bl);
t.create_collection(c);
}
return c;
void PG::build_scrub_map(ScrubMap &map)
{
dout(10) << "build_scrub_map" << dendl;
- coll_t c = info.pgid.to_coll();
+ coll_t c = coll_t::build_pg_coll(info.pgid);
// objects
vector<sobject_t> ls;
PGLSResponse response;
response.handle = (collection_list_handle_t)(__u64)(p->op.pgls_cookie);
vector<sobject_t> sentries;
- result = osd->store->collection_list_partial(info.pgid.to_coll(), snapid,
+ result = osd->store->collection_list_partial(coll_t::build_pg_coll(info.pgid), snapid,
sentries, p->op.length,
&response.handle);
if (result == 0) {
// skip items not defined for this snapshot
if (iter->snap == CEPH_NOSNAP) {
bufferlist bl;
- osd->store->getattr(info.pgid.to_coll(), *iter, SS_ATTR, bl);
+ osd->store->getattr(coll_t::build_pg_coll(info.pgid), *iter, SS_ATTR, bl);
SnapSet snapset(bl);
if (snapid <= snapset.seq)
continue;
} else {
bufferlist bl;
- osd->store->getattr(info.pgid.to_coll(), *iter, OI_ATTR, bl);
+ osd->store->getattr(coll_t::build_pg_coll(info.pgid), *iter, OI_ATTR, bl);
object_info_t oi(bl);
bool exists = false;
for (vector<snapid_t>::iterator i = oi.snaps.begin(); i != oi.snaps.end(); ++i)
while (info.snap_trimq.size() &&
is_active()) {
snapid_t sn = *info.snap_trimq.begin();
- coll_t c = info.pgid.to_snap_coll(sn);
+ coll_t c = coll_t::build_snap_pg_coll(info.pgid, sn);
vector<sobject_t> ls;
osd->store->collection_list(c, ls);
if (ls.size() != info.stats.num_objects)
// load clone info
bufferlist bl;
- osd->store->getattr(info.pgid.to_coll(), coid, OI_ATTR, bl);
+ osd->store->getattr(coll_t::build_pg_coll(info.pgid), coid, OI_ATTR, bl);
object_info_t coi(bl);
// get snap set context
if (newsnaps.empty()) {
// remove clone
dout(10) << coid << " snaps " << snaps << " -> " << newsnaps << " ... deleting" << dendl;
- t.remove(info.pgid.to_coll(), coid);
- t.collection_remove(info.pgid.to_snap_coll(snaps[0]), coid);
+ t.remove(coll_t::build_pg_coll(info.pgid), coid);
+ t.collection_remove(coll_t::build_snap_pg_coll(info.pgid, snaps[0]), coid);
if (snaps.size() > 1)
- t.collection_remove(info.pgid.to_snap_coll(snaps[snaps.size()-1]), coid);
+ t.collection_remove(coll_t::build_snap_pg_coll(info.pgid, snaps[snaps.size()-1]), coid);
// ...from snapset
snapid_t last = coid.snap;
coi.snaps.swap(newsnaps);
bl.clear();
::encode(coi, bl);
- t.setattr(info.pgid.to_coll(), coid, OI_ATTR, bl);
+ t.setattr(coll_t::build_pg_coll(info.pgid), coid, OI_ATTR, bl);
if (snaps[0] != newsnaps[0]) {
- t.collection_remove(info.pgid.to_snap_coll(snaps[0]), coid);
- t.collection_add(info.pgid.to_snap_coll(newsnaps[0]), info.pgid.to_coll(), coid);
+ t.collection_remove(coll_t::build_snap_pg_coll(info.pgid, snaps[0]), coid);
+ t.collection_add(coll_t::build_snap_pg_coll(info.pgid, newsnaps[0]), coll_t::build_pg_coll(info.pgid), coid);
}
if (snaps.size() > 1 && snaps[snaps.size()-1] != newsnaps[newsnaps.size()-1]) {
- t.collection_remove(info.pgid.to_snap_coll(snaps[snaps.size()-1]), coid);
+ t.collection_remove(coll_t::build_snap_pg_coll(info.pgid, snaps[snaps.size()-1]), coid);
if (newsnaps.size() > 1)
- t.collection_add(info.pgid.to_snap_coll(newsnaps[newsnaps.size()-1]), info.pgid.to_coll(), coid);
+ t.collection_add(coll_t::build_snap_pg_coll(info.pgid, newsnaps[newsnaps.size()-1]), coll_t::build_pg_coll(info.pgid), coid);
}
}
sobject_t snapoid(coid.oid, snapset.head_exists ? CEPH_NOSNAP:CEPH_SNAPDIR);
if (snapset.clones.empty() && !snapset.head_exists) {
dout(10) << coid << " removing " << snapoid << dendl;
- t.remove(info.pgid.to_coll(), snapoid);
+ t.remove(coll_t::build_pg_coll(info.pgid), snapoid);
} else {
bl.clear();
::encode(snapset, bl);
- t.setattr(info.pgid.to_coll(), snapoid, SS_ATTR, bl);
+ t.setattr(coll_t::build_pg_coll(info.pgid), snapoid, SS_ATTR, bl);
}
osd->store->apply_transaction(t);
{
// read into a buffer
bufferlist bl;
- int r = osd->store->read(info.pgid.to_coll(), soid, op.offset, op.length, bl);
+ int r = osd->store->read(coll_t::build_pg_coll(info.pgid), soid, op.offset, op.length, bl);
if (odata.length() == 0)
ctx->data_off = op.offset;
odata.claim(bl);
{
struct stat st;
memset(&st, sizeof(st), 0);
- result = osd->store->stat(info.pgid.to_coll(), soid, &st);
+ result = osd->store->stat(coll_t::build_pg_coll(info.pgid), soid, &st);
if (result >= 0) {
__u64 size = st.st_size;
::encode(size, odata);
nstring name(op.name_len + 1);
name[0] = '_';
bp.copy(op.name_len, name.data()+1);
- int r = osd->store->getattr(info.pgid.to_coll(), soid, name.c_str(), odata);
+ int r = osd->store->getattr(coll_t::build_pg_coll(info.pgid), soid, name.c_str(), odata);
if (r >= 0) {
op.value_len = r;
result = 0;
case CEPH_OSD_OP_GETXATTRS:
{
map<nstring,bufferptr> attrset;
- result = osd->store->getattrs(info.pgid.to_coll(), soid, attrset, true);
+ result = osd->store->getattrs(coll_t::build_pg_coll(info.pgid), soid, attrset, true);
map<nstring, bufferptr>::iterator iter;
map<nstring, bufferlist> newattrs;
for (iter = attrset.begin(); iter != attrset.end(); ++iter) {
if (op.length) {
bufferlist nbl;
bp.copy(op.length, nbl);
- t.write(info.pgid.to_coll(), soid, op.offset, op.length, nbl);
+ t.write(coll_t::build_pg_coll(info.pgid), soid, op.offset, op.length, nbl);
} else {
- t.touch(info.pgid.to_coll(), soid);
+ t.touch(coll_t::build_pg_coll(info.pgid), soid);
}
if (ssc->snapset.clones.size()) {
snapid_t newest = *ssc->snapset.clones.rbegin();
{ // write full object
bufferlist nbl;
bp.copy(op.length, nbl);
- t.truncate(info.pgid.to_coll(), soid, 0);
- t.write(info.pgid.to_coll(), soid, op.offset, op.length, nbl);
+ t.truncate(coll_t::build_pg_coll(info.pgid), soid, 0);
+ t.write(coll_t::build_pg_coll(info.pgid), soid, op.offset, op.length, nbl);
if (ssc->snapset.clones.size()) {
snapid_t newest = *ssc->snapset.clones.rbegin();
ssc->snapset.clone_overlap.erase(newest);
{ // zero
assert(op.length);
if (!ctx->obs->exists)
- t.touch(info.pgid.to_coll(), soid);
- t.zero(info.pgid.to_coll(), soid, op.offset, op.length);
+ t.touch(coll_t::build_pg_coll(info.pgid), soid);
+ t.zero(coll_t::build_pg_coll(info.pgid), soid, op.offset, op.length);
if (ssc->snapset.clones.size()) {
snapid_t newest = *ssc->snapset.clones.rbegin();
interval_set<__u64> ch;
if (ctx->obs->exists && (flags & CEPH_OSD_OP_FLAG_EXCL))
result = -EEXIST; /* this is an exclusive create */
else {
- t.touch(info.pgid.to_coll(), soid);
+ t.touch(coll_t::build_pg_coll(info.pgid), soid);
ssc->snapset.head_exists = true;
}
}
case CEPH_OSD_OP_TRUNCATE:
{ // truncate
if (!ctx->obs->exists)
- t.touch(info.pgid.to_coll(), soid);
- t.truncate(info.pgid.to_coll(), soid, op.offset);
+ t.touch(coll_t::build_pg_coll(info.pgid), soid);
+ t.truncate(coll_t::build_pg_coll(info.pgid), soid, op.offset);
if (ssc->snapset.clones.size()) {
snapid_t newest = *ssc->snapset.clones.rbegin();
interval_set<__u64> trim;
case CEPH_OSD_OP_DELETE:
{ // delete
- t.remove(info.pgid.to_coll(), soid); // no clones, delete!
+ t.remove(coll_t::build_pg_coll(info.pgid), soid); // no clones, delete!
if (ssc->snapset.clones.size()) {
snapid_t newest = *ssc->snapset.clones.rbegin();
add_interval_usage(ssc->snapset.clone_overlap[newest], info.stats);
case CEPH_OSD_OP_SETXATTR:
{
if (!ctx->obs->exists)
- t.touch(info.pgid.to_coll(), soid);
+ t.touch(coll_t::build_pg_coll(info.pgid), soid);
nstring name(op.name_len + 1);
name[0] = '_';
bp.copy(op.name_len, name.data()+1);
bufferlist bl;
bp.copy(op.value_len, bl);
if (!ctx->obs->exists) // create object if it doesn't yet exist.
- t.touch(info.pgid.to_coll(), soid);
- t.setattr(info.pgid.to_coll(), soid, name, bl);
+ t.touch(coll_t::build_pg_coll(info.pgid), soid);
+ t.setattr(coll_t::build_pg_coll(info.pgid), soid, name, bl);
ssc->snapset.head_exists = true;
info.stats.num_wr++;
}
nstring name(op.name_len + 1);
name[0] = '_';
bp.copy(op.name_len, name.data()+1);
- t.rmattr(info.pgid.to_coll(), soid, name);
+ t.rmattr(coll_t::build_pg_coll(info.pgid), soid, name);
info.stats.num_wr++;
}
break;
bufferlist bv;
::encode(*poi, bv);
- t.clone(info.pgid.to_coll(), head, coid);
- t.setattr(info.pgid.to_coll(), coid, OI_ATTR, bv);
+ t.clone(coll_t::build_pg_coll(info.pgid), head, coid);
+ t.setattr(coll_t::build_pg_coll(info.pgid), coid, OI_ATTR, bv);
}
void ReplicatedPG::make_writeable(OpContext *ctx)
// add to snap bound collections
coll_t fc = make_snap_collection(t, snaps[0]);
- t.collection_add(fc, info.pgid.to_coll(), coid);
+ t.collection_add(fc, coll_t::build_pg_coll(info.pgid), coid);
if (snaps.size() > 1) {
coll_t lc = make_snap_collection(t, snaps[snaps.size()-1]);
- t.collection_add(lc, info.pgid.to_coll(), coid);
+ t.collection_add(lc, coll_t::build_pg_coll(info.pgid), coid);
}
info.stats.num_objects++;
bufferlist bv(sizeof(*poi));
::encode(*poi, bv);
- ctx->op_t.setattr(info.pgid.to_coll(), soid, OI_ATTR, bv);
+ ctx->op_t.setattr(coll_t::build_pg_coll(info.pgid), soid, OI_ATTR, bv);
dout(10) << " final snapset " << ctx->obs->ssc->snapset
<< " in " << soid << dendl;
- ctx->op_t.setattr(info.pgid.to_coll(), soid, SS_ATTR, bss);
+ ctx->op_t.setattr(coll_t::build_pg_coll(info.pgid), soid, SS_ATTR, bss);
if (!head_existed) {
// if we logically recreated the head, remove old _snapdir object
sobject_t snapoid(soid.oid, CEPH_SNAPDIR);
- ctx->op_t.remove(info.pgid.to_coll(), snapoid);
+ ctx->op_t.remove(coll_t::build_pg_coll(info.pgid), snapoid);
dout(10) << " removing old " << snapoid << dendl;
}
} else if (ctx->obs->ssc->snapset.clones.size()) {
sobject_t snapoid(soid.oid, CEPH_SNAPDIR);
dout(10) << " final snapset " << ctx->obs->ssc->snapset
<< " in " << snapoid << dendl;
- ctx->op_t.touch(info.pgid.to_coll(), snapoid);
- ctx->op_t.setattr(info.pgid.to_coll(), snapoid, SS_ATTR, bss);
+ ctx->op_t.touch(coll_t::build_pg_coll(info.pgid), snapoid);
+ ctx->op_t.setattr(coll_t::build_pg_coll(info.pgid), snapoid, SS_ATTR, bss);
}
// append to log
} else {
// check disk
bufferlist bv;
- int r = osd->store->getattr(info.pgid.to_coll(), soid, OI_ATTR, bv);
+ int r = osd->store->getattr(coll_t::build_pg_coll(info.pgid), soid, OI_ATTR, bv);
if (r < 0 && !can_create)
return 0; // -ENOENT!
} else {
bufferlist bv;
sobject_t head(oid, CEPH_NOSNAP);
- int r = osd->store->getattr(info.pgid.to_coll(), head, SS_ATTR, bv);
+ int r = osd->store->getattr(coll_t::build_pg_coll(info.pgid), head, SS_ATTR, bv);
if (r < 0) {
// try _snapset
sobject_t snapdir(oid, CEPH_SNAPDIR);
bufferlist bv;
- int r = osd->store->getattr(info.pgid.to_coll(), snapdir, SS_ATTR, bv);
+ int r = osd->store->getattr(coll_t::build_pg_coll(info.pgid), snapdir, SS_ATTR, bv);
if (r < 0 && !can_create)
return NULL;
}
} else {
// make sure i exist and am balanced, otherwise fw back to acker.
bool b;
- if (!osd->store->exists(info.pgid.to_coll(), soid) ||
- osd->store->getattr(info.pgid.to_coll(), soid, "balance-reads", &b, 1) < 0) {
+ if (!osd->store->exists(coll_t::build_pg_coll(info.pgid), soid) ||
+ osd->store->getattr(coll_t::build_pg_coll(info.pgid), soid, "balance-reads", &b, 1) < 0) {
dout(-10) << "read on replica, object " << soid
<< " dne or no balance-reads, fw back to primary" << dendl;
osd->messenger->forward_message(op, osd->osdmap->get_inst(get_primary()));
// balance-reads set?
char v;
if ((op->get_op() != CEPH_OSD_OP_BALANCEREADS && op->get_op() != CEPH_OSD_OP_UNBALANCEREADS) &&
- (osd->store->getattr(info.pgid.to_coll(), soid, "balance-reads", &v, 1) >= 0 ||
+ (osd->store->getattr(coll_t::build_pg_coll(info.pgid), soid, "balance-reads", &v, 1) >= 0 ||
balancing_reads.count(soid.oid))) {
if (!unbalancing_reads.count(soid.oid)) {
<< " clone_overlap " << snapset.clone_overlap << dendl;
struct stat st;
- osd->store->stat(info.pgid.to_coll(), head, &st);
+ osd->store->stat(coll_t::build_pg_coll(info.pgid), head, &st);
interval_set<__u64> cloning;
interval_set<__u64> prev;
// get size
struct stat st;
- int r = osd->store->stat(info.pgid.to_coll(), soid, &st);
+ int r = osd->store->stat(coll_t::build_pg_coll(info.pgid), soid, &st);
assert(r == 0);
map<sobject_t, interval_set<__u64> > clone_subsets;
interval_set<__u64> data_subset;
bufferlist bv;
- r = osd->store->getattr(info.pgid.to_coll(), soid, OI_ATTR, bv);
+ r = osd->store->getattr(coll_t::build_pg_coll(info.pgid), soid, OI_ATTR, bv);
assert(r >= 0);
object_info_t oi(bv);
if (data_subset.size() || clone_subsets.size()) {
struct stat st;
- int r = osd->store->stat(info.pgid.to_coll(), soid, &st);
+ int r = osd->store->stat(coll_t::build_pg_coll(info.pgid), soid, &st);
assert(r == 0);
size = st.st_size;
p != data_subset.m.end();
p++) {
bufferlist bit;
- osd->store->read(info.pgid.to_coll(), soid, p->first, p->second, bit);
+ osd->store->read(coll_t::build_pg_coll(info.pgid), soid, p->first, p->second, bit);
bl.claim_append(bit);
}
} else {
- osd->store->read(info.pgid.to_coll(), soid, 0, 0, bl);
+ osd->store->read(coll_t::build_pg_coll(info.pgid), soid, 0, 0, bl);
size = bl.length();
}
- osd->store->getattrs(info.pgid.to_coll(), soid, attrset);
+ osd->store->getattrs(coll_t::build_pg_coll(info.pgid), soid, attrset);
bufferlist bv;
bv.push_back(attrset[OI_ATTR]);
// write object and add it to the PG
ObjectStore::Transaction t;
- t.remove(info.pgid.to_coll(), soid); // in case old version exists
+ t.remove(coll_t::build_pg_coll(info.pgid), soid); // in case old version exists
__u64 boff = 0;
for (map<sobject_t, interval_set<__u64> >::iterator p = clone_subsets.begin();
q != p->second.m.end();
q++) {
dout(15) << " clone_range " << p->first << " " << q->first << "~" << q->second << dendl;
- t.clone_range(info.pgid.to_coll(), soid, p->first, q->first, q->second);
+ t.clone_range(coll_t::build_pg_coll(info.pgid), soid, p->first, q->first, q->second);
}
for (map<__u64,__u64>::iterator p = data_subset.m.begin();
p != data_subset.m.end();
p++) {
bufferlist bit;
bit.substr_of(data, boff, p->second);
- t.write(info.pgid.to_coll(), soid, p->first, p->second, bit);
+ t.write(coll_t::build_pg_coll(info.pgid), soid, p->first, p->second, bit);
dout(15) << " write " << p->first << "~" << p->second << dendl;
boff += p->second;
}
if (data_subset.empty())
- t.touch(info.pgid.to_coll(), soid);
+ t.touch(coll_t::build_pg_coll(info.pgid), soid);
- t.setattrs(info.pgid.to_coll(), soid, op->attrset);
+ t.setattrs(coll_t::build_pg_coll(info.pgid), soid, op->attrset);
if (soid.snap && soid.snap < CEPH_NOSNAP &&
op->attrset.count(OI_ATTR)) {
bufferlist bl;
object_info_t oi(bl);
if (oi.snaps.size()) {
coll_t lc = make_snap_collection(t, oi.snaps[0]);
- t.collection_add(lc, info.pgid.to_coll(), soid);
+ t.collection_add(lc, coll_t::build_pg_coll(info.pgid), soid);
if (oi.snaps.size() > 1) {
coll_t hc = make_snap_collection(t, oi.snaps[oi.snaps.size()-1]);
- t.collection_add(hc, info.pgid.to_coll(), soid);
+ t.collection_add(hc, coll_t::build_pg_coll(info.pgid), soid);
}
}
}
// be thorough.
vector<sobject_t> ls;
- osd->store->collection_list(info.pgid.to_coll(), ls);
+ osd->store->collection_list(coll_t::build_pg_coll(info.pgid), ls);
if (ls.size() != info.stats.num_objects)
dout(10) << " WARNING: " << ls.size() << " != num_objects " << info.stats.num_objects << dendl;
if (s.count(p->soid)) {
dout(10) << " deleting " << p->soid
<< " when " << p->version << dendl;
- t.remove(info.pgid.to_coll(), p->soid);
+ t.remove(coll_t::build_pg_coll(info.pgid), p->soid);
}
s.erase(p->soid);
} else {
i != s.end();
i++) {
dout(10) << " deleting stray " << *i << dendl;
- t.remove(info.pgid.to_coll(), *i);
+ t.remove(coll_t::build_pg_coll(info.pgid), *i);
}
} else {
if (p->is_delete()) {
dout(10) << " deleting " << p->soid
<< " when " << p->version << dendl;
- t.remove(info.pgid.to_coll(), p->soid);
+ t.remove(coll_t::build_pg_coll(info.pgid), p->soid);
} else {
// keep old(+missing) objects, just for kicks.
}
{
dout(10) << "_scrub" << dendl;
- coll_t c = info.pgid.to_coll();
+ coll_t c = coll_t::build_pg_coll(info.pgid);
bool repair = state_test(PG_STATE_REPAIR);
const char *mode = repair ? "repair":"scrub";