Re: [PATCH 1/3] ceph: messenger: use read_partial() in read_partial_message()

2012-05-12 Thread Sage Weil
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


[PATCH 1/3] ceph: messenger: use read_partial() in read_partial_message()

2012-05-10 Thread Alex Elder

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