pg->set_role(0);
pg->acting.swap(acting);
pg->info.history.epoch_created =
- pg->info.history.last_epoch_started =
- pg->info.history.same_since =
- pg->info.history.same_primary_since =
+ pg->info.history.last_epoch_started =
+ pg->info.history.same_since =
+ pg->info.history.same_primary_since =
pg->info.history.same_acker_since = osdmap->get_epoch();
pg->write_log(t);
PG *pg = _open_lock_pg(pgid);
// read pg info
- store->collection_getattr(pgid, "info", &pg->info, sizeof(pg->info));
+ bufferlist bl;
+ store->collection_getattr(pgid, "info", bl);
+ bufferlist::iterator p = bl.begin();
+ ::decode(pg->info, p);
// read pg log
pg->read_log(store);
i++) {
pg_t pgid = i->first;
PG *pg = i->second;
- t.collection_setattr( pgid, "info", &pg->info, sizeof(pg->info));
+ bufferlist bl;
+ ::encode(pg->info, bl);
+ t.collection_setattr( pgid, "info", bl );
}
// superblock and commit
PG *pg = q->second;
// fix up pg metadata
pg->info.last_complete = pg->info.last_update;
- t.collection_setattr(pg->info.pgid, "info", (char*)&pg->info, sizeof(pg->info));
+ bufferlist bl;
+ ::encode(pg->info, bl);
+ t.collection_setattr(pg->info.pgid, "info", bl);
pg->write_log(t);
wake_pg_waiters(pg->info.pgid);
assert(info.last_complete >= log.bottom || log.backlog);
// write pg info
- t.collection_setattr(info.pgid, "info", (char*)&info, sizeof(info));
+ bufferlist bl;
+ ::encode(info, bl);
+ t.collection_setattr(info.pgid, "info", bl);
// write log
write_log(t);
assert(info.last_complete == info.last_update);
ObjectStore::Transaction t;
- t.collection_setattr(info.pgid, "info", &info, sizeof(info));
+ bufferlist bl;
+ ::encode(info, bl);
+ t.collection_setattr(info.pgid, "info", bl);
osd->store->apply_transaction(t);
osd->store->sync();
t.collection_setattr(info.pgid, "ondisklog_bottom", &ondisklog.bottom, sizeof(ondisklog.bottom));
t.collection_setattr(info.pgid, "ondisklog_top", &ondisklog.top, sizeof(ondisklog.top));
- t.collection_setattr(info.pgid, "info", &info, sizeof(info));
+ bufferlist infobl;
+ ::encode(info, infobl);
+ t.collection_setattr(info.pgid, "info", infobl);
dout(10) << "write_log to [" << ondisklog.bottom << "," << ondisklog.top << ")" << dendl;
}
info.last_update = version;
// write pg info
- t.collection_setattr(pgid, "info", &info, sizeof(info));
+ bufferlist infobl;
+ ::encode(info, infobl);
+ t.collection_setattr(pgid, "info", infobl);
// clone?
if (crev && rev && rev > crev) {
// apply to disk!
- t.collection_setattr(info.pgid, "info", &info, sizeof(info));
+ bufferlist bl;
+ ::encode(info, bl);
+ t.collection_setattr(info.pgid, "info", bl);
unsigned r = osd->store->apply_transaction(t);
assert(r == 0);