Reviewed-by: Sage Weil s...@inktank.com
On Thu, 10 May 2012, Alex Elder wrote:
There are two blocks of code in read_partial_message()--those that
read the header and footer of the message--that can be replaced by a
call to read_partial(). Do that.
Signed-off-by: Alex Elder el...@inktank.com
---
net/ceph/messenger.c | 30 ++
1 file changed, 10 insertions(+), 20 deletions(-)
diff --git a/net/ceph/messenger.c b/net/ceph/messenger.c
index f0993af..673133e 100644
--- a/net/ceph/messenger.c
+++ b/net/ceph/messenger.c
@@ -1628,7 +1628,7 @@ static int read_partial_message(struct ceph_connection
*con)
{
struct ceph_msg *m = con-in_msg;
int ret;
- int to, left;
+ int to;
unsigned front_len, middle_len, data_len;
bool do_datacrc = !con-msgr-nocrc;
int skip;
@@ -1638,15 +1638,10 @@ static int read_partial_message(struct ceph_connection
*con)
dout(read_partial_message con %p msg %p\n, con, m);
/* header */
- while (con-in_base_pos sizeof(con-in_hdr)) {
- left = sizeof(con-in_hdr) - con-in_base_pos;
- ret = ceph_tcp_recvmsg(con-sock,
-(char *)con-in_hdr +
con-in_base_pos,
-left);
- if (ret = 0)
- return ret;
- con-in_base_pos += ret;
- }
+ to = 0;
+ ret = read_partial(con, to, sizeof (con-in_hdr), con-in_hdr);
+ if (ret = 0)
+ return ret;
crc = crc32c(0, con-in_hdr, offsetof(struct ceph_msg_header, crc));
if (cpu_to_le32(crc) != con-in_hdr.crc) {
@@ -1759,16 +1754,11 @@ static int read_partial_message(struct ceph_connection
*con)
}
/* footer */
- to = sizeof(m-hdr) + sizeof(m-footer);
- while (con-in_base_pos to) {
- left = to - con-in_base_pos;
- ret = ceph_tcp_recvmsg(con-sock, (char *)m-footer +
-(con-in_base_pos - sizeof(m-hdr)),
-left);
- if (ret = 0)
- return ret;
- con-in_base_pos += ret;
- }
+ to = sizeof (m-hdr);
+ ret = read_partial(con, to, sizeof (m-footer), m-footer);
+ if (ret = 0)
+ return ret;
+
dout(read_partial_message got msg %p %d (%u) + %d (%u) + %d (%u)\n,
m, front_len, m-footer.front_crc, middle_len,
m-footer.middle_crc, data_len, m-footer.data_crc);
--
1.7.9.5
--
To unsubscribe from this list: send the line unsubscribe ceph-devel in
the body of a message to majord...@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line unsubscribe ceph-devel in
the body of a message to majord...@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html