summaryrefslogtreecommitdiff
path: root/net/ceph
diff options
context:
space:
mode:
authorIlya Dryomov <idryomov@gmail.com>2020-11-16 19:27:50 +0300
committerIlya Dryomov <idryomov@gmail.com>2020-12-15 01:21:49 +0300
commitfc4c128e15b50c73466dcd7234dde02f6fd9e4f8 (patch)
tree1d9ffce8632210487dc7d1da519ecaab4e6fc936 /net/ceph
parent8ee8abf797bb3cb6007e30ac17a15f93277b0e91 (diff)
downloadlinux-fc4c128e15b50c73466dcd7234dde02f6fd9e4f8.tar.xz
libceph: change ceph_con_in_msg_alloc() to take hdr
ceph_con_in_msg_alloc() is protocol independent, but con->in_hdr (and struct ceph_msg_header in general) is msgr1 specific. While the struct is deeply ingrained inside and outside the messenger, con->in_hdr field can be separated. Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
Diffstat (limited to 'net/ceph')
-rw-r--r--net/ceph/messenger.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/net/ceph/messenger.c b/net/ceph/messenger.c
index ca3f39b4f664..d161878bc342 100644
--- a/net/ceph/messenger.c
+++ b/net/ceph/messenger.c
@@ -2386,7 +2386,8 @@ static int read_partial_msg_data(struct ceph_connection *con)
/*
* read (part of) a message.
*/
-static int ceph_con_in_msg_alloc(struct ceph_connection *con, int *skip);
+static int ceph_con_in_msg_alloc(struct ceph_connection *con,
+ struct ceph_msg_header *hdr, int *skip);
static int read_partial_message(struct ceph_connection *con)
{
@@ -2450,7 +2451,7 @@ static int read_partial_message(struct ceph_connection *con)
dout("got hdr type %d front %d data %d\n", con->in_hdr.type,
front_len, data_len);
- ret = ceph_con_in_msg_alloc(con, &skip);
+ ret = ceph_con_in_msg_alloc(con, &con->in_hdr, &skip);
if (ret < 0)
return ret;
@@ -3455,9 +3456,9 @@ static int ceph_alloc_middle(struct ceph_connection *con, struct ceph_msg *msg)
* On error (ENOMEM, EAGAIN, ...),
* - con->in_msg == NULL
*/
-static int ceph_con_in_msg_alloc(struct ceph_connection *con, int *skip)
+static int ceph_con_in_msg_alloc(struct ceph_connection *con,
+ struct ceph_msg_header *hdr, int *skip)
{
- struct ceph_msg_header *hdr = &con->in_hdr;
int middle_len = le32_to_cpu(hdr->middle_len);
struct ceph_msg *msg;
int ret = 0;
@@ -3489,7 +3490,7 @@ static int ceph_con_in_msg_alloc(struct ceph_connection *con, int *skip)
con->error_msg = "error allocating memory for incoming message";
return -ENOMEM;
}
- memcpy(&con->in_msg->hdr, &con->in_hdr, sizeof(con->in_hdr));
+ memcpy(&con->in_msg->hdr, hdr, sizeof(*hdr));
if (middle_len && !con->in_msg->middle) {
ret = ceph_alloc_middle(con, con->in_msg);