Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 296518
b: refs/heads/master
c: a9a0c51
h: refs/heads/master
v: v3
  • Loading branch information
Alex Elder committed Mar 22, 2012
1 parent ec15020 commit ad2169e
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 15 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: bca064d236a2e3162a07c758855221bcbe3c475b
refs/heads/master: a9a0c51af4e7c825c014b40694571456a75ebbc4
31 changes: 17 additions & 14 deletions trunk/net/ceph/messenger.c
Original file line number Diff line number Diff line change
Expand Up @@ -521,6 +521,7 @@ static void prepare_write_message_footer(struct ceph_connection *con)
static void prepare_write_message(struct ceph_connection *con)
{
struct ceph_msg *m;
u32 crc;

ceph_con_out_kvec_reset(con);
con->out_kvec_is_msg = true;
Expand Down Expand Up @@ -569,17 +570,17 @@ static void prepare_write_message(struct ceph_connection *con)
m->middle->vec.iov_base);

/* fill in crc (except data pages), footer */
con->out_msg->hdr.crc =
cpu_to_le32(crc32c(0, &m->hdr,
sizeof(m->hdr) - sizeof(m->hdr.crc)));
crc = crc32c(0, &m->hdr, offsetof(struct ceph_msg_header, crc));
con->out_msg->hdr.crc = cpu_to_le32(crc);
con->out_msg->footer.flags = CEPH_MSG_FOOTER_COMPLETE;
con->out_msg->footer.front_crc =
cpu_to_le32(crc32c(0, m->front.iov_base, m->front.iov_len));
if (m->middle)
con->out_msg->footer.middle_crc =
cpu_to_le32(crc32c(0, m->middle->vec.iov_base,
m->middle->vec.iov_len));
else

crc = crc32c(0, m->front.iov_base, m->front.iov_len);
con->out_msg->footer.front_crc = cpu_to_le32(crc);
if (m->middle) {
crc = crc32c(0, m->middle->vec.iov_base,
m->middle->vec.iov_len);
con->out_msg->footer.middle_crc = cpu_to_le32(crc);
} else
con->out_msg->footer.middle_crc = 0;
con->out_msg->footer.data_crc = 0;
dout("prepare_write_message front_crc %u data_crc %u\n",
Expand Down Expand Up @@ -875,12 +876,13 @@ static int write_partial_msg_pages(struct ceph_connection *con)
total_max_write);

if (do_crc && !con->out_msg_pos.did_page_crc) {
u32 crc;
void *base = kaddr + con->out_msg_pos.page_pos;
u32 tmpcrc = le32_to_cpu(con->out_msg->footer.data_crc);

BUG_ON(kaddr == NULL);
con->out_msg->footer.data_crc =
cpu_to_le32(crc32c(tmpcrc, base, len));
crc = crc32c(tmpcrc, base, len);
con->out_msg->footer.data_crc = cpu_to_le32(crc);
con->out_msg_pos.did_page_crc = true;
}
ret = kernel_sendpage(con->sock, page,
Expand Down Expand Up @@ -1650,8 +1652,9 @@ static int read_partial_message(struct ceph_connection *con)
con->in_base_pos += ret;
if (con->in_base_pos == sizeof(con->in_hdr)) {
u32 crc = crc32c(0, &con->in_hdr,
sizeof(con->in_hdr) - sizeof(con->in_hdr.crc));
if (crc != le32_to_cpu(con->in_hdr.crc)) {
offsetof(struct ceph_msg_header, crc));

if (cpu_to_le32(crc) != con->in_hdr.crc) {
pr_err("read_partial_message bad hdr "
" crc %u != expected %u\n",
crc, con->in_hdr.crc);
Expand Down

0 comments on commit ad2169e

Please sign in to comment.