]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
Merge remote-tracking branch 'origin/master' into wip-fast-dispatch 1532/head
authorGreg Farnum <greg@inktank.com>
Wed, 7 May 2014 05:23:06 +0000 (22:23 -0700)
committerGreg Farnum <greg@inktank.com>
Wed, 7 May 2014 05:23:06 +0000 (22:23 -0700)
Conflicts:
src/osd/OSD.cc

1  2 
src/osd/OSD.cc
src/osd/OSD.h
src/osd/ReplicatedPG.cc

diff --cc src/osd/OSD.cc
index 668b6556e76d3d2af77dcfd8a006cf05edb895ae,3274055261ef476b389221d78e96c29e75e5e961..220eac652723e8ee5e3968b27b6cfe41257afa59
@@@ -188,13 -188,12 +188,14 @@@ OSDService::OSDService(OSD *osd) 
    scrub_wq(osd->scrub_wq),
    scrub_finalize_wq(osd->scrub_finalize_wq),
    rep_scrub_wq(osd->rep_scrub_wq),
 -  push_wq("push_wq", cct->_conf->osd_recovery_thread_timeout, &osd->recovery_tp),
 -  gen_wq("gen_wq", cct->_conf->osd_recovery_thread_timeout, &osd->recovery_tp),
 +  recovery_gen_wq("recovery_gen_wq", cct->_conf->osd_recovery_thread_timeout,
 +                &osd->recovery_tp),
 +  op_gen_wq("op_gen_wq", cct->_conf->osd_recovery_thread_timeout, &osd->op_tp),
    class_handler(osd->class_handler),
+   pg_epoch_lock("OSDService::pg_epoch_lock"),
    publish_lock("OSDService::publish_lock"),
    pre_publish_lock("OSDService::pre_publish_lock"),
 +  peer_map_epoch_lock("OSDService::peer_map_epoch_lock"),
    sched_scrub_lock("OSDService::sched_scrub_lock"), scrubs_pending(0),
    scrubs_active(0),
    agent_lock("OSD::agent_lock"),
@@@ -1860,13 -1845,13 +1861,14 @@@ PG *OSD::_open_lock_pg
    assert(osd_lock.is_locked());
  
    PG* pg = _make_pg(createmap, pgid);
 -
 -  pg_map[pgid] = pg;
 -
 -  service.pg_add_epoch(pg->info.pgid, createmap->get_epoch());
 -
 -  pg->lock(no_lockdep_check);
 -  pg->get("PGMap");  // because it's in pg_map
 +  {
 +    RWLock::WLocker l(pg_map_lock);
 +    pg->lock(no_lockdep_check);
 +    pg_map[pgid] = pg;
 +    pg->get("PGMap");  // because it's in pg_map
++    service.pg_add_epoch(pg->info.pgid, createmap->get_epoch());
 +    wake_pg_waiters(pg, pgid);
 +  }
    return pg;
  }
  
@@@ -1896,8 -1881,7 +1898,9 @@@ void OSD::add_newly_split_pg(PG *pg, PG
    epoch_t e(service.get_osdmap()->get_epoch());
    pg->get("PGMap");  // For pg_map
    pg_map[pg->info.pgid] = pg;
+   service.pg_add_epoch(pg->info.pgid, pg->get_osdmap()->get_epoch());
 +  wake_pg_waiters(pg, pg->info.pgid);
 +
    dout(10) << "Adding newly split pg " << *pg << dendl;
    vector<int> up, acting;
    pg->get_osdmap()->pg_to_up_acting_osds(pg->info.pgid.pgid, up, acting);
diff --cc src/osd/OSD.h
Simple merge
Simple merge