]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: split the dir if the op makes it oversized 31302/head
authorsimon gao <simon29rock@gmail.com>
Tue, 10 Sep 2019 03:41:41 +0000 (23:41 -0400)
committerNathan Cutler <ncutler@suse.com>
Thu, 31 Oct 2019 18:15:36 +0000 (19:15 +0100)
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>
(cherry picked from commit b57a62bcdba35765b77e9c5fb9a6f748a16c9bd8)

src/mds/Server.cc

index c8ab1eda9ad8b003a5313adb595b47f44a42b641..35df63c82e224b67268a7ad0dd1f2637d58ffef8 100644 (file)
@@ -5776,6 +5776,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);
 }
 
 
@@ -5922,6 +5923,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);
 }
 
 
@@ -5990,6 +5992,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);  
 }