aboutsummaryrefslogtreecommitdiffstats
path: root/net/ceph
diff options
context:
space:
mode:
authorAlex Elder <elder@inktank.com>2012-05-27 00:26:43 -0400
committerAlex Elder <elder@dreamhost.com>2012-06-06 10:23:54 -0400
commit1bfd89f4e6e1adc6a782d94aa5d4c53be1e404d7 (patch)
tree32bbe82e2817619bf16516d8531a2e5b79e2528c /net/ceph
parent20581c1faf7b15ae1f8b80c0ec757877b0b53151 (diff)
libceph: fully initialize connection in con_init()
Move the initialization of a ceph connection's private pointer, operations vector pointer, and peer name information into ceph_con_init(). Rearrange the arguments so the connection pointer is first. Hide the byte-swapping of the peer entity number inside ceph_con_init() Signed-off-by: Alex Elder <elder@inktank.com> Reviewed-by: Sage Weil <sage@inktank.com>
Diffstat (limited to 'net/ceph')
-rw-r--r--net/ceph/messenger.c9
-rw-r--r--net/ceph/mon_client.c8
-rw-r--r--net/ceph/osd_client.c7
3 files changed, 13 insertions, 11 deletions
diff --git a/net/ceph/messenger.c b/net/ceph/messenger.c
index 36b440a00cc2..3b65f6e6911b 100644
--- a/net/ceph/messenger.c
+++ b/net/ceph/messenger.c
@@ -521,15 +521,22 @@ void ceph_con_put(struct ceph_connection *con)
521/* 521/*
522 * initialize a new connection. 522 * initialize a new connection.
523 */ 523 */
524void ceph_con_init(struct ceph_messenger *msgr, struct ceph_connection *con) 524void ceph_con_init(struct ceph_connection *con, void *private,
525 const struct ceph_connection_operations *ops,
526 struct ceph_messenger *msgr, __u8 entity_type, __u64 entity_num)
525{ 527{
526 dout("con_init %p\n", con); 528 dout("con_init %p\n", con);
527 memset(con, 0, sizeof(*con)); 529 memset(con, 0, sizeof(*con));
530 con->private = private;
531 con->ops = ops;
528 atomic_set(&con->nref, 1); 532 atomic_set(&con->nref, 1);
529 con->msgr = msgr; 533 con->msgr = msgr;
530 534
531 con_sock_state_init(con); 535 con_sock_state_init(con);
532 536
537 con->peer_name.type = (__u8) entity_type;
538 con->peer_name.num = cpu_to_le64(entity_num);
539
533 mutex_init(&con->mutex); 540 mutex_init(&con->mutex);
534 INIT_LIST_HEAD(&con->out_queue); 541 INIT_LIST_HEAD(&con->out_queue);
535 INIT_LIST_HEAD(&con->out_sent); 542 INIT_LIST_HEAD(&con->out_sent);
diff --git a/net/ceph/mon_client.c b/net/ceph/mon_client.c
index 6adbea78b168..ab6b24a5169e 100644
--- a/net/ceph/mon_client.c
+++ b/net/ceph/mon_client.c
@@ -142,11 +142,9 @@ static int __open_session(struct ceph_mon_client *monc)
142 monc->sub_renew_after = jiffies; /* i.e., expired */ 142 monc->sub_renew_after = jiffies; /* i.e., expired */
143 monc->want_next_osdmap = !!monc->want_next_osdmap; 143 monc->want_next_osdmap = !!monc->want_next_osdmap;
144 144
145 ceph_con_init(&monc->client->msgr, &monc->con); 145 ceph_con_init(&monc->con, monc, &mon_con_ops,
146 monc->con.private = monc; 146 &monc->client->msgr,
147 monc->con.ops = &mon_con_ops; 147 CEPH_ENTITY_TYPE_MON, monc->cur_mon);
148 monc->con.peer_name.type = CEPH_ENTITY_TYPE_MON;
149 monc->con.peer_name.num = cpu_to_le64(monc->cur_mon);
150 148
151 dout("open_session mon%d opening\n", monc->cur_mon); 149 dout("open_session mon%d opening\n", monc->cur_mon);
152 ceph_con_open(&monc->con, 150 ceph_con_open(&monc->con,
diff --git a/net/ceph/osd_client.c b/net/ceph/osd_client.c
index 5b41a6929cd9..448c9da8beff 100644
--- a/net/ceph/osd_client.c
+++ b/net/ceph/osd_client.c
@@ -640,11 +640,8 @@ static struct ceph_osd *create_osd(struct ceph_osd_client *osdc, int onum)
640 INIT_LIST_HEAD(&osd->o_osd_lru); 640 INIT_LIST_HEAD(&osd->o_osd_lru);
641 osd->o_incarnation = 1; 641 osd->o_incarnation = 1;
642 642
643 ceph_con_init(&osdc->client->msgr, &osd->o_con); 643 ceph_con_init(&osd->o_con, osd, &osd_con_ops, &osdc->client->msgr,
644 osd->o_con.private = osd; 644 CEPH_ENTITY_TYPE_OSD, onum);
645 osd->o_con.ops = &osd_con_ops;
646 osd->o_con.peer_name.type = CEPH_ENTITY_TYPE_OSD;
647 osd->o_con.peer_name.num = cpu_to_le64(onum);
648 645
649 INIT_LIST_HEAD(&osd->o_keepalive_item); 646 INIT_LIST_HEAD(&osd->o_keepalive_item);
650 return osd; 647 return osd;