ceph: include type in ceph_entity_addr, filepath

Include a type/version in ceph_entity_addr and filepath.  Include extra
byte in filepath encoding as necessary.

Signed-off-by: Sage Weil <sage@newdream.net>
This commit is contained in:
Sage Weil 2010-01-27 14:28:10 -08:00
parent 361be8601d
commit ac8839d7b2
4 changed files with 6 additions and 3 deletions

View File

@ -138,6 +138,7 @@ static inline void ceph_encode_filepath(void **p, void *end,
{ {
u32 len = path ? strlen(path) : 0; u32 len = path ? strlen(path) : 0;
BUG_ON(*p + sizeof(ino) + sizeof(len) + len > end); BUG_ON(*p + sizeof(ino) + sizeof(len) + len > end);
ceph_encode_8(p, 1);
ceph_encode_64(p, ino); ceph_encode_64(p, ino);
ceph_encode_32(p, len); ceph_encode_32(p, len);
if (len) if (len)

View File

@ -1325,7 +1325,7 @@ static struct ceph_msg *create_request_message(struct ceph_mds_client *mdsc,
} }
len = sizeof(*head) + len = sizeof(*head) +
pathlen1 + pathlen2 + 2*(sizeof(u32) + sizeof(u64)); pathlen1 + pathlen2 + 2*(1 + sizeof(u32) + sizeof(u64));
/* calculate (max) length for cap releases */ /* calculate (max) length for cap releases */
len += sizeof(struct ceph_mds_request_release) * len += sizeof(struct ceph_mds_request_release) *

View File

@ -1909,6 +1909,7 @@ struct ceph_messenger *ceph_messenger_create(struct ceph_entity_addr *myaddr)
msgr->inst.addr = *myaddr; msgr->inst.addr = *myaddr;
/* select a random nonce */ /* select a random nonce */
msgr->inst.addr.type = 0;
get_random_bytes(&msgr->inst.addr.nonce, sizeof(msgr->inst.addr.nonce)); get_random_bytes(&msgr->inst.addr.nonce, sizeof(msgr->inst.addr.nonce));
encode_my_addr(msgr); encode_my_addr(msgr);

View File

@ -21,7 +21,7 @@
* whenever the wire protocol changes. try to keep this string length * whenever the wire protocol changes. try to keep this string length
* constant. * constant.
*/ */
#define CEPH_BANNER "ceph v026" #define CEPH_BANNER "ceph v027"
#define CEPH_BANNER_MAX_LEN 30 #define CEPH_BANNER_MAX_LEN 30
@ -61,7 +61,8 @@ extern const char *ceph_entity_type_name(int type);
* entity_addr -- network address * entity_addr -- network address
*/ */
struct ceph_entity_addr { struct ceph_entity_addr {
__le64 nonce; /* unique id for process (e.g. pid) */ __le32 type;
__le32 nonce; /* unique id for process (e.g. pid) */
struct sockaddr_storage in_addr; struct sockaddr_storage in_addr;
} __attribute__ ((packed)); } __attribute__ ((packed));