]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
OSD: info.pgid gets removed from creating_pgs before _create_lock_new_pg
authorSamuel Just <samuel.just@dreamhost.com>
Wed, 7 Sep 2011 23:29:25 +0000 (16:29 -0700)
committerSamuel Just <samuel.just@dreamhost.com>
Wed, 7 Sep 2011 23:32:13 +0000 (16:32 -0700)
Fix bug introduced in cd2716c4151f5c0996bb4d0cf08961f8da281dac.

Signed-off-by: Samuel Just <samuel.just@dreamhost.com>
src/osd/OSD.cc

index 954a1ce8673e4a67ef19887ee3e38872cb70006b..7e416f2f859ccdfcdeff9c536f53872699405f25 100644 (file)
@@ -1234,6 +1234,7 @@ PG *OSD::get_or_create_pg(const PG::Info& info, epoch_t epoch, int from, int& cr
          creating_pgs[info.pgid].prior.erase(from);
          if (!can_create_pg(info.pgid))
            return NULL;
+         history = creating_pgs[info.pgid].history;
          create = true;
        } else {
          dout(10) << "get_or_create_pg " << info.pgid
@@ -1251,7 +1252,7 @@ PG *OSD::get_or_create_pg(const PG::Info& info, epoch_t epoch, int from, int& cr
     *pt = new ObjectStore::Transaction;
     *pfin = new C_Contexts(g_ceph_context);
     if (create) {
-      pg = _create_lock_new_pg(info.pgid, acting, **pt, creating_pgs[info.pgid].history);
+      pg = _create_lock_new_pg(info.pgid, acting, **pt, history);
     } else {
       pg = _create_lock_pg(info.pgid, **pt);
       pg->acting.swap(acting);