]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: remove CDir::take_sub_waiting()
authorShen, Hang <shenhang@kuaishou.com>
Tue, 19 Jan 2021 03:40:12 +0000 (11:40 +0800)
committershenhang <shenhang@kuaishou.com>
Wed, 9 Feb 2022 09:31:45 +0000 (17:31 +0800)
migrator already does the job when importing dirfrag.

Signed-off-by: "Shen, Hang" <shenhang@kuaishou.com>
src/mds/CDir.cc
src/mds/CDir.h
src/mds/MDCache.cc

index bace9f6b873d17029cf22b8040450905bac63ce5..d9db8a88b25c7f7018aa15f52d703f5c083e90ea 100644 (file)
@@ -932,10 +932,8 @@ void CDir::prepare_old_fragment(map<string_snap_t, MDSContext::vec >& dentry_wai
 
   if (!waiting_on_dentry.empty()) {
     for (const auto &p : waiting_on_dentry) {
-      auto &e = dentry_waiters[p.first];
-      for (const auto &waiter : p.second) {
-        e.push_back(waiter);
-      }
+      std::copy(p.second.begin(), p.second.end(),
+               std::back_inserter(dentry_waiters[p.first]));
     }
     waiting_on_dentry.clear();
     put(PIN_DNWAITER);
@@ -1075,10 +1073,8 @@ void CDir::split(int bits, std::vector<CDir*>* subs, MDSContext::vec& waiters, b
 
     if (f->waiting_on_dentry.empty())
       f->get(PIN_DNWAITER);
-    auto &e = f->waiting_on_dentry[p.first];
-    for (const auto &waiter : p.second) {
-      e.push_back(waiter);
-    }
+    std::copy(p.second.begin(), p.second.end(),
+             std::back_inserter(f->waiting_on_dentry[p.first]));
   }
 
   // FIXME: handle dirty old rstat
@@ -1170,10 +1166,8 @@ void CDir::merge(const std::vector<CDir*>& subs, MDSContext::vec& waiters, bool
   if (!dentry_waiters.empty()) {
     get(PIN_DNWAITER);
     for (const auto &p : dentry_waiters) {
-      auto &e = waiting_on_dentry[p.first];
-      for (const auto &waiter : p.second) {
-        e.push_back(waiter);
-      }
+      std::copy(p.second.begin(), p.second.end(),
+               std::back_inserter(waiting_on_dentry[p.first]));
     }
   }
 
@@ -1300,9 +1294,7 @@ void CDir::take_dentry_waiting(std::string_view dname, snapid_t first, snapid_t
             << " [" << first << "," << last << "] found waiter on snap "
             << it->first.snapid
             << " on " << *this << dendl;
-    for (const auto &waiter : it->second) {
-      ls.push_back(waiter);
-    }
+    std::copy(it->second.begin(), it->second.end(), std::back_inserter(ls));
     waiting_on_dentry.erase(it++);
   }
 
@@ -1310,22 +1302,6 @@ void CDir::take_dentry_waiting(std::string_view dname, snapid_t first, snapid_t
     put(PIN_DNWAITER);
 }
 
-void CDir::take_sub_waiting(MDSContext::vec& ls)
-{
-  dout(10) << __func__ << dendl;
-  if (!waiting_on_dentry.empty()) {
-    for (const auto &p : waiting_on_dentry) {
-      for (const auto &waiter : p.second) {
-        ls.push_back(waiter);
-      }
-    }
-    waiting_on_dentry.clear();
-    put(PIN_DNWAITER);
-  }
-}
-
-
-
 void CDir::add_waiter(uint64_t tag, MDSContext *c) 
 {
   // hierarchical?
@@ -1355,9 +1331,7 @@ void CDir::take_waiting(uint64_t mask, MDSContext::vec& ls)
     for (const auto &p : waiting_on_dentry) {
       dout(10) << "take_waiting dentry " << p.first.name
               << " snap " << p.first.snapid << " on " << *this << dendl;
-      for (const auto &waiter : p.second) {
-        ls.push_back(waiter);
-      }
+      std::copy(p.second.begin(), p.second.end(), std::back_inserter(ls));
     }
     waiting_on_dentry.clear();
     put(PIN_DNWAITER);
index c8d3e417ad49a154a50de003779867198d8c8c56..0f203872fce6ee4384b0225a4e4cea5f73f735ee 100644 (file)
@@ -498,7 +498,6 @@ public:
   }
   void add_dentry_waiter(std::string_view dentry, snapid_t snap, MDSContext *c);
   void take_dentry_waiting(std::string_view dentry, snapid_t first, snapid_t last, MDSContext::vec& ls);
-  void take_sub_waiting(MDSContext::vec& ls);  // dentry or ino
 
   void add_waiter(uint64_t mask, MDSContext *c) override;
   void take_waiting(uint64_t mask, MDSContext::vec& ls) override;  // may include dentry waiters
index ef6d3c4c82ae3a93fe1f775cdc605db371fe36ac..5ed8a9181d2c6c92c7354f936b5091b0b169fc18 100644 (file)
@@ -10094,11 +10094,6 @@ void MDCache::discover_path(CDir *base,
       onfinish = new C_MDC_RetryDiscoverPath2(this, base, snap, want_path);
     base->add_waiter(CDir::WAIT_SINGLEAUTH, onfinish);
     return;
-  } else if (from == mds->get_nodeid()) {
-    MDSContext::vec finished;
-    base->take_sub_waiting(finished);
-    mds->queue_waiters(finished);
-    return;
   }
 
   if ((path_locked && want_path.depth() == 1) ||
@@ -10563,13 +10558,9 @@ void MDCache::handle_discover_reply(const cref_t<MDiscoverReply> &m)
   } else if (m->is_flag_error_dn()) {
     frag_t fg = cur->pick_dirfrag(m->get_error_dentry());
     CDir *dir = cur->get_dirfrag(fg);
-    if (dir) {
-      if (dir->is_auth()) {
-       dir->take_sub_waiting(finished);
-      } else {
-       dir->take_dentry_waiting(m->get_error_dentry(), m->get_wanted_snapid(),
-                                m->get_wanted_snapid(), error);
-      }
+    if (dir && !dir->is_auth()) {
+      dir->take_dentry_waiting(m->get_error_dentry(), m->get_wanted_snapid(),
+                              m->get_wanted_snapid(), error);
     }
   }