From 348d1a0ba21a2f54bd94c83db38e091a66806020 Mon Sep 17 00:00:00 2001 From: Jianpeng Ma Date: Mon, 14 Jan 2019 11:02:34 +0800 Subject: [PATCH] msg/async: reduce additional ceph_msg_header copy. Signed-off-by: Jianpeng Ma --- src/msg/async/ProtocolV1.cc | 18 ++++++++---------- src/msg/async/ProtocolV2.cc | 18 ++++++++---------- 2 files changed, 16 insertions(+), 20 deletions(-) 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); -- 2.39.5