From 682b9daacb1960eb60b5f0e9b40d4a3a3e9afd5b Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Sun, 21 Sep 2014 13:41:01 -0700 Subject: [PATCH] os/FileJournal: do not request sync while shutting down 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 --- src/os/FileJournal.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/os/FileJournal.h b/src/os/FileJournal.h index 94197aab3dc..1920401d378 100644 --- a/src/os/FileJournal.h +++ b/src/os/FileJournal.h @@ -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; } -- 2.47.3