From: simon gao Date: Tue, 10 Sep 2019 03:41:41 +0000 (-0400) Subject: mds: split the dir if the op makes it oversized X-Git-Tag: v13.2.9~20^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=92a9affd83af2d68f16e9458403928beb91a3e4a;p=ceph.git mds: split the dir if the op makes it oversized 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 (cherry picked from commit b57a62bcdba35765b77e9c5fb9a6f748a16c9bd8) --- diff --git a/src/mds/Server.cc b/src/mds/Server.cc index 1ffc6a40883..f932b7a094a 100644 --- a/src/mds/Server.cc +++ b/src/mds/Server.cc @@ -5612,6 +5612,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); } @@ -5758,6 +5759,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); } @@ -5826,6 +5828,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); }