]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
mds: split the dir if the op makes it oversized
authorsimon gao <simon29rock@gmail.com>
Tue, 10 Sep 2019 03:41:41 +0000 (23:41 -0400)
committersimon gao <simon29rock@gmail.com>
Wed, 18 Sep 2019 02:03:38 +0000 (22:03 -0400)
some ops maybe in flight, so that, split dir in finisher thread ,may affect inflight ops.

Fixes: https://tracker.ceph.com/issues/41880
Signed-off-by: simon gao <simon29rock@gmail.com>
src/mds/Server.cc

index 92ad6e8a5c9de2e6cf3e195e6abee4bc44dc27a0..b1a325b37db4a879ebe4884cc210322d23342103 100644 (file)
@@ -5775,6 +5775,7 @@ void Server::handle_client_mknod(MDRequestRef& mdr)
   le->metablob.add_primary_dentry(dn, newi, true, true, true);
 
   journal_and_reply(mdr, newi, dn, le, new C_MDS_mknod_finish(this, mdr, dn, newi));
+  mds->balancer->maybe_fragment(dn->get_dir(), false);
 }
 
 
@@ -5921,6 +5922,7 @@ void Server::handle_client_symlink(MDRequestRef& mdr)
   le->metablob.add_primary_dentry(dn, newi, true, true);
 
   journal_and_reply(mdr, newi, dn, le, new C_MDS_mknod_finish(this, mdr, dn, newi));
+  mds->balancer->maybe_fragment(dir, false);
 }
 
 
@@ -5989,6 +5991,7 @@ void Server::handle_client_link(MDRequestRef& mdr)
     _link_local(mdr, dn, targeti);
   else 
     _link_remote(mdr, true, dn, targeti);
+  mds->balancer->maybe_fragment(dir, false);  
 }