From d31bdcdd937f788d080d03f08d2f25c5e7654d1e Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Fri, 24 Jul 2020 16:55:36 +0800 Subject: [PATCH] crimson/net: keep rx_preamble for msgr v2.1 support Signed-off-by: Kefu Chai --- src/crimson/net/ProtocolV2.cc | 8 ++++---- src/crimson/net/ProtocolV2.h | 1 + 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/crimson/net/ProtocolV2.cc b/src/crimson/net/ProtocolV2.cc index e0c9e5f8bc6..c9512cc9d3d 100644 --- a/src/crimson/net/ProtocolV2.cc +++ b/src/crimson/net/ProtocolV2.cc @@ -259,12 +259,12 @@ size_t ProtocolV2::get_current_msg_size() const seastar::future ProtocolV2::read_main_preamble() { - return read_exactly(sizeof(preamble_block_t)) + rx_preamble.clear(); + return read_exactly(rx_frame_asm.get_preamble_onwire_len()) .then([this] (auto bl) { rx_segments_data.clear(); try { - bufferlist preamble; - preamble.append(buffer::create(std::move(bl))); + rx_preamble.append(buffer::create(std::move(bl))); const Tag tag = rx_frame_asm.disassemble_preamble(rx_preamble); INTERCEPT_FRAME(tag, bp_type_t::READ); return tag; @@ -306,7 +306,7 @@ seastar::future<> ProtocolV2::read_frame_payload() logger().trace("{} RECV({}) frame epilogue", conn, bl.size()); bool ok = false; try { - // TODO: v2.1 rx_frame_asm.disassemble_first_segment(); + rx_frame_asm.disassemble_first_segment(rx_preamble, rx_segments_data[0]); bufferlist rx_epilogue; rx_epilogue.append(buffer::create(std::move(bl))); ok = rx_frame_asm.disassemble_remaining_segments(rx_segments_data.data(), rx_epilogue); diff --git a/src/crimson/net/ProtocolV2.h b/src/crimson/net/ProtocolV2.h index ea0f3261192..48698edc415 100644 --- a/src/crimson/net/ProtocolV2.h +++ b/src/crimson/net/ProtocolV2.h @@ -124,6 +124,7 @@ class ProtocolV2 final : public Protocol { ceph::crypto::onwire::rxtx_t session_stream_handlers; ceph::msgr::v2::FrameAssembler tx_frame_asm{&session_stream_handlers, false}; ceph::msgr::v2::FrameAssembler rx_frame_asm{&session_stream_handlers, false}; + ceph::bufferlist rx_preamble; ceph::msgr::v2::segment_bls_t rx_segments_data; size_t get_current_msg_size() const; -- 2.39.5