From: Sage Weil Date: Thu, 23 Apr 2009 23:41:34 +0000 (-0700) Subject: osd: fix pg missing updates X-Git-Tag: v0.7.3~57 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=f960d7aaa2c29cf06263a40dfe90d424a235a34c;p=ceph.git osd: fix pg missing updates We may be missing a divergent copy of the same object. --- diff --git a/src/osd/PG.h b/src/osd/PG.h index 9a7247f2685..a76c470b383 100644 --- a/src/osd/PG.h +++ b/src/osd/PG.h @@ -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);