Hi Zhao, On Tue, 31 May 2016, Junwang Zhao wrote: > Hi Sage & Haomai, > > I try to run './vstart.sh -d -x -n' to test the patches today, I got > some error like 'wrong node', after some work, I found the > error was introduced by this patch[0]. I change the code to > use the legacy decode and encode, but got stuck somewhere. > > --- a/src/msg/msg_types.h > +++ b/src/msg/msg_types.h > @@ -371,7 +371,7 @@ struct entity_addr_t { > // broader study > > void encode(bufferlist& bl, uint64_t features) const { > - if ((features & CEPH_FEATURE_MSG_ADDR2) == 0) { > + if ((features & CEPH_FEATURE_MSG_ADDR2) != 0) { > ::encode((__u32)0, bl); > ::encode(nonce, bl); > sockaddr_storage ss = get_sockaddr_storage(); > > > Can you please see the patch again and give some comments? > > [0]https://github.com/zhjwpku/ceph/commit/8934f038fdf28156038770e601e4a27f7a684390 This was enough to make things work fo rme: diff --git a/src/msg/msg_types.h b/src/msg/msg_types.h index 9c521e6..0da0614 100644 --- a/src/msg/msg_types.h +++ b/src/msg/msg_types.h @@ -199,8 +199,7 @@ WRITE_CLASS_ENCODER(ceph_sockaddr_storage) struct entity_addr_t { typedef enum { - TYPE_NONE = 0, - TYPE_LEGACY = 1, + TYPE_LEGACY = 0, } type_t; __u32 type; @@ -211,7 +210,7 @@ struct entity_addr_t { sockaddr_in6 sin6; } u; - entity_addr_t() : type(0), nonce(0) { + entity_addr_t() : type(TYPE_LEGACY), nonce(0) { memset(&u, 0, sizeof(u)); } explicit entity_addr_t(const ceph_entity_addr &o) { but I think this is not the right fix. I think we still want TYPE_NONE, TYPE_LEGACY, and (soon) TYPE_MSGR2, and that the core problem is places that are creating addrs aren't setting the type properly. Going to play with this a bit... sage -- To unsubscribe from this list: send the line "unsubscribe ceph-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html