]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
Client: use C_SaferCond for "_flush_range"
authordongdong tao <tdd21151186@gmail.com>
Fri, 12 Jan 2018 15:37:29 +0000 (23:37 +0800)
committerdongdong tao <tdd21151186@gmail.com>
Sat, 13 Jan 2018 09:43:41 +0000 (17:43 +0800)
Signed-off-by: dongdong tao <tdd21151186@gmail.com>
src/client/Client.cc

index 3620c93d10287de7badea8bd33cccc34f1ee62a6..147ee1beaf10b38c93b253e011498078cf3a646b 100644 (file)
@@ -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();
   }
 }