]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: mark_all_unfound_as_lost: wake waiters
authorColin Patrick McCabe <cmccabe@alumni.cmu.edu>
Wed, 24 Nov 2010 06:04:53 +0000 (22:04 -0800)
committerColin Patrick McCabe <cmccabe@alumni.cmu.edu>
Tue, 30 Nov 2010 23:48:48 +0000 (15:48 -0800)
Signed-off-by: Colin McCabe <colinm@hq.newdream.net>
src/osd/PG.cc

index aece84dfbefd627a4ead63617adce052aff042c2..a5ad656c643d25106b3940bd72475e183c6944d4 100644 (file)
@@ -1051,6 +1051,14 @@ void PG::mark_all_unfound_as_lost()
 
     dout(10) << __func__ << ": created event " << e << dendl;
 
+    // Wake anyone waiting for this object. Now that it's been marked as lost,
+    // we will just return an error code.
+    hash_map<sobject_t, list<class Message*> >::iterator wmo =
+      waiting_for_missing_object.find(lost_soid);
+    if (wmo != waiting_for_missing_object.end()) {
+      osd->take_waiters(wmo->second);
+    }
+
     missing.missing.erase(lost_soid);
     del.erase(d++);
   }