bufferlist bl;
osd->store->getattr(coll_t(info.pgid), coid, OI_ATTR, bl);
object_info_t coi(bl);
+ vector<snapid_t>& snaps = coi.snaps;
// get snap set context
SnapSetContext *ssc = get_snapset_context(coid.oid, false);
assert(ssc);
SnapSet& snapset = ssc->snapset;
- vector<snapid_t>& snaps = coi.snaps;
dout(10) << coid << " snaps " << snaps << " old snapset " << snapset << dendl;
assert(snapset.seq);
snaps[i] = snapc.snaps[i];
// prepare clone
- object_info_t static_snap_oi(oi);
+ object_info_t static_snap_oi(coid, oi.oloc);
object_info_t *snap_oi;
if (is_primary()) {
ctx->clone_obc = new ObjectContext(static_snap_oi, true, NULL);
last_reqid = other.last_reqid;
truncate_seq = other.truncate_seq;
truncate_size = other.truncate_size;
+ lost = other.lost;
}
void encode(bufferlist& bl) const {
decode(p);
}
- object_info_t(const object_info_t &rhs)
- : soid(rhs.soid), oloc(rhs.oloc), size(rhs.size),
- lost(rhs.lost), truncate_seq(rhs.truncate_seq),
- truncate_size(rhs.truncate_size) {}
-
object_info_t(const sobject_t& s, const object_locator_t& o)
: soid(s), oloc(o), size(0),
lost(false), truncate_seq(0), truncate_size(0) {}