Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 188676
b: refs/heads/master
c: 103e2d3
h: refs/heads/master
v: v3
  • Loading branch information
Sage Weil committed Jan 14, 2010
1 parent a5abd54 commit 5690e4f
Show file tree
Hide file tree
Showing 5 changed files with 16 additions and 33 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 4baa75ef0ed29adae03fcbbaa9aca1511a5a8cc9
refs/heads/master: 103e2d3ae57d38d18aaac1b327266c1407499ac1
19 changes: 8 additions & 11 deletions trunk/fs/ceph/messenger.c
Original file line number Diff line number Diff line change
Expand Up @@ -1056,16 +1056,15 @@ static int process_banner(struct ceph_connection *con)
* end may not yet know their ip address, so if it's 0.0.0.0, give
* them the benefit of the doubt.
*/
if (!ceph_entity_addr_is_local(&con->peer_addr,
&con->actual_peer_addr) &&
if (memcmp(&con->peer_addr, &con->actual_peer_addr,
sizeof(con->peer_addr)) != 0 &&
!(addr_is_blank(&con->actual_peer_addr.in_addr) &&
con->actual_peer_addr.nonce == con->peer_addr.nonce)) {
pr_warning("wrong peer, want %s/%d, "
"got %s/%d\n",
pr_addr(&con->peer_addr.in_addr),
con->peer_addr.nonce,
pr_addr(&con->actual_peer_addr.in_addr),
con->actual_peer_addr.nonce);
pr_warning("wrong peer, want %s/%lld, got %s/%lld\n",
pr_addr(&con->peer_addr.in_addr),
le64_to_cpu(con->peer_addr.nonce),
pr_addr(&con->actual_peer_addr.in_addr),
le64_to_cpu(con->actual_peer_addr.nonce));
con->error_msg = "wrong peer at address";
return -1;
}
Expand Down Expand Up @@ -1934,8 +1933,7 @@ struct ceph_messenger *ceph_messenger_create(struct ceph_entity_addr *myaddr)
msgr->inst.addr = *myaddr;

/* select a random nonce */
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);

dout("messenger_create %p\n", msgr);
Expand Down Expand Up @@ -1966,7 +1964,6 @@ void ceph_con_send(struct ceph_connection *con, struct ceph_msg *msg)
msg->hdr.src.name = con->msgr->inst.name;
msg->hdr.src.addr = con->msgr->my_enc_addr;
msg->hdr.orig_src = msg->hdr.src;
msg->hdr.dst_erank = con->peer_addr.erank;

/* queue */
mutex_lock(&con->mutex);
Expand Down
3 changes: 1 addition & 2 deletions trunk/fs/ceph/mon_client.c
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ int ceph_monmap_contains(struct ceph_monmap *m, struct ceph_entity_addr *addr)
int i;

for (i = 0; i < m->num_mon; i++)
if (ceph_entity_addr_equal(addr, &m->mon_inst[i].addr))
if (memcmp(addr, &m->mon_inst[i].addr, sizeof(*addr)) == 0)
return 1;
return 0;
}
Expand Down Expand Up @@ -503,7 +503,6 @@ static int build_initial_monmap(struct ceph_mon_client *monc)
return -ENOMEM;
for (i = 0; i < num_mon; i++) {
monc->monmap->mon_inst[i].addr = mon_addr[i];
monc->monmap->mon_inst[i].addr.erank = 0;
monc->monmap->mon_inst[i].addr.nonce = 0;
monc->monmap->mon_inst[i].name.type =
CEPH_ENTITY_TYPE_MON;
Expand Down
18 changes: 2 additions & 16 deletions trunk/fs/ceph/msgr.h
Original file line number Diff line number Diff line change
Expand Up @@ -61,24 +61,10 @@ extern const char *ceph_entity_type_name(int type);
* entity_addr -- network address
*/
struct ceph_entity_addr {
__le32 erank; /* entity's rank in process */
__le32 nonce; /* unique id for process (e.g. pid) */
__le64 nonce; /* unique id for process (e.g. pid) */
struct sockaddr_storage in_addr;
} __attribute__ ((packed));

static inline bool ceph_entity_addr_is_local(const struct ceph_entity_addr *a,
const struct ceph_entity_addr *b)
{
return a->nonce == b->nonce &&
memcmp(&a->in_addr, &b->in_addr, sizeof(a->in_addr)) == 0;
}

static inline bool ceph_entity_addr_equal(const struct ceph_entity_addr *a,
const struct ceph_entity_addr *b)
{
return memcmp(a, b, sizeof(*a)) == 0;
}

struct ceph_entity_inst {
struct ceph_entity_name name;
struct ceph_entity_addr addr;
Expand Down Expand Up @@ -147,7 +133,7 @@ struct ceph_msg_header {
receiver: mask against ~PAGE_MASK */

struct ceph_entity_inst src, orig_src;
__le32 dst_erank;
__le32 reserved;
__le32 crc; /* header crc32c */
} __attribute__ ((packed));

Expand Down
7 changes: 4 additions & 3 deletions trunk/fs/ceph/osd_client.c
Original file line number Diff line number Diff line change
Expand Up @@ -821,9 +821,10 @@ static void kick_requests(struct ceph_osd_client *osdc,

n = rb_next(p);
if (!ceph_osd_is_up(osdc->osdmap, osd->o_osd) ||
!ceph_entity_addr_equal(&osd->o_con.peer_addr,
ceph_osd_addr(osdc->osdmap,
osd->o_osd)))
memcmp(&osd->o_con.peer_addr,
ceph_osd_addr(osdc->osdmap,
osd->o_osd),
sizeof(struct ceph_entity_addr)) != 0)
reset_osd(osdc, osd);
}
}
Expand Down

0 comments on commit 5690e4f

Please sign in to comment.