*/
virtual void recover_object(
const hobject_t &hoid, ///< [in] object to recover
+ eversion_t v, ///< [in] version to recover
ObjectContextRef head, ///< [in] context of the head/snapdir object
ObjectContextRef obc, ///< [in] context of the object
RecoveryHandle *h ///< [in,out] handle to attach recovery op to
/// @see PGBackend::recover_object
void recover_object(
const hobject_t &hoid,
+ eversion_t v,
ObjectContextRef head,
ObjectContextRef obc,
RecoveryHandle *h
interval_set<uint64_t>& data_subset,
map<hobject_t, interval_set<uint64_t> >& clone_subsets);
void prepare_pull(
+ eversion_t v,
const hobject_t& soid,
ObjectContextRef headctx,
RPGHandle *h);
enum { PULL_NONE, PULL_OTHER, PULL_YES };
void ReplicatedBackend::prepare_pull(
+ eversion_t v,
const hobject_t& soid,
ObjectContextRef headctx,
RPGHandle *h)
{
assert(get_parent()->get_local_missing().missing.count(soid));
- eversion_t v = get_parent()->get_local_missing().missing.find(
+ eversion_t _v = get_parent()->get_local_missing().missing.find(
soid)->second.need;
+ assert(_v == v);
const map<hobject_t, set<int> > &missing_loc(
get_parent()->get_missing_loc());
const map<int, pg_missing_t > &peer_missing(
recovering.insert(make_pair(soid, obc));
pgbackend->recover_object(
soid,
+ v,
head_obc,
obc,
h);
obc->ondisk_read_lock();
pgbackend->recover_object(
soid,
+ v,
ObjectContextRef(),
obc, // has snapset context
h);
obc->ondisk_read_lock();
pgbackend->recover_object(
oid,
+ v,
ObjectContextRef(),
obc,
h);