From: dongdong tao Date: Fri, 12 Jan 2018 15:37:29 +0000 (+0800) Subject: Client: use C_SaferCond for "_flush_range" X-Git-Tag: v13.0.2~401^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=57a5fef2929a094c3184fe298f684fe8ca6ab014;p=ceph.git Client: use C_SaferCond for "_flush_range" Signed-off-by: dongdong tao --- diff --git a/src/client/Client.cc b/src/client/Client.cc index 3620c93d1028..147ee1beaf10 100644 --- a/src/client/Client.cc +++ b/src/client/Client.cc @@ -3775,19 +3775,13 @@ void Client::_flush_range(Inode *in, int64_t offset, uint64_t size) return; } - Mutex flock("Client::_flush_range flock"); - Cond cond; - bool safe = false; - Context *onflush = new C_SafeCond(&flock, &cond, &safe); + C_SaferCond onflush("Client::_flush_range flock"); bool ret = objectcacher->file_flush(&in->oset, &in->layout, in->snaprealm->get_snap_context(), - offset, size, onflush); + offset, size, &onflush); if (!ret) { // wait for flush client_lock.Unlock(); - flock.Lock(); - while (!safe) - cond.Wait(flock); - flock.Unlock(); + onflush.wait(); client_lock.Lock(); } }