]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
fixed osdmap oid hashing; osd shutdown
authorsageweil <sageweil@29311d96-e01e-0410-9327-a35deaab8ce9>
Thu, 30 Aug 2007 23:30:15 +0000 (23:30 +0000)
committersageweil <sageweil@29311d96-e01e-0410-9327-a35deaab8ce9>
Thu, 30 Aug 2007 23:30:15 +0000 (23:30 +0000)
git-svn-id: https://ceph.svn.sf.net/svnroot/ceph@1752 29311d96-e01e-0410-9327-a35deaab8ce9

trunk/ceph/osd/OSD.cc
trunk/ceph/osd/OSDMap.h

index 94a2aad15de708d2896a1140ee91d5d4094dd8bb..8d35759a9695145e334791fb2cb9c65702d304ea 100644 (file)
@@ -989,6 +989,11 @@ void OSD::ms_handle_failure(Message *m, const entity_inst_t& inst)
     exit(0);
   }
 
+  if (is_stopping()) {
+    delete m;
+    return;
+  }
+
   if (dest.is_osd()) {
     // failed osd.  drop message, report to mon.
     int mon = monmap->pick_mon();
index 25a5eef3d10e6b295ccd074c63d557922fb686bc..b8b0caee7e9cb8869408b331f8f9f3a5da3a9c1a 100644 (file)
@@ -327,11 +327,12 @@ private:
       break;
       
     case OBJECT_LAYOUT_HASHINO:
-      ps = stable_mod(oid.bno + H(oid.ino), num, num_mask);
+      ps = stable_mod(oid.bno + H(oid.ino)^H(oid.ino>>32), num, num_mask);
       break;
 
     case OBJECT_LAYOUT_HASH:
-      ps = stable_mod(H( (oid.bno & oid.ino) ^ ((oid.bno^oid.ino) >> 32) ), num, num_mask);
+      //ps = stable_mod(H( (oid.bno & oid.ino) ^ ((oid.bno^oid.ino) >> 32) ), num, num_mask);
+      ps = stable_mod(H(oid.bno) ^ H(oid.ino)^H(oid.ino>>32), num, num_mask);
       break;
 
     default: