]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
crimson/net: keep rx_preamble for msgr v2.1 support
authorKefu Chai <kchai@redhat.com>
Fri, 24 Jul 2020 08:55:36 +0000 (16:55 +0800)
committerKefu Chai <kchai@redhat.com>
Mon, 27 Jul 2020 03:29:10 +0000 (11:29 +0800)
Signed-off-by: Kefu Chai <kchai@redhat.com>
src/crimson/net/ProtocolV2.cc
src/crimson/net/ProtocolV2.h

index e0c9e5f8bc6529c59dcb33b9fcd88c0f82be5441..c9512cc9d3d61d198237a63538d66fbbb6a6e003 100644 (file)
@@ -259,12 +259,12 @@ size_t ProtocolV2::get_current_msg_size() const
 
 seastar::future<Tag> 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);
index ea0f32611926da94fbe6ca2b08939028b3149b8e..48698edc4157ab79fdb9f59b8b815c7477887571 100644 (file)
@@ -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;