]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
src/osd: pass in version to recover to recover_object
authorSamuel Just <sam.just@inktank.com>
Fri, 27 Dec 2013 19:26:11 +0000 (11:26 -0800)
committerSamuel Just <sam.just@inktank.com>
Tue, 18 Feb 2014 04:11:05 +0000 (20:11 -0800)
Otherwise we need to do some annoying contortions to
get it out of the missing sets.

Signed-off-by: Samuel Just <sam.just@inktank.com>
src/osd/PGBackend.h
src/osd/ReplicatedBackend.cc
src/osd/ReplicatedBackend.h
src/osd/ReplicatedPG.cc

index b887b141086bad4a4a9b8fda941c0005b3ba0650..2b8a382c5a61eda7b1371a8192ccbc5ec0a7f097 100644 (file)
     */
    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
index e91ea9dd9c6b5194089a084b6b581641bb0b2380..31885494fa2ce0e584da73e71c9b748bee10f176 100644 (file)
@@ -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);
index 0f9cf5654ada79b6dbe32978844681a290d72311..cee5023cacccce3fd0ef4f782213d080a4d0ca46 100644 (file)
@@ -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<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);
index 3e8bd87d2dad038221a45e59b61f45bfdc278bb4..5ea6fdcc4333f31cd5244eadf6422f6ce4255a07 100644 (file)
@@ -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<hobject_t, set<int> > &missing_loc(
     get_parent()->get_missing_loc());
   const map<int, pg_missing_t > &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);