mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-25 21:24:08 +08:00
libceph: do crc calculations outside loop
Move blocks of code out of loops in read_partial_message_section() and read_partial_message(). They were only was getting called at the end of the last iteration of the loop anyway. Signed-off-by: Alex Elder <elder@dreamhost.com> Signed-off-by: Sage Weil <sage@newdream.net>
This commit is contained in:
parent
a9a0c51af4
commit
fe3ad593e2
@ -1544,10 +1544,9 @@ static int read_partial_message_section(struct ceph_connection *con,
|
||||
if (ret <= 0)
|
||||
return ret;
|
||||
section->iov_len += ret;
|
||||
if (section->iov_len == sec_len)
|
||||
*crc = crc32c(0, section->iov_base,
|
||||
section->iov_len);
|
||||
}
|
||||
if (section->iov_len == sec_len)
|
||||
*crc = crc32c(0, section->iov_base, section->iov_len);
|
||||
|
||||
return 1;
|
||||
}
|
||||
@ -1638,6 +1637,7 @@ static int read_partial_message(struct ceph_connection *con)
|
||||
bool do_datacrc = con->msgr->nocrc;
|
||||
int skip;
|
||||
u64 seq;
|
||||
u32 crc;
|
||||
|
||||
dout("read_partial_message con %p msg %p\n", con, m);
|
||||
|
||||
@ -1650,18 +1650,16 @@ static int read_partial_message(struct ceph_connection *con)
|
||||
if (ret <= 0)
|
||||
return ret;
|
||||
con->in_base_pos += ret;
|
||||
if (con->in_base_pos == sizeof(con->in_hdr)) {
|
||||
u32 crc = crc32c(0, &con->in_hdr,
|
||||
offsetof(struct ceph_msg_header, crc));
|
||||
}
|
||||
|
||||
crc = crc32c(0, &con->in_hdr, 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);
|
||||
return -EBADMSG;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
front_len = le32_to_cpu(con->in_hdr.front_len);
|
||||
if (front_len > CEPH_MSG_MAX_FRONT_LEN)
|
||||
return -EIO;
|
||||
|
Loading…
Reference in New Issue
Block a user