]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
PGLog::merge_log: update missing, after removing divergent
authorSamuel Just <sjust@redhat.com>
Mon, 30 Mar 2015 22:28:03 +0000 (15:28 -0700)
committerSamuel Just <sjust@redhat.com>
Thu, 25 Feb 2016 18:56:41 +0000 (10:56 -0800)
This should not change behavior at all.  It'll be useful in
the next few commits.

Signed-off-by: Samuel Just <sjust@redhat.com>
src/osd/PGLog.cc

index f1eb53c6cc775c40595d65f17761dee6a8fe0d37..c38e3a5275a11904badf7946b4e9ed998a23ead4 100644 (file)
@@ -656,18 +656,6 @@ void PGLog::merge_log(ObjectStore::Transaction& t,
     }
     mark_dirty_from(lower_bound);
 
-    // index, update missing, delete deleted
-    for (list<pg_log_entry_t>::iterator p = from; p != to; ++p) {
-      pg_log_entry_t &ne = *p;
-      dout(20) << "merge_log " << ne << dendl;
-      log.index(ne);
-      if (cmp(ne.soid, info.last_backfill, info.last_backfill_bitwise) <= 0) {
-       missing.add_next_event(ne);
-       if (ne.is_delete())
-         rollbacker->remove(ne.soid);
-      }
-    }
-      
     // move aside divergent items
     list<pg_log_entry_t> divergent;
     while (!log.empty()) {
@@ -687,6 +675,18 @@ void PGLog::merge_log(ObjectStore::Transaction& t,
       log.log.pop_back();
     }
 
+    // index, update missing, delete deleted
+    for (list<pg_log_entry_t>::iterator p = from; p != to; ++p) {
+      pg_log_entry_t &ne = *p;
+      ldpp_dout(dpp, 20) "merge_log " << ne << dendl;
+      log.index(ne);
+      if (ne.soid <= info.last_backfill) {
+       missing.add_next_event(ne);
+       if (ne.is_delete())
+         rollbacker->remove(ne.soid);
+      }
+    }
+
     // splice
     log.log.splice(log.log.end(), 
                   olog.log, from, to);