summaryrefslogtreecommitdiffstats
path: root/net/ceph
diff options
context:
space:
mode:
authorAlex Elder <elder@inktank.com>2013-03-11 23:34:23 -0500
committerSage Weil <sage@inktank.com>2013-05-01 21:17:32 -0700
commit643c68a4a990612720479078f3450d5b766da9f2 (patch)
tree4a81548a9b0242fa4bdb95a05d01ba125d7be45f /net/ceph
parent4c59b4a278f9b7a418ad8af933fd7b341df64393 (diff)
downloadlinux-643c68a4a990612720479078f3450d5b766da9f2.tar.bz2
libceph: use cursor resid for loop condition
Use the "resid" field of a cursor rather than finding when the message data position has moved up to meet the data length to determine when all data has been sent or received in write_partial_message_data() and read_partial_msg_data(). This is cleanup of old code related to: http://tracker.ceph.com/issues/4428 Signed-off-by: Alex Elder <elder@inktank.com> Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
Diffstat (limited to 'net/ceph')
-rw-r--r--net/ceph/messenger.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/net/ceph/messenger.c b/net/ceph/messenger.c
index 6b5b5c625547..2fabf006e8f5 100644
--- a/net/ceph/messenger.c
+++ b/net/ceph/messenger.c
@@ -1460,8 +1460,8 @@ static u32 ceph_crc32c_page(u32 crc, struct page *page,
static int write_partial_message_data(struct ceph_connection *con)
{
struct ceph_msg *msg = con->out_msg;
+ struct ceph_msg_data_cursor *cursor = &msg->data.cursor;
struct ceph_msg_pos *msg_pos = &con->out_msg_pos;
- unsigned int data_len = le32_to_cpu(msg->hdr.data_len);
bool do_datacrc = !con->msgr->nocrc;
int ret;
@@ -1479,7 +1479,7 @@ static int write_partial_message_data(struct ceph_connection *con)
* need to map the page. If we have no pages, they have
* been revoked, so use the zero page.
*/
- while (data_len > msg_pos->data_pos) {
+ while (cursor->resid) {
struct page *page;
size_t page_offset;
size_t length;
@@ -1489,7 +1489,6 @@ static int write_partial_message_data(struct ceph_connection *con)
&last_piece);
if (do_datacrc && !msg_pos->did_page_crc) {
u32 crc = le32_to_cpu(msg->footer.data_crc);
-
crc = ceph_crc32c_page(crc, page, page_offset, length);
msg->footer.data_crc = cpu_to_le32(crc);
msg_pos->did_page_crc = true;
@@ -2158,7 +2157,7 @@ static int read_partial_message_section(struct ceph_connection *con,
static int read_partial_msg_data(struct ceph_connection *con)
{
struct ceph_msg *msg = con->in_msg;
- struct ceph_msg_pos *msg_pos = &con->in_msg_pos;
+ struct ceph_msg_data_cursor *cursor = &msg->data.cursor;
const bool do_datacrc = !con->msgr->nocrc;
unsigned int data_len;
struct page *page;
@@ -2171,7 +2170,7 @@ static int read_partial_msg_data(struct ceph_connection *con)
return -EIO;
data_len = le32_to_cpu(con->in_hdr.data_len);
- while (msg_pos->data_pos < data_len) {
+ while (cursor->resid) {
page = ceph_msg_data_next(&msg->data, &page_offset, &length,
NULL);
ret = ceph_tcp_recvpage(con->sock, page, page_offset, length);