From cd1fa17e3d5b82644c32d6522f9c5b090ffc3c20 Mon Sep 17 00:00:00 2001 From: Alex Elder Date: Fri, 8 Mar 2013 20:59:00 -0600 Subject: [PATCH] --- yaml --- r: 373347 b: refs/heads/master c: 35b6280899424a0faf5410ce1ee86f9682528e6c h: refs/heads/master i: 373345: 5ea8ea877a5ac5b5b726e372d00c168b0b096d25 373343: e831ee7f5e496126b50116211e0a060f6d0f9d07 v: v3 --- [refs] | 2 +- trunk/net/ceph/messenger.c | 47 ++++++++++++++++---------------------- 2 files changed, 21 insertions(+), 28 deletions(-) diff --git a/[refs] b/[refs] index 20beacd7cb38..af5de1371cd2 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: afb3d90e205140415477d501ff9e2a33ff0b197f +refs/heads/master: 35b6280899424a0faf5410ce1ee86f9682528e6c diff --git a/trunk/net/ceph/messenger.c b/trunk/net/ceph/messenger.c index 3120a6c81a76..f70bc92348d9 100644 --- a/trunk/net/ceph/messenger.c +++ b/trunk/net/ceph/messenger.c @@ -1085,6 +1085,19 @@ static void in_msg_pos_next(struct ceph_connection *con, size_t len, #endif /* CONFIG_BLOCK */ } +static u32 ceph_crc32c_page(u32 crc, struct page *page, + unsigned int page_offset, + unsigned int length) +{ + char *kaddr; + + kaddr = kmap(page); + BUG_ON(kaddr == NULL); + crc = crc32c(crc, kaddr + page_offset, length); + kunmap(page); + + return crc; +} /* * Write as much message data payload as we can. If we finish, queue * up the footer. @@ -1153,15 +1166,9 @@ static int write_partial_message_data(struct ceph_connection *con) page_offset = msg_pos->page_pos + bio_offset; if (do_datacrc && !msg_pos->did_page_crc) { - void *base; u32 crc = le32_to_cpu(msg->footer.data_crc); - char *kaddr; - kaddr = kmap(page); - BUG_ON(kaddr == NULL); - base = kaddr + page_offset; - crc = crc32c(crc, base, length); - kunmap(page); + crc = ceph_crc32c_page(crc, page, page_offset, length); msg->footer.data_crc = cpu_to_le32(crc); msg_pos->did_page_crc = true; } @@ -1843,16 +1850,9 @@ static int read_partial_message_pages(struct ceph_connection *con, if (ret <= 0) return ret; - if (do_datacrc) { - void *kaddr; - void *base; - - kaddr = kmap(page); - BUG_ON(!kaddr); - base = kaddr + page_offset; - con->in_data_crc = crc32c(con->in_data_crc, base, ret); - kunmap(page); - } + if (do_datacrc) + con->in_data_crc = ceph_crc32c_page(con->in_data_crc, page, + page_offset, ret); in_msg_pos_next(con, length, ret); @@ -1886,16 +1886,9 @@ static int read_partial_message_bio(struct ceph_connection *con, if (ret <= 0) return ret; - if (do_datacrc) { - void *kaddr; - void *base; - - kaddr = kmap(page); - BUG_ON(!kaddr); - base = kaddr + page_offset; - con->in_data_crc = crc32c(con->in_data_crc, base, ret); - kunmap(page); - } + if (do_datacrc) + con->in_data_crc = ceph_crc32c_page(con->in_data_crc, page, + page_offset, ret); in_msg_pos_next(con, length, ret);