]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
*** empty log message ***
authorsage <sage@29311d96-e01e-0410-9327-a35deaab8ce9>
Sat, 4 Mar 2006 23:20:44 +0000 (23:20 +0000)
committersage <sage@29311d96-e01e-0410-9327-a35deaab8ce9>
Sat, 4 Mar 2006 23:20:44 +0000 (23:20 +0000)
git-svn-id: https://ceph.svn.sf.net/svnroot/ceph@718 29311d96-e01e-0410-9327-a35deaab8ce9

ceph/mds/MDS.cc
ceph/osd/OSD.cc

index 9f966fa3ee853a85391122095bc260d09d5c85c0..7f467e8475b44359279551ed78207375c0ff5ab6 100644 (file)
@@ -117,7 +117,11 @@ MDS::MDS(MDCluster *mdc, int whoami, Messenger *m) {
   // <HACK set up OSDMap from g_conf>
   osdmap = new OSDMap();
   osdmap->set_pg_bits(g_conf.osd_pg_bits);
-  osdmap->inc_version();
+  osdmap->inc_version();  // version = 1
+  assert(osdmap->get_version() == 1);
+
+  if (!g_conf.mkfs) 
+       osdmap->inc_version();   // 1 -> mkfs, we want something bigger or else OSDs will recreate PGs
 
   Bucket *b = new UniformBucket(1, 0);
   int root = osdmap->crush.add_bucket(b);
index e6f33f503b40dcc5cdfd626f458ef4512071d108..6df7a4840dabb6c98d79c1beea86dd235b7112c4 100644 (file)
@@ -588,6 +588,8 @@ void OSD::update_map(bufferlist& state, bool mkfs)
   list<pg_t> pg_list;
   
   if (mkfs) {
+       assert(osdmap->get_version() == 1);
+
        // create PGs
        for (int nrep = 1; nrep <= g_conf.osd_max_rep; nrep++) {
          ps_t maxps = 1LL << osdmap->get_pg_bits();
@@ -1414,13 +1416,17 @@ void OSD::plan_recovery(PG *pg)
   list<PGPeer*> complete_peers;
   pg->plan_recovery(store, current_version, complete_peers);
 
-  for (list<PGPeer*>::iterator it = complete_peers.begin();
-          it != complete_peers.end();
-          it++) {
-       PGPeer *p = *it;
-       dout(7) << " " << *pg << " telling peer osd" << p->get_peer() << " they are complete" << endl;
-       messenger->send_message(new MOSDPGUpdate(osdmap->get_version(), pg->get_pgid(), true, osdmap->get_version()),
-                                                       MSG_ADDR_OSD(p->get_peer()));
+  if (current_version > 1) {
+       for (list<PGPeer*>::iterator it = complete_peers.begin();
+                it != complete_peers.end();
+                it++) {
+         PGPeer *p = *it;
+         dout(7) << " " << *pg << " telling peer osd" << p->get_peer() << " they are complete" << endl;
+         messenger->send_message(new MOSDPGUpdate(osdmap->get_version(), pg->get_pgid(), true, osdmap->get_version()),
+                                                         MSG_ADDR_OSD(p->get_peer()));
+       }
+  } else {
+       dout(7) << "not sending PGUpdates since this is a mkfs (current_version==1)" << endl;
   }
 }