Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fe3ad593 authored by Alex Elder's avatar Alex Elder
Browse files

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: default avatarAlex Elder <elder@dreamhost.com>
Signed-off-by: default avatarSage Weil <sage@newdream.net>
parent a9a0c51a
Loading
Loading
Loading
Loading
+12 −14
Original line number Diff line number Diff line
@@ -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;