]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
Revert "ReplicatedPG: clean out completed trimmed objects as we go" 2620/head
authorSamuel Just <sam.just@inktank.com>
Wed, 1 Oct 2014 20:18:46 +0000 (13:18 -0700)
committerSamuel Just <sam.just@inktank.com>
Wed, 1 Oct 2014 20:18:46 +0000 (13:18 -0700)
src/common/config_opts.h
src/osd/ReplicatedPG.cc

index 45994cdab8f279af63585a3fa546904de01c3ea9..765c1c0e76d160e7d063dbd59950bc7ada11dae2 100644 (file)
@@ -520,9 +520,6 @@ OPTION(osd_heartbeat_interval, OPT_INT, 6)       // (seconds) how often we ping
 OPTION(osd_heartbeat_grace, OPT_INT, 20)         // (seconds) how long before we decide a peer has failed
 OPTION(osd_heartbeat_min_peers, OPT_INT, 10)     // minimum number of peers
 
-// max number of parallel snap trims/pg
-OPTION(osd_pg_max_concurrent_snap_trims, OPT_U64, 2)
-
 // minimum number of peers tha tmust be reachable to mark ourselves
 // back up after being wrongly marked down.
 OPTION(osd_heartbeat_min_healthy_ratio, OPT_FLOAT, .33)
index 44f4b92400ae3fdbc0c3d9e5b14a0b53f0bb381c..1b95210b1cad52872a1be22092d077780b0d339f 100644 (file)
@@ -12311,45 +12311,32 @@ boost::statechart::result ReplicatedPG::TrimmingObjects::react(const SnapTrim&)
 
   dout(10) << "TrimmingObjects: trimming snap " << snap_to_trim << dendl;
 
-  for (set<RepGather *>::iterator i = repops.begin();
-       i != repops.end(); 
-       ) {
-    if ((*i)->all_applied && (*i)->all_committed) {
-      (*i)->put();
-      repops.erase(i++);
-    } else {
-      ++i;
-    }
+  // Get next
+  hobject_t old_pos = pos;
+  int r = pg->snap_mapper.get_next_object_to_trim(snap_to_trim, &pos);
+  if (r != 0 && r != -ENOENT) {
+    derr << __func__ << ": get_next returned " << cpp_strerror(r) << dendl;
+    assert(0);
+  } else if (r == -ENOENT) {
+    // Done!
+    dout(10) << "TrimmingObjects: got ENOENT" << dendl;
+    post_event(SnapTrim());
+    return transit< WaitingOnReplicas >();
   }
 
-  while (repops.size() < g_conf->osd_pg_max_concurrent_snap_trims) {
-    // Get next
-    hobject_t old_pos = pos;
-    int r = pg->snap_mapper.get_next_object_to_trim(snap_to_trim, &pos);
-    if (r != 0 && r != -ENOENT) {
-      derr << __func__ << ": get_next returned " << cpp_strerror(r) << dendl;
-      assert(0);
-    } else if (r == -ENOENT) {
-      // Done!
-      dout(10) << "TrimmingObjects: got ENOENT" << dendl;
-      post_event(SnapTrim());
-      return transit< WaitingOnReplicas >();
-    }
-
-    dout(10) << "TrimmingObjects react trimming " << pos << dendl;
-    RepGather *repop = pg->trim_object(pos);
-    if (!repop) {
-      dout(10) << __func__ << " could not get write lock on obj "
-              << pos << dendl;
-      pos = old_pos;
-      return discard_event();
-    }
-    assert(repop);
-    repop->queue_snap_trimmer = true;
-
-    repops.insert(repop->get());
-    pg->simple_repop_submit(repop);
+  dout(10) << "TrimmingObjects react trimming " << pos << dendl;
+  RepGather *repop = pg->trim_object(pos);
+  if (!repop) {
+    dout(10) << __func__ << " could not get write lock on obj "
+            << pos << dendl;
+    pos = old_pos;
+    return discard_event();
   }
+  assert(repop);
+  repop->queue_snap_trimmer = true;
+
+  repops.insert(repop->get());
+  pg->simple_repop_submit(repop);
   return discard_event();
 }
 /* WaitingOnReplicasObjects */
@@ -12383,7 +12370,7 @@ boost::statechart::result ReplicatedPG::WaitingOnReplicas::react(const SnapTrim&
   for (set<RepGather *>::iterator i = repops.begin();
        i != repops.end();
        repops.erase(i++)) {
-    if (!(*i)->all_applied || !(*i)->all_committed) {
+    if (!(*i)->all_applied) {
       return discard_event();
     } else {
       (*i)->put();