From: Jianpeng Ma Date: Mon, 14 Jan 2019 03:02:34 +0000 (+0800) Subject: msg/async: reduce additional ceph_msg_header copy. X-Git-Tag: v14.1.0~329^2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=348d1a0ba21a2f54bd94c83db38e091a66806020;p=ceph-ci.git msg/async: reduce additional ceph_msg_header copy. Signed-off-by: Jianpeng Ma --- diff --git a/src/msg/async/ProtocolV1.cc b/src/msg/async/ProtocolV1.cc index 46bd405fc8d..f2bd5e94d83 100644 --- a/src/msg/async/ProtocolV1.cc +++ b/src/msg/async/ProtocolV1.cc @@ -626,22 +626,21 @@ CtPtr ProtocolV1::handle_message_header(char *buffer, int r) { ldout(cct, 20) << __func__ << " got MSG header" << dendl; - ceph_msg_header header; - header = *((ceph_msg_header *)buffer); + current_header = *((ceph_msg_header *)buffer); - ldout(cct, 20) << __func__ << " got envelope type=" << header.type << " src " - << entity_name_t(header.src) << " front=" << header.front_len - << " data=" << header.data_len << " off " << header.data_off + ldout(cct, 20) << __func__ << " got envelope type=" << current_header.type << " src " + << entity_name_t(current_header.src) << " front=" << current_header.front_len + << " data=" << current_header.data_len << " off " << current_header.data_off << dendl; if (messenger->crcflags & MSG_CRC_HEADER) { __u32 header_crc = 0; - header_crc = ceph_crc32c(0, (unsigned char *)&header, - sizeof(header) - sizeof(header.crc)); + header_crc = ceph_crc32c(0, (unsigned char *)¤t_header, + sizeof(current_header) - sizeof(current_header.crc)); // verify header crc - if (header_crc != header.crc) { + if (header_crc != current_header.crc) { ldout(cct, 0) << __func__ << " got bad header crc " << header_crc - << " != " << header.crc << dendl; + << " != " << current_header.crc << dendl; return _fault(); } } @@ -651,7 +650,6 @@ CtPtr ProtocolV1::handle_message_header(char *buffer, int r) { front.clear(); middle.clear(); data.clear(); - current_header = header; state = THROTTLE_MESSAGE; return CONTINUE(throttle_message); diff --git a/src/msg/async/ProtocolV2.cc b/src/msg/async/ProtocolV2.cc index d52a10d9fbd..1ea6e0b0a2d 100644 --- a/src/msg/async/ProtocolV2.cc +++ b/src/msg/async/ProtocolV2.cc @@ -623,22 +623,21 @@ CtPtr ProtocolV2::handle_message_header(char *buffer, int r) { ldout(cct, 20) << __func__ << " got MSG header" << dendl; - ceph_msg_header header; - header = *((ceph_msg_header *)buffer); + current_header = *((ceph_msg_header *)buffer); - ldout(cct, 20) << __func__ << " got envelope type=" << header.type << " src " - << entity_name_t(header.src) << " front=" << header.front_len - << " data=" << header.data_len << " off " << header.data_off + ldout(cct, 20) << __func__ << " got envelope type=" << current_header.type << " src " + << entity_name_t(current_header.src) << " front=" << current_header.front_len + << " data=" << current_header.data_len << " off " << current_header.data_off << dendl; if (messenger->crcflags & MSG_CRC_HEADER) { __u32 header_crc = 0; - header_crc = ceph_crc32c(0, (unsigned char *)&header, - sizeof(header) - sizeof(header.crc)); + header_crc = ceph_crc32c(0, (unsigned char *)¤t_header, + sizeof(current_header) - sizeof(current_header.crc)); // verify header crc - if (header_crc != header.crc) { + if (header_crc != current_header.crc) { ldout(cct, 0) << __func__ << " got bad header crc " << header_crc - << " != " << header.crc << dendl; + << " != " << current_header.crc << dendl; return _fault(); } } @@ -648,7 +647,6 @@ CtPtr ProtocolV2::handle_message_header(char *buffer, int r) { front.clear(); middle.clear(); data.clear(); - current_header = header; state = THROTTLE_MESSAGE; return CONTINUE(throttle_message);