]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: clean up pg change slightly
authorSage Weil <sage@newdream.net>
Fri, 16 May 2008 23:51:22 +0000 (16:51 -0700)
committerSage Weil <sage@newdream.net>
Fri, 16 May 2008 23:51:40 +0000 (16:51 -0700)
src/osd/OSD.cc

index 943781fb18806cd28570b9e79b88930745fd1cc3..c640a57b62a31f94ed2d1cb7c391bf0726a8d751 100644 (file)
@@ -1535,6 +1535,9 @@ void OSD::advance_map(ObjectStore::Transaction& t)
     if (oldrole == 0 || pg->get_role() == 0)
       pg->clear_primary_state();
 
+    dout(10) << *pg << " " << oldacting << " -> " << pg->acting 
+            << ", role " << oldrole << " -> " << role << dendl; 
+    
     // pg->on_*
     for (unsigned i=0; i<oldacting.size(); i++)
       if (osdmap->is_down(oldacting[i]))
@@ -1556,16 +1559,16 @@ void OSD::advance_map(ObjectStore::Transaction& t)
          ls.push_back(it->second);
        pg->replay_queue.clear();
        take_waiters(ls);
-       
-       // take active waiters
-       take_waiters(pg->waiting_for_active);
-       
-       pg->on_role_change();
       }
+
+      pg->on_role_change();
       
+      // take active waiters
+      take_waiters(pg->waiting_for_active);
+
       // new primary?
       if (role == 0) {
-          // i am new primary
+       // i am new primary
        pg->state_clear(PG_STATE_STRAY);
       } else {
        // i am now replica|stray.  we need to send a notify.
@@ -1587,10 +1590,6 @@ void OSD::advance_map(ObjectStore::Transaction& t)
        }
       }
       
-      // my role changed.
-      dout(10) << *pg << " " << oldacting << " -> " << pg->acting 
-              << ", role " << oldrole << " -> " << role << dendl; 
-      
     } else {
       // no role change.
       // did primary change?
@@ -1614,7 +1613,7 @@ void OSD::advance_map(ObjectStore::Transaction& t)
        }
       }
     }
-    
+
     pg->unlock();
   }
 }