From: Samuel Just Date: Fri, 27 Dec 2013 19:26:11 +0000 (-0800) Subject: src/osd: pass in version to recover to recover_object X-Git-Tag: v0.78~163^2~41 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=f2826fa2cf08e5dc60fef53ca42f43cbddd2c25e;p=ceph.git src/osd: pass in version to recover to recover_object Otherwise we need to do some annoying contortions to get it out of the missing sets. Signed-off-by: Samuel Just --- diff --git a/src/osd/PGBackend.h b/src/osd/PGBackend.h index b887b141086ba..2b8a382c5a61e 100644 --- a/src/osd/PGBackend.h +++ b/src/osd/PGBackend.h @@ -200,6 +200,7 @@ */ 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 diff --git a/src/osd/ReplicatedBackend.cc b/src/osd/ReplicatedBackend.cc index e91ea9dd9c6b5..31885494fa2ce 100644 --- a/src/osd/ReplicatedBackend.cc +++ b/src/osd/ReplicatedBackend.cc @@ -46,6 +46,7 @@ void ReplicatedBackend::run_recovery_op( void ReplicatedBackend::recover_object( const hobject_t &hoid, + eversion_t v, ObjectContextRef head, ObjectContextRef obc, RecoveryHandle *_h @@ -57,6 +58,7 @@ void ReplicatedBackend::recover_object( assert(!obc); // pull prepare_pull( + v, hoid, head, h); diff --git a/src/osd/ReplicatedBackend.h b/src/osd/ReplicatedBackend.h index 0f9cf5654ada7..cee5023cacccc 100644 --- a/src/osd/ReplicatedBackend.h +++ b/src/osd/ReplicatedBackend.h @@ -60,6 +60,7 @@ public: /// @see PGBackend::recover_object void recover_object( const hobject_t &hoid, + eversion_t v, ObjectContextRef head, ObjectContextRef obc, RecoveryHandle *h @@ -317,6 +318,7 @@ private: interval_set& data_subset, map >& clone_subsets); void prepare_pull( + eversion_t v, const hobject_t& soid, ObjectContextRef headctx, RPGHandle *h); diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc index 3e8bd87d2dad0..5ea6fdcc4333f 100644 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@ -7287,13 +7287,15 @@ void ReplicatedBackend::calc_clone_subsets( 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 > &missing_loc( get_parent()->get_missing_loc()); const map &peer_missing( @@ -7442,6 +7444,7 @@ int ReplicatedPG::recover_missing( recovering.insert(make_pair(soid, obc)); pgbackend->recover_object( soid, + v, head_obc, obc, h); @@ -9289,6 +9292,7 @@ int ReplicatedPG::prep_object_replica_pushes( obc->ondisk_read_lock(); pgbackend->recover_object( soid, + v, ObjectContextRef(), obc, // has snapset context h); @@ -9785,6 +9789,7 @@ void ReplicatedPG::prep_backfill_object_push( obc->ondisk_read_lock(); pgbackend->recover_object( oid, + v, ObjectContextRef(), obc, h);