summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGreg Farnum <greg@inktank.com>2013-02-06 16:35:49 -0800
committerGreg Farnum <greg@inktank.com>2013-02-06 16:47:51 -0800
commit46d7dbd3472f26926c6d048bfc3c150074bfd283 (patch)
tree5fdf58647e5985ef8ea2111fd045c55aa5067253
parent08b82b3ef6b43283e35fd4e56eb5c78651345bea (diff)
downloadceph-46d7dbd3472f26926c6d048bfc3c150074bfd283.tar.gz
client: trigger the completion in _flush when short-cutting
We missed a shortcut return from _flush() when doing e9a6694d0151b79c3a3b44cee5df8e3d4dcbfc2c, so _fsync() calls were failing. To fix, if _flush discovers there's nothing to flush, trigger the completion by calling onfinish->finish(). Fixes #4038 Signed-off-by: Greg Farnum <greg@inktank.com> Reviewed-by: Sage Weil <sage@inktank.com>
-rw-r--r--src/client/Client.cc2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/client/Client.cc b/src/client/Client.cc
index 4ff30797284..418a46df3a2 100644
--- a/src/client/Client.cc
+++ b/src/client/Client.cc
@@ -2572,6 +2572,8 @@ bool Client::_flush(Inode *in, Context *onfinish)
if (!in->oset.dirty_or_tx) {
ldout(cct, 10) << " nothing to flush" << dendl;
+ if (onfinish)
+ onfinish->complete(0);
return true;
}