From: Sage Weil Date: Wed, 20 Aug 2014 03:50:13 +0000 (-0700) Subject: os/FileJournal: signal aio_cond even if seq is 0 X-Git-Tag: v0.80.8~34^2~5 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=b42107584449e1f85cbee97bfa486ebeb310e6a1;p=ceph.git os/FileJournal: signal aio_cond even if seq is 0 This can happen if we write a journal but no events. Reported-by: Somnath Roy Reported-by: Ma, Jianpeng Signed-off-by: Sage Weil (cherry picked from commit 57778e2c577c1e1bbf9525232720a2994fa36abc) --- diff --git a/src/os/FileJournal.cc b/src/os/FileJournal.cc index 5649e6da6050..e3bd8e90f0b0 100644 --- a/src/os/FileJournal.cc +++ b/src/os/FileJournal.cc @@ -1377,7 +1377,7 @@ void FileJournal::check_aio_completion() assert(aio_lock.is_locked()); dout(20) << "check_aio_completion" << dendl; - bool completed_something = false; + bool completed_something = false, signal = false; uint64_t new_journaled_seq = 0; list::iterator p = aio_queue.begin(); @@ -1391,6 +1391,7 @@ void FileJournal::check_aio_completion() aio_num--; aio_bytes -= p->len; aio_queue.erase(p++); + signal = true; } if (completed_something) { @@ -1410,7 +1411,8 @@ void FileJournal::check_aio_completion() queue_completions_thru(journaled_seq); } } - + } + if (signal) { // maybe write queue was waiting for aio count to drop? aio_cond.Signal(); }