diff options
author | Greg Farnum <greg@inktank.com> | 2013-02-06 16:35:49 -0800 |
---|---|---|
committer | Greg Farnum <greg@inktank.com> | 2013-02-06 16:47:51 -0800 |
commit | 46d7dbd3472f26926c6d048bfc3c150074bfd283 (patch) | |
tree | 5fdf58647e5985ef8ea2111fd045c55aa5067253 | |
parent | 08b82b3ef6b43283e35fd4e56eb5c78651345bea (diff) | |
download | ceph-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.cc | 2 |
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; } |