]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: fix pg missing updates
authorSage Weil <sage@newdream.net>
Thu, 23 Apr 2009 23:41:34 +0000 (16:41 -0700)
committerSage Weil <sage@newdream.net>
Thu, 23 Apr 2009 23:43:46 +0000 (16:43 -0700)
We may be missing a divergent copy of the same object.

src/osd/PG.h

index 9a7247f268502c11918be114173386786e53b9ae..a76c470b383827219e3d72bb7731f73dce517755 100644 (file)
@@ -454,8 +454,10 @@ public:
       if (e.is_update()) {
        if (e.prior_version == eversion_t()) {
          // new object.
-         assert(missing.count(e.oid) == 0);
-         missing[e.oid].need = e.version;  // .have = nil
+         //assert(missing.count(e.oid) == 0);  // might already be missing divergent item.
+         if (missing.count(e.oid))  // already missing divergent item
+           rmissing.erase(missing[e.oid].need);
+         missing[e.oid] = item(e.version, eversion_t());  // .have = nil
        } else if (missing.count(e.oid)) {
          // already missing (prior).
          assert(missing[e.oid].need == e.prior_version);