]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: avoid unnecessary log flush for CInode::WAIT_TRUNC
authorYan, Zheng <zyan@redhat.com>
Thu, 21 Jul 2016 09:35:47 +0000 (17:35 +0800)
committerYan, Zheng <zyan@redhat.com>
Fri, 22 Jul 2016 02:24:41 +0000 (10:24 +0800)
Signed-off-by: Yan, Zheng <zyan@redhat.com>
src/mds/MDCache.cc
src/mds/Server.cc

index 4edee0c699a2ce066f23383aecbbe5055f9ca904..dc848c1c27372dcefaa5210f61054080484df83e 100644 (file)
@@ -6262,7 +6262,8 @@ void MDCache::truncate_inode_finish(CInode *in, LogSegment *ls)
   mds->mdlog->submit_entry(le, new C_MDC_TruncateLogged(this, in, mut));
 
   // flush immediately if there are readers/writers waiting
-  if (in->get_caps_wanted() & (CEPH_CAP_FILE_RD|CEPH_CAP_FILE_WR))
+  if (in->is_waiter_for(CInode::WAIT_TRUNC) ||
+      (in->get_caps_wanted() & (CEPH_CAP_FILE_RD|CEPH_CAP_FILE_WR)))
     mds->mdlog->flush();
 }
 
index 9e4df14040433bb60f2f348a61a416dfb4570d8e..29f8eeb33cd85c5e01a1b9b32ed9cf2ac560ba20 100644 (file)
@@ -3779,7 +3779,6 @@ void Server::handle_client_setattr(MDRequestRef& mdr)
       mds->locker->drop_locks(mdr.get());
       mdr->drop_local_auth_pins();
       cur->add_waiter(CInode::WAIT_TRUNC, new C_MDS_RetryRequest(mdcache, mdr));
-      mds->mdlog->flush();
       return;
     }
   }