aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ceph/messenger.c
diff options
context:
space:
mode:
authorSage Weil <sage@newdream.net>2010-04-01 19:07:23 -0400
committerSage Weil <sage@newdream.net>2010-05-17 18:25:19 -0400
commitbb257664f748bcfc80715f85f70f0f560caec3b4 (patch)
tree0f03c628328082e660c6a60f6094cde478dadec9 /fs/ceph/messenger.c
parenta79832f26be370ee26ea81eecdfd42d10e49d66a (diff)
ceph: simplify ceph_msg_new
We only need to pass in front_len. Callers can attach any other payload pieces (middle, data) as they see fit. Signed-off-by: Sage Weil <sage@newdream.net>
Diffstat (limited to 'fs/ceph/messenger.c')
-rw-r--r--fs/ceph/messenger.c20
1 files changed, 9 insertions, 11 deletions
diff --git a/fs/ceph/messenger.c b/fs/ceph/messenger.c
index fe7d0c52ae3..395ce326bed 100644
--- a/fs/ceph/messenger.c
+++ b/fs/ceph/messenger.c
@@ -2081,8 +2081,7 @@ void ceph_con_keepalive(struct ceph_connection *con)
2081 * construct a new message with given type, size 2081 * construct a new message with given type, size
2082 * the new msg has a ref count of 1. 2082 * the new msg has a ref count of 1.
2083 */ 2083 */
2084struct ceph_msg *ceph_msg_new(int type, int front_len, 2084struct ceph_msg *ceph_msg_new(int type, int front_len)
2085 int page_len, int page_off, struct page **pages)
2086{ 2085{
2087 struct ceph_msg *m; 2086 struct ceph_msg *m;
2088 2087
@@ -2098,8 +2097,8 @@ struct ceph_msg *ceph_msg_new(int type, int front_len,
2098 m->hdr.version = 0; 2097 m->hdr.version = 0;
2099 m->hdr.front_len = cpu_to_le32(front_len); 2098 m->hdr.front_len = cpu_to_le32(front_len);
2100 m->hdr.middle_len = 0; 2099 m->hdr.middle_len = 0;
2101 m->hdr.data_len = cpu_to_le32(page_len); 2100 m->hdr.data_len = 0;
2102 m->hdr.data_off = cpu_to_le16(page_off); 2101 m->hdr.data_off = 0;
2103 m->hdr.reserved = 0; 2102 m->hdr.reserved = 0;
2104 m->footer.front_crc = 0; 2103 m->footer.front_crc = 0;
2105 m->footer.middle_crc = 0; 2104 m->footer.middle_crc = 0;
@@ -2133,18 +2132,17 @@ struct ceph_msg *ceph_msg_new(int type, int front_len,
2133 m->middle = NULL; 2132 m->middle = NULL;
2134 2133
2135 /* data */ 2134 /* data */
2136 m->nr_pages = calc_pages_for(page_off, page_len); 2135 m->nr_pages = 0;
2137 m->pages = pages; 2136 m->pages = NULL;
2138 m->pagelist = NULL; 2137 m->pagelist = NULL;
2139 2138
2140 dout("ceph_msg_new %p page %d~%d -> %d\n", m, page_off, page_len, 2139 dout("ceph_msg_new %p front %d\n", m, front_len);
2141 m->nr_pages);
2142 return m; 2140 return m;
2143 2141
2144out2: 2142out2:
2145 ceph_msg_put(m); 2143 ceph_msg_put(m);
2146out: 2144out:
2147 pr_err("msg_new can't create type %d len %d\n", type, front_len); 2145 pr_err("msg_new can't create type %d front %d\n", type, front_len);
2148 return NULL; 2146 return NULL;
2149} 2147}
2150 2148
@@ -2193,7 +2191,7 @@ static struct ceph_msg *ceph_alloc_msg(struct ceph_connection *con,
2193 } 2191 }
2194 if (!msg) { 2192 if (!msg) {
2195 *skip = 0; 2193 *skip = 0;
2196 msg = ceph_msg_new(type, front_len, 0, 0, NULL); 2194 msg = ceph_msg_new(type, front_len);
2197 if (!msg) { 2195 if (!msg) {
2198 pr_err("unable to allocate msg type %d len %d\n", 2196 pr_err("unable to allocate msg type %d len %d\n",
2199 type, front_len); 2197 type, front_len);
@@ -2202,7 +2200,7 @@ static struct ceph_msg *ceph_alloc_msg(struct ceph_connection *con,
2202 } 2200 }
2203 memcpy(&msg->hdr, &con->in_hdr, sizeof(con->in_hdr)); 2201 memcpy(&msg->hdr, &con->in_hdr, sizeof(con->in_hdr));
2204 2202
2205 if (middle_len) { 2203 if (middle_len && !msg->middle) {
2206 ret = ceph_alloc_middle(con, msg); 2204 ret = ceph_alloc_middle(con, msg);
2207 if (ret < 0) { 2205 if (ret < 0) {
2208 ceph_msg_put(msg); 2206 ceph_msg_put(msg);