From fc4c128e15b50c73466dcd7234dde02f6fd9e4f8 Mon Sep 17 00:00:00 2001 From: Ilya Dryomov Date: Mon, 16 Nov 2020 17:27:50 +0100 Subject: [PATCH] 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 --- net/ceph/messenger.c | 11 ++++++----- 1 file 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);