]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
msgr: fix ip address discovery when using -m monip:port
authorSage Weil <sage@newdream.net>
Wed, 18 Jun 2008 03:33:43 +0000 (20:33 -0700)
committerSage Weil <sage@newdream.net>
Wed, 18 Jun 2008 03:33:43 +0000 (20:33 -0700)
src/msg/SimpleMessenger.cc
src/msg/msg_types.h

index 5e72f852bae6e8940b44603ee61f2a88e2d83d0f..830ec3221acca1aae0035cbe7545923b55f906db 100644 (file)
@@ -1399,8 +1399,9 @@ void Rank::Pipe::reader()
 
          // first message?
          if (rank.need_addr) {
+           entity->_set_myaddr(m->get_dest_inst().addr);
            rank.rank_addr = m->get_dest_inst().addr;
-           entity->_set_myaddr(rank.rank_addr);
+           rank.rank_addr.erank = 0;
            dout(2) << "reader my rank addr is " << rank.rank_addr << dendl;
            rank.need_addr = false;
          }
index 29d69c4adf5f55c68aa6c84d4692f2c6f1dc3bdb..1830ce9cf5ef7d95ed8d21a30511140d2f3ab291 100644 (file)
@@ -107,7 +107,7 @@ namespace __gnu_cxx {
   {
     size_t operator()( const entity_name_t m ) const
     {
-      return rjhash32(m.type()) ^ rjhash32(m.num());
+      return rjhash32(m.type() ^ m.num());
     }
   };
 }
@@ -191,7 +191,8 @@ namespace __gnu_cxx {
     size_t operator()( const entity_addr_t& x ) const
     {
       static blobhash H;
-      return H((const char*)&x, sizeof(x));
+      return H((const char*)&x.ipaddr, sizeof(x.ipaddr)) ^
+       rjhash32(x.erank ^ x.nonce);
     }
   };
 }
@@ -234,8 +235,9 @@ namespace __gnu_cxx {
   {
     size_t operator()( const entity_inst_t& x ) const
     {
-      static blobhash H;
-      return H((const char*)&x, sizeof(x));
+      static hash< entity_name_t > H;
+      static hash< entity_addr_t > I;
+      return H(x.name) ^ I(x.addr);
     }
   };
 }