From 5d1eca8ecddec97cb10c7e60d4257e744c4f7e00 Mon Sep 17 00:00:00 2001 From: Ilya Dryomov Date: Thu, 30 Apr 2020 17:22:14 +0200 Subject: [PATCH] msg/async/frames_v2: make rx_segments_t global Use it in ProtocolV2.h and later in unit tests. While at it, drop the unused len struct. Signed-off-by: Ilya Dryomov (cherry picked from commit c081f3ca94adb4814c55aeeca0c0abdbc701ece2) Conflicts: src/crimson/net/ProtocolV2.cc [ crimson doesn't support msgr2 in nautilus ] src/crimson/net/ProtocolV2.h [ ditto ] --- src/msg/async/ProtocolV2.cc | 2 +- src/msg/async/ProtocolV2.h | 3 +-- src/msg/async/frames_v2.h | 16 ++++++---------- 3 files changed, 8 insertions(+), 13 deletions(-) diff --git a/src/msg/async/ProtocolV2.cc b/src/msg/async/ProtocolV2.cc index f221c9d7353f6..378147b23ff85 100644 --- a/src/msg/async/ProtocolV2.cc +++ b/src/msg/async/ProtocolV2.cc @@ -1410,7 +1410,7 @@ CtPtr ProtocolV2::handle_message() { // we need to get the size before std::moving segments data const size_t cur_msg_size = get_current_msg_size(); - auto msg_frame = MessageFrame::Decode(std::move(rx_segments_data)); + auto msg_frame = MessageFrame::Decode(rx_segments_data); // XXX: paranoid copy just to avoid oops ceph_msg_header2 current_header = msg_frame.header(); diff --git a/src/msg/async/ProtocolV2.h b/src/msg/async/ProtocolV2.h index 9ed0ae0d18a36..a4c2b1f5b8fe3 100644 --- a/src/msg/async/ProtocolV2.h +++ b/src/msg/async/ProtocolV2.h @@ -98,8 +98,7 @@ private: boost::container::static_vector rx_segments_desc; - boost::container::static_vector rx_segments_data; + ceph::msgr::v2::segment_bls_t rx_segments_data; ceph::msgr::v2::Tag next_tag; utime_t backoff; // backoff time utime_t recv_stamp; diff --git a/src/msg/async/frames_v2.h b/src/msg/async/frames_v2.h index 6827622d67ec1..dd544a2a0a14e 100644 --- a/src/msg/async/frames_v2.h +++ b/src/msg/async/frames_v2.h @@ -7,6 +7,8 @@ #include #include +#include + /** * Protocol V2 Frame Structures * @@ -674,6 +676,9 @@ protected: using ControlFrame::ControlFrame; }; +using segment_bls_t = + boost::container::static_vector; + // This class is used for encoding/decoding header of the message frame. // Body is processed almost independently with the sole junction point // being the `extra_payload_len` passed to get_buffer(). @@ -683,12 +688,6 @@ struct MessageFrame : public Frame { - struct { - uint32_t front; - uint32_t middle; - uint32_t data; - } len; - static const Tag tag = Tag::MESSAGE; static MessageFrame Encode(const ceph_msg_header2 &msg_header, @@ -706,10 +705,7 @@ struct MessageFrame : public Frame; - static MessageFrame Decode(rx_segments_t &&recv_segments) { + static MessageFrame Decode(segment_bls_t& recv_segments) { MessageFrame f; // transfer segments' bufferlists. If a MessageFrame contains less // SegmentsNumV segments, the missing ones will be seen as zeroed. -- 2.39.5