]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: call sched_scrub on reserve reply
authorSage Weil <sage@newdream.net>
Wed, 10 Nov 2010 23:33:31 +0000 (15:33 -0800)
committerSage Weil <sage@newdream.net>
Thu, 11 Nov 2010 00:31:42 +0000 (16:31 -0800)
Otherwise we have to wait until the next time it's called by the timer, and
during that period we have a reservation locally, and any other peers can't
reserve a scrub from us, and nobody makes any progress.

Signed-off-by: Sage Weil <sage@newdream.net>
src/osd/PG.cc

index 737e81bc0070185d9fc5051e2206f2e50e733265..2c4de35f7867f5ec94510eacaf8a3614dd6cb219 100644 (file)
@@ -2737,15 +2737,17 @@ void PG::sub_op_scrub_reserve_reply(MOSDSubOpReply *op)
   ::decode(reserved, p);
 
   if (scrub_reserved_peers.find(from) != scrub_reserved_peers.end()) {
-    dout(10) << " already had osd" << from << " reserved" << dendl;
+    dout(10) << " already had osd" << from << " reserved" << dendl;
   } else {
-    dout(10) << " got osd" << from << " scrub reserved: " << reserved << dendl;
     if (reserved) {
+      dout(10) << " osd" << from << " scrub reserve = success" << dendl;
       scrub_reserved_peers.insert(from);
     } else {
       /* One decline stops this pg from being scheduled for scrubbing. */
+      dout(10) << " osd" << from << " scrub reserve = fail" << dendl;
       scrub_reserve_failed = true;
     }
+    sched_scrub();
   }
 
   op->put();