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

Commit 90af3602 authored by Alex Elder's avatar Alex Elder Committed by Sage Weil
Browse files

libceph: add, don't set data for a message

Change the names of the functions that put data on a pagelist to
reflect that we're adding to whatever's already there rather than
just setting it to the one thing.  Currently only one data item is
ever added to a message, but that's about to change.

This resolves:
    http://tracker.ceph.com/issues/2770



Signed-off-by: default avatarAlex Elder <elder@inktank.com>
Reviewed-by: default avatarJosh Durgin <josh.durgin@inktank.com>
parent ca8b3a69
Loading
Loading
Loading
Loading
+2 −2
Original line number Original line Diff line number Diff line
@@ -1724,7 +1724,7 @@ static struct ceph_msg *create_request_message(struct ceph_mds_client *mdsc,
	if (req->r_data_len) {
	if (req->r_data_len) {
		/* outbound data set only by ceph_sync_setxattr() */
		/* outbound data set only by ceph_sync_setxattr() */
		BUG_ON(!req->r_pages);
		BUG_ON(!req->r_pages);
		ceph_msg_data_set_pages(msg, req->r_pages, req->r_data_len, 0);
		ceph_msg_data_add_pages(msg, req->r_pages, req->r_data_len, 0);
	}
	}


	msg->hdr.data_len = cpu_to_le32(req->r_data_len);
	msg->hdr.data_len = cpu_to_le32(req->r_data_len);
@@ -2608,7 +2608,7 @@ static void send_mds_reconnect(struct ceph_mds_client *mdsc,
	if (pagelist->length) {
	if (pagelist->length) {
		/* set up outbound data if we have any */
		/* set up outbound data if we have any */
		reply->hdr.data_len = cpu_to_le32(pagelist->length);
		reply->hdr.data_len = cpu_to_le32(pagelist->length);
		ceph_msg_data_set_pagelist(reply, pagelist);
		ceph_msg_data_add_pagelist(reply, pagelist);
	}
	}
	ceph_con_send(&session->s_con, reply);
	ceph_con_send(&session->s_con, reply);


+3 −3
Original line number Original line Diff line number Diff line
@@ -275,12 +275,12 @@ extern void ceph_msg_revoke_incoming(struct ceph_msg *msg);


extern void ceph_con_keepalive(struct ceph_connection *con);
extern void ceph_con_keepalive(struct ceph_connection *con);


extern void ceph_msg_data_set_pages(struct ceph_msg *msg, struct page **pages,
extern void ceph_msg_data_add_pages(struct ceph_msg *msg, struct page **pages,
				size_t length, size_t alignment);
				size_t length, size_t alignment);
extern void ceph_msg_data_set_pagelist(struct ceph_msg *msg,
extern void ceph_msg_data_add_pagelist(struct ceph_msg *msg,
				struct ceph_pagelist *pagelist);
				struct ceph_pagelist *pagelist);
#ifdef CONFIG_BLOCK
#ifdef CONFIG_BLOCK
extern void ceph_msg_data_set_bio(struct ceph_msg *msg, struct bio *bio,
extern void ceph_msg_data_add_bio(struct ceph_msg *msg, struct bio *bio,
				size_t length);
				size_t length);
#endif /* CONFIG_BLOCK */
#endif /* CONFIG_BLOCK */


+6 −6
Original line number Original line Diff line number Diff line
@@ -3005,7 +3005,7 @@ static void ceph_msg_data_destroy(struct ceph_msg_data *data)
	kfree(data);
	kfree(data);
}
}


