]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
PG.h:PGLogEntryHandler: remove silly cant_rollback logic
authorSamuel Just <sam.just@inktank.com>
Sun, 2 Mar 2014 21:39:07 +0000 (13:39 -0800)
committerSamuel Just <sam.just@inktank.com>
Tue, 4 Mar 2014 00:05:16 +0000 (16:05 -0800)
Also, we now call rollback in a reverse order, so there is no
need to reverse the entries again.

Signed-off-by: Samuel Just <sam.just@inktank.com>
src/osd/PG.h

index 38a35f6935c24e4059f9c23f4cf7072a10ddfaa6..5eb2d23f72f9b20eb34ef046456830679ce5a3dc 100644 (file)
@@ -776,8 +776,7 @@ public:
   };
 
   struct PGLogEntryHandler : public PGLog::LogEntryHandler {
-    map<hobject_t, list<pg_log_entry_t> > to_rollback;
-    set<hobject_t> cannot_rollback;
+    list<pg_log_entry_t> to_rollback;
     set<hobject_t> to_remove;
     list<pg_log_entry_t> to_trim;
     
@@ -786,35 +785,20 @@ public:
       to_remove.insert(hoid);
     }
     void rollback(const pg_log_entry_t &entry) {
-      if (cannot_rollback.count(entry.soid)) {
-       /* we already failed to rollback a previous item
-         * and made the appropriate adjustments to the
-         * missing set and/or store */
-       return;
-      }
-      to_rollback[entry.soid].push_back(entry);
-    }
-    void cant_rollback(const pg_log_entry_t &entry) {
-      to_rollback.erase(entry.soid);
-      cannot_rollback.insert(entry.soid);
+      to_rollback.push_back(entry);
     }
     void trim(const pg_log_entry_t &entry) {
       to_trim.push_back(entry);
     }
 
     void apply(PG *pg, ObjectStore::Transaction *t) {
-      for (map<hobject_t, list<pg_log_entry_t> >::iterator i =
-            to_rollback.begin();
-          i != to_rollback.end();
-          ++i) {
-       for (list<pg_log_entry_t>::reverse_iterator j = i->second.rbegin();
-            j != i->second.rend();
-            ++j) {
-         assert(j->mod_desc.can_rollback());
-         pg->get_pgbackend()->rollback(j->soid, j->mod_desc, t);
-         SnapRollBacker rollbacker(j->soid, pg, t);
-         j->mod_desc.visit(&rollbacker);
-       }
+      for (list<pg_log_entry_t>::iterator j = to_rollback.begin();
+          j != to_rollback.end();
+          ++j) {
+       assert(j->mod_desc.can_rollback());
+       pg->get_pgbackend()->rollback(j->soid, j->mod_desc, t);
+       SnapRollBacker rollbacker(j->soid, pg, t);
+       j->mod_desc.visit(&rollbacker);
       }
       for (set<hobject_t>::iterator i = to_remove.begin();
           i != to_remove.end();