From 166e4684fedfbe774833a1edd1a643fc9089f0d3 Mon Sep 17 00:00:00 2001 From: sageweil Date: Thu, 30 Aug 2007 23:30:15 +0000 Subject: [PATCH] fixed osdmap oid hashing; osd shutdown git-svn-id: https://ceph.svn.sf.net/svnroot/ceph@1752 29311d96-e01e-0410-9327-a35deaab8ce9 --- trunk/ceph/osd/OSD.cc | 5 +++++ trunk/ceph/osd/OSDMap.h | 5 +++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/trunk/ceph/osd/OSD.cc b/trunk/ceph/osd/OSD.cc index 94a2aad15de70..8d35759a96951 100644 --- a/trunk/ceph/osd/OSD.cc +++ b/trunk/ceph/osd/OSD.cc @@ -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(); diff --git a/trunk/ceph/osd/OSDMap.h b/trunk/ceph/osd/OSDMap.h index 25a5eef3d10e6..b8b0caee7e9cb 100644 --- a/trunk/ceph/osd/OSDMap.h +++ b/trunk/ceph/osd/OSDMap.h @@ -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: -- 2.39.5