void ceph_msg_data_set_pages(struct ceph_msg *msg, struct page **pages,
void ceph_msg_data_add_pages(struct ceph_msg *msg, struct page **pages,
		size_t length, size_t alignment)
		size_t length, size_t alignment)
{
{
	struct ceph_msg_data *data;
	struct ceph_msg_data *data;
@@ -3023,9 +3023,9 @@ void ceph_msg_data_set_pages(struct ceph_msg *msg, struct page **pages,
	list_add_tail(&data->links, &msg->data);
	list_add_tail(&data->links, &msg->data);
	msg->data_length += length;
	msg->data_length += length;
}
}
EXPORT_SYMBOL(ceph_msg_data_set_pages);
EXPORT_SYMBOL(ceph_msg_data_add_pages);


void ceph_msg_data_set_pagelist(struct ceph_msg *msg,
void ceph_msg_data_add_pagelist(struct ceph_msg *msg,
				struct ceph_pagelist *pagelist)
				struct ceph_pagelist *pagelist)
{
{
	struct ceph_msg_data *data;
	struct ceph_msg_data *data;
@@ -3040,10 +3040,10 @@ void ceph_msg_data_set_pagelist(struct ceph_msg *msg,
	list_add_tail(&data->links, &msg->data);
	list_add_tail(&data->links, &msg->data);
	msg->data_length += pagelist->length;
	msg->data_length += pagelist->length;
}
}
EXPORT_SYMBOL(ceph_msg_data_set_pagelist);
EXPORT_SYMBOL(ceph_msg_data_add_pagelist);


#ifdef	CONFIG_BLOCK
#ifdef	CONFIG_BLOCK
void ceph_msg_data_set_bio(struct ceph_msg *msg, struct bio *bio,
void ceph_msg_data_add_bio(struct ceph_msg *msg, struct bio *bio,
		size_t length)
		size_t length)
{
{
	struct ceph_msg_data *data;
	struct ceph_msg_data *data;
@@ -3058,7 +3058,7 @@ void ceph_msg_data_set_bio(struct ceph_msg *msg, struct bio *bio,
	list_add_tail(&data->links, &msg->data);
	list_add_tail(&data->links, &msg->data);
	msg->data_length += length;
	msg->data_length += length;
}
}
EXPORT_SYMBOL(ceph_msg_data_set_bio);
EXPORT_SYMBOL(ceph_msg_data_add_bio);
#endif	/* CONFIG_BLOCK */
#endif	/* CONFIG_BLOCK */


/*
/*
+8 −8
Original line number Original line Diff line number Diff line
@@ -550,7 +550,7 @@ void osd_req_op_watch_init(struct ceph_osd_request *osd_req,
}
}
EXPORT_SYMBOL(osd_req_op_watch_init);
EXPORT_SYMBOL(osd_req_op_watch_init);


static void ceph_osdc_msg_data_set(struct ceph_msg *msg,
static void ceph_osdc_msg_data_add(struct ceph_msg *msg,
				struct ceph_osd_data *osd_data)
				struct ceph_osd_data *osd_data)
{
{
	u64 length = ceph_osd_data_length(osd_data);
	u64 length = ceph_osd_data_length(osd_data);
@@ -558,14 +558,14 @@ static void ceph_osdc_msg_data_set(struct ceph_msg *msg,
	if (osd_data->type == CEPH_OSD_DATA_TYPE_PAGES) {
	if (osd_data->type == CEPH_OSD_DATA_TYPE_PAGES) {
		BUG_ON(length > (u64) SIZE_MAX);
		BUG_ON(length > (u64) SIZE_MAX);
		if (length)
		if (length)
			ceph_msg_data_set_pages(msg, osd_data->pages,
			ceph_msg_data_add_pages(msg, osd_data->pages,
					length, osd_data->alignment);
					length, osd_data->alignment);
	} else if (osd_data->type == CEPH_OSD_DATA_TYPE_PAGELIST) {
	} else if (osd_data->type == CEPH_OSD_DATA_TYPE_PAGELIST) {
		BUG_ON(!length);
		BUG_ON(!length);
		ceph_msg_data_set_pagelist(msg, osd_data->pagelist);
		ceph_msg_data_add_pagelist(msg, osd_data->pagelist);
#ifdef CONFIG_BLOCK
#ifdef CONFIG_BLOCK
	} else if (osd_data->type == CEPH_OSD_DATA_TYPE_BIO) {
	} else if (osd_data->type == CEPH_OSD_DATA_TYPE_BIO) {
		ceph_msg_data_set_bio(msg, osd_data->bio, length);
		ceph_msg_data_add_bio(msg, osd_data->bio, length);
#endif
#endif
	} else {
	} else {
		BUG_ON(osd_data->type != CEPH_OSD_DATA_TYPE_NONE);
		BUG_ON(osd_data->type != CEPH_OSD_DATA_TYPE_NONE);
@@ -600,18 +600,18 @@ static u64 osd_req_encode_op(struct ceph_osd_request *req,
		dst->extent.truncate_seq =
		dst->extent.truncate_seq =
			cpu_to_le32(src->extent.truncate_seq);
			cpu_to_le32(src->extent.truncate_seq);
		if (src->op == CEPH_OSD_OP_WRITE)
		if (src->op == CEPH_OSD_OP_WRITE)
			ceph_osdc_msg_data_set(req->r_request,
			ceph_osdc_msg_data_add(req->r_request,
						&src->extent.osd_data);
						&src->extent.osd_data);
		else
		else
			ceph_osdc_msg_data_set(req->r_reply,
			ceph_osdc_msg_data_add(req->r_reply,
						&src->extent.osd_data);
						&src->extent.osd_data);
		break;
		break;
	case CEPH_OSD_OP_CALL:
	case CEPH_OSD_OP_CALL:
		dst->cls.class_len = src->cls.class_len;
		dst->cls.class_len = src->cls.class_len;
		dst->cls.method_len = src->cls.method_len;
		dst->cls.method_len = src->cls.method_len;
		dst->cls.indata_len = cpu_to_le32(src->cls.request_data_len);
		dst->cls.indata_len = cpu_to_le32(src->cls.request_data_len);
		ceph_osdc_msg_data_set(req->r_reply, &src->cls.response_data);
		ceph_osdc_msg_data_add(req->r_reply, &src->cls.response_data);
		ceph_osdc_msg_data_set(req->r_request, &src->cls.request_info);
		ceph_osdc_msg_data_add(req->r_request, &src->cls.request_info);
		BUG_ON(src->cls.request_info.type !=
		BUG_ON(src->cls.request_info.type !=
					CEPH_OSD_DATA_TYPE_PAGELIST);
					CEPH_OSD_DATA_TYPE_PAGELIST);
		request_data_len = src->cls.request_info.pagelist->length;
		request_data_len = src->cls.request_info.pagelist->length;