return oid.name;
}
+ hobject_t make_temp_hobject(const string& name) const {
+ return hobject_t(object_t(name), "", CEPH_NOSNAP,
+ hash,
+ hobject_t::POOL_TEMP_START - pool, "");
+ }
+
void swap(hobject_t &o) {
hobject_t temp(o);
o = (*this);
tobj = ghobject_t(op.soid, ghobject_t::NO_GEN,
get_parent()->whoami_shard().shard);
} else {
- tobj = ghobject_t(get_parent()->get_temp_recovery_object(op.version,
- op.soid.snap),
+ tobj = ghobject_t(get_parent()->get_temp_recovery_object(op.soid,
+ op.version),
ghobject_t::NO_GEN,
get_parent()->whoami_shard().shard);
if (op.before_progress.first) {
virtual uint64_t min_peer_features() const = 0;
- virtual hobject_t get_temp_recovery_object(eversion_t version,
- snapid_t snap) = 0;
+ virtual hobject_t get_temp_recovery_object(const hobject_t& target,
+ eversion_t version) = 0;
virtual void send_message_osd_cluster(
int peer, Message *m, epoch_t from_epoch) = 0;
}
}
-hobject_t PrimaryLogPG::generate_temp_object()
+hobject_t PrimaryLogPG::generate_temp_object(const hobject_t& target)
{
ostringstream ss;
- ss << "temp_" << info.pgid << "_" << get_role() << "_" << osd->monc->get_global_id() << "_" << (++temp_seq);
- hobject_t hoid = info.pgid.make_temp_hobject(ss.str());
+ ss << "temp_" << info.pgid << "_" << get_role()
+ << "_" << osd->monc->get_global_id() << "_" << (++temp_seq);
+ hobject_t hoid = target.make_temp_hobject(ss.str());
dout(20) << __func__ << " " << hoid << dendl;
return hoid;
}
-hobject_t PrimaryLogPG::get_temp_recovery_object(eversion_t version, snapid_t snap)
+hobject_t PrimaryLogPG::get_temp_recovery_object(
+ const hobject_t& target,
+ eversion_t version)
{
ostringstream ss;
ss << "temp_recovering_" << info.pgid // (note this includes the shardid)
<< "_" << version
<< "_" << info.history.same_interval_since
- << "_" << snap;
+ << "_" << target.snap;
// pgid + version + interval + snapid is unique, and short
- hobject_t hoid = info.pgid.make_temp_hobject(ss.str());
+ hobject_t hoid = target.make_temp_hobject(ss.str());
dout(20) << __func__ << " " << hoid << dendl;
return hoid;
}
if (cop->temp_cursor.is_initial()) {
assert(!cop->results.started_temp_obj);
cop->results.started_temp_obj = true;
- cop->results.temp_oid = generate_temp_object();
+ cop->results.temp_oid = generate_temp_object(oid);
dout(20) << __func__ << " using temp " << cop->results.temp_oid << dendl;
}
ObjectContextRef tempobc = get_object_context(cop->results.temp_oid, true);
bool check_src_targ(const hobject_t& soid, const hobject_t& toid) const;
uint64_t temp_seq; ///< last id for naming temp objects
- hobject_t generate_temp_object(); ///< generate a new temp object name
+ /// generate a new temp object name
+ hobject_t generate_temp_object(const hobject_t& target);
/// generate a new temp object name (for recovery)
- hobject_t get_temp_recovery_object(eversion_t version,
- snapid_t snap) override;
+ hobject_t get_temp_recovery_object(const hobject_t& target,
+ eversion_t version) override;
int get_recovery_op_priority() const {
int pri = 0;
pool.info.opts.get(pool_opts_t::RECOVERY_OP_PRIORITY, &pri);
if (first && complete) {
target_oid = recovery_info.soid;
} else {
- target_oid = get_parent()->get_temp_recovery_object(recovery_info.version,
- recovery_info.soid.snap);
+ target_oid = get_parent()->get_temp_recovery_object(recovery_info.soid,
+ recovery_info.version);
if (first) {
dout(10) << __func__ << ": Adding oid "
<< target_oid << " in the temp collection" << dendl;
DECODE_FINISH(bl);
}
- hobject_t make_temp_hobject(const string& name) const {
- return hobject_t(object_t(name), "", CEPH_NOSNAP,
- pgid.ps(),
- hobject_t::POOL_TEMP_START - pgid.pool(), "");
- }
-
ghobject_t make_temp_ghobject(const string& name) const {
return ghobject_t(
hobject_t(object_t(name), "", CEPH_NOSNAP,
for (int i = 0; i < cfg.threads; i++) {
std::stringstream oss;
oss << "osbench-thread-" << i;
- oids.emplace_back(pg.make_temp_hobject(oss.str()));
+ oids.emplace_back(hobject_t(sobject_t(oss.str(), CEPH_NOSNAP)));
ObjectStore::Sequencer osr(__func__);
ObjectStore::Transaction t;
assert(r == 0);
}
} else {
- oids.emplace_back(pg.make_temp_hobject("osbench"));
+ oids.emplace_back(hobject_t(sobject_t("osbench", CEPH_NOSNAP)));
ObjectStore::Sequencer osr(__func__);
ObjectStore::Transaction t;