]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: fix backlog ordering part deux
authorSage Weil <sage@newdream.net>
Tue, 9 Jun 2009 17:57:59 +0000 (10:57 -0700)
committerSage Weil <sage@newdream.net>
Tue, 9 Jun 2009 17:57:59 +0000 (10:57 -0700)
Remove the old entry from the map!

src/osd/PG.cc

index 1ca3a4f42d589751f3c65c7698627f250458fb40..9c2cc08570cf557e130aceda919aace7240e02b5 100644 (file)
@@ -617,17 +617,17 @@ void PG::assemble_backlog(map<eversion_t,Log::Entry>& omap)
       if (le->prior_version == eversion_t() ||  // either new object, or
          le->prior_version >= log.bottom) {    // prior_version also already in log
        dout(15) << " skipping " << be << " (have " << *le << ")" << dendl;
-       omap.erase(i++);
-       continue;   // already have it logged.
+      } else {
+       be.version = le->prior_version;
+       be.reqid = osd_reqid_t();
+       dout(15) << "   adding prior_version " << be << " (have " << *le << ")" << dendl;
+       omap[be.version] = be;
+       // don't try to index: this is the prior_version backlog entry
       }
-
-      be.version = le->prior_version;
-      be.reqid = osd_reqid_t();
-      dout(15) << "   adding new " << be << " (have " << *le << ")" << dendl;
-      omap[be.version] = be;
-      // don't try to index: this is the prior_version backlog entry
+      omap.erase(i++);
+    } else {
+      i++;
     }
-    i++;
   }
 
   for (map<eversion_t,Log::Entry>::reverse_iterator i = omap.rbegin();