Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 15d9882c authored by Alex Elder's avatar Alex Elder Committed by Alex Elder
Browse files

libceph: embed ceph messenger structure in ceph_client



A ceph client has a pointer to a ceph messenger structure in it.
There is always exactly one ceph messenger for a ceph client, so
there is no need to allocate it separate from the ceph client
structure.

Switch the ceph_client structure to embed its ceph_messenger
structure.

Signed-off-by: default avatarAlex Elder <elder@inktank.com>
Reviewed-by: default avatarYehuda Sadeh <yehuda@inktank.com>
Reviewed-by: default avatarSage Weil <sage@inktank.com>
parent e2200423
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -394,7 +394,7 @@ static struct ceph_mds_session *register_session(struct ceph_mds_client *mdsc,
	s->s_seq = 0;
	mutex_init(&s->s_mutex);

	ceph_con_init(mdsc->fsc->client->msgr, &s->s_con);
	ceph_con_init(&mdsc->fsc->client->msgr, &s->s_con);
	s->s_con.private = s;
	s->s_con.ops = &mds_con_ops;
	s->s_con.peer_name.type = CEPH_ENTITY_TYPE_MDS;
+1 −1
Original line number Diff line number Diff line
@@ -131,7 +131,7 @@ struct ceph_client {
	u32 supported_features;
	u32 required_features;

	struct ceph_messenger *msgr;   /* messenger instance */
	struct ceph_messenger msgr;   /* messenger instance */
	struct ceph_mon_client monc;
	struct ceph_osd_client osdc;

+5 −4
Original line number Diff line number Diff line
@@ -211,10 +211,11 @@ extern int ceph_msgr_init(void);
extern void ceph_msgr_exit(void);
extern void ceph_msgr_flush(void);

extern struct ceph_messenger *ceph_messenger_create(
extern void ceph_messenger_init(struct ceph_messenger *msgr,
			struct ceph_entity_addr *myaddr,
	u32 features, u32 required);
extern void ceph_messenger_destroy(struct ceph_messenger *);
			u32 supported_features,
			u32 required_features,
			bool nocrc);

extern void ceph_con_init(struct ceph_messenger *msgr,
			  struct ceph_connection *con);
+5 −13
Original line number Diff line number Diff line
@@ -468,19 +468,15 @@ struct ceph_client *ceph_create_client(struct ceph_options *opt, void *private,
	/* msgr */
	if (ceph_test_opt(client, MYIP))
		myaddr = &client->options->my_addr;
	client->msgr = ceph_messenger_create(myaddr,
	ceph_messenger_init(&client->msgr, myaddr,
		client->supported_features,
					     client->required_features);
	if (IS_ERR(client->msgr)) {
		err = PTR_ERR(client->msgr);
		goto fail;
	}
	client->msgr->nocrc = ceph_test_opt(client, NOCRC);
		client->required_features,
		ceph_test_opt(client, NOCRC));

	/* subsystems */
	err = ceph_monc_init(&client->monc, client);
	if (err < 0)
		goto fail_msgr;
		goto fail;
	err = ceph_osdc_init(&client->osdc, client);
	if (err < 0)
		goto fail_monc;
@@ -489,8 +485,6 @@ struct ceph_client *ceph_create_client(struct ceph_options *opt, void *private,

fail_monc:
	ceph_monc_stop(&client->monc);
fail_msgr:
	ceph_messenger_destroy(client->msgr);
fail:
	kfree(client);
	return ERR_PTR(err);
@@ -515,8 +509,6 @@ void ceph_destroy_client(struct ceph_client *client)

	ceph_debugfs_client_cleanup(client);

	ceph_messenger_destroy(client->msgr);

	ceph_destroy_options(client->options);

	kfree(client);
+9 −21
Original line number Diff line number Diff line
@@ -2245,18 +2245,14 @@ out:


/*
 * create a new messenger instance
 * initialize a new messenger instance
 */
struct ceph_messenger *ceph_messenger_create(struct ceph_entity_addr *myaddr,
void ceph_messenger_init(struct ceph_messenger *msgr,
			struct ceph_entity_addr *myaddr,
			u32 supported_features,
					     u32 required_features)
			u32 required_features,
			bool nocrc)
{
	struct ceph_messenger *msgr;

	msgr = kzalloc(sizeof(*msgr), GFP_KERNEL);
	if (msgr == NULL)
		return ERR_PTR(-ENOMEM);

	msgr->supported_features = supported_features;
	msgr->required_features = required_features;

@@ -2269,19 +2265,11 @@ struct ceph_messenger *ceph_messenger_create(struct ceph_entity_addr *myaddr,
	msgr->inst.addr.type = 0;
	get_random_bytes(&msgr->inst.addr.nonce, sizeof(msgr->inst.addr.nonce));
	encode_my_addr(msgr);
	msgr->nocrc = nocrc;

	dout("messenger_create %p\n", msgr);
	return msgr;
}
EXPORT_SYMBOL(ceph_messenger_create);

void ceph_messenger_destroy(struct ceph_messenger *msgr)
{
	dout("destroy %p\n", msgr);
	kfree(msgr);
	dout("destroyed messenger %p\n", msgr);
	dout("%s %p\n", __func__, msgr);
}
EXPORT_SYMBOL(ceph_messenger_destroy);
EXPORT_SYMBOL(ceph_messenger_init);

static void clear_standby(struct ceph_connection *con)
{
Loading