]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
os/FileJournal: do not request sync while shutting down 2549/head
authorSage Weil <sage@redhat.com>
Sun, 21 Sep 2014 20:41:01 +0000 (13:41 -0700)
committerSage Weil <sage@redhat.com>
Sun, 21 Sep 2014 20:41:01 +0000 (13:41 -0700)
FileStore calls should_commit_now() to determine whether it should
loop and do a second sync (among other things).  During shutdown, this
can force us into a livelock: the journal is shutting down, but the
sync_entry loop never completes and repeatedly syncs because the
journal is full.  Since the journal is otherwise stopped, no expire
happens and we never become unfull, and we're stuck.

This seems to be triggered semi-reliably by the ceph_objectstore_tool
import function.

Fix by not requesting a sync while shutting down.

Fixes: #9545
Signed-off-by: Sage Weil <sage@redhat.com>
src/os/FileJournal.h

index 94197aab3dc94294685911d81e86d7be2c2801e2..1920401d378b71d0a5bf91d6171b144c8d578d31 100644 (file)
@@ -405,7 +405,7 @@ private:
   void commit_start(uint64_t seq);
   void committed_thru(uint64_t seq);
   bool should_commit_now() {
-    return full_state != FULL_NOTFULL;
+    return full_state != FULL_NOTFULL && !write_stop;
   }
 
   void set_wait_on_full(bool b) { wait_on_full = b; }