]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
ReplicatedPG: don't manage waiting_on_backfill in start/finish_recovery_op
authorSamuel Just <samuel.just@dreamhost.com>
Tue, 20 Dec 2011 23:28:11 +0000 (15:28 -0800)
committerSamuel Just <samuel.just@dreamhost.com>
Tue, 20 Dec 2011 23:28:11 +0000 (15:28 -0800)
Set waiting_on_backfill in recover_backfill and clear in do_scan.

Signed-off-by: Samuel Just <samuel.just@dreamhost.com>
src/osd/PG.cc
src/osd/ReplicatedPG.cc

index 9247323b42159b66b07004c2ab5f2e4566251906..33599002d7641ae32c4b114924ff6a1f4e244873 100644 (file)
@@ -1488,9 +1488,6 @@ void PG::start_recovery_op(const hobject_t& soid)
   assert(recovering_oids.count(soid) == 0);
   recovering_oids.insert(soid);
 #endif
-  if (soid.is_max()) {
-    waiting_on_backfill = true;
-  }
   osd->start_recovery_op(this, soid);
 }
 
@@ -1507,9 +1504,6 @@ void PG::finish_recovery_op(const hobject_t& soid, bool dequeue)
   assert(recovering_oids.count(soid));
   recovering_oids.erase(soid);
 #endif
-  if (soid.is_max()) {
-    waiting_on_backfill = false;
-  }
   osd->finish_recovery_op(this, soid, dequeue);
 }
 
index 5be8ead7383cc4771f23492719ab84c3d256b30c..9d9660b520ef2c6565f3203e42d51d9bd25e5603 100644 (file)
@@ -868,6 +868,8 @@ void ReplicatedPG::do_scan(MOSDPGScan *m)
       bufferlist::iterator p = m->get_data().begin();
       ::decode(bi.objects, p);
 
+      assert(waiting_on_backfill);
+      waiting_on_backfill = false;
       finish_recovery_op(bi.begin);
     }
     break;
@@ -5388,6 +5390,7 @@ int ReplicatedPG::recover_backfill(int max)
       MOSDPGScan *m = new MOSDPGScan(MOSDPGScan::OP_SCAN_GET_DIGEST, e, e, info.pgid,
                                     pbi.end, hobject_t());
       osd->cluster_messenger->send_message(m, get_osdmap()->get_cluster_inst(backfill_target));
+      waiting_on_backfill = true;
       start_recovery_op(pbi.end);
       ops++;
       break;
@@ -5424,6 +5427,7 @@ int ReplicatedPG::recover_backfill(int max)
          //assert(info.stats.stats.sum.num_bytes == pinfo.stats.stats.sum.num_bytes);
 
          osd->cluster_messenger->send_message(m, get_osdmap()->get_cluster_inst(backfill_target));
+         waiting_on_backfill = true;
          start_recovery_op(hobject_t::get_max());
          ops++;
        }