From: Sage Weil Date: Mon, 25 Apr 2011 17:01:31 +0000 (-0700) Subject: journaler: fix flush completion when nothing to flush X-Git-Tag: v0.27.1~15 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=829ca5261666068c49177d2c3fa96264f73b356e;p=ceph.git journaler: fix flush completion when nothing to flush Signed-off-by: Sage Weil --- diff --git a/src/osdc/Journaler.cc b/src/osdc/Journaler.cc index a43b25c6178fd..d9d2f0b9aeb3d 100644 --- a/src/osdc/Journaler.cc +++ b/src/osdc/Journaler.cc @@ -530,14 +530,15 @@ void Journaler::wait_for_flush(Context *onsafe) void Journaler::flush(Context *onsafe) { assert(!readonly); - wait_for_flush(onsafe); - if (write_pos == safe_pos) - return; if (write_pos == flush_pos) { assert(write_buf.length() == 0); dout(10) << "flush nothing to flush, write pointers at " << write_pos << "/" << flush_pos << "/" << safe_pos << dendl; + if (onsafe) { + onsafe->finish(0); + delete onsafe; + } } else { if (1) { // maybe buffer @@ -556,6 +557,7 @@ void Journaler::flush(Context *onsafe) // always flush _do_flush(); } + wait_for_flush(onsafe); } // write head?