]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
objectcacher: fix use of invalid iterator in map_write()
authorSage Weil <sage@newdream.net>
Fri, 4 Jun 2010 23:05:55 +0000 (16:05 -0700)
committerSage Weil <sage@newdream.net>
Fri, 4 Jun 2010 23:32:06 +0000 (16:32 -0700)
The p points to bh, which is removed by merge_left.  Move it back to final,
so we can advance to the new next a few lines down.

src/osdc/ObjectCacher.cc

index f01069ced36b4a2feda98fd65cec95bf69d425ad..4d7fabf813f7a3313d52ec32b3215461459f0a65 100644 (file)
@@ -340,6 +340,8 @@ ObjectCacher::BufferHead *ObjectCacher::Object::map_write(OSDWrite *wr)
           if (final) {
            oc->mark_dirty(bh);
            oc->mark_dirty(final);
+           p--;  // move iterator back to final
+           assert(p->second == final);
             merge_left(final, bh);
          } else
             final = bh;