]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
msgr: calculate data crc after encode_payload, in worker thread
authorSage Weil <sage@newdream.net>
Tue, 9 Jun 2009 23:02:15 +0000 (16:02 -0700)
committerSage Weil <sage@newdream.net>
Tue, 9 Jun 2009 23:02:36 +0000 (16:02 -0700)
Faster (bc crc calc is in msgr worker thread).  Also allows
encode_payload() to manipulate data.

src/msg/SimpleMessenger.cc

index 22822405ed09810783c6f10560a6d1fccff4193b..089c5158d48c84b7cd93493e9c0a0265fb48954e 100644 (file)
@@ -370,17 +370,12 @@ int SimpleMessenger::Endpoint::send_message(Message *m, entity_inst_t dest)
   m->set_source_inst(_myinst);
   m->set_orig_source_inst(_myinst);
   m->set_dest_inst(dest);
-  if (!g_conf.ms_nocrc)
-    m->calc_data_crc();
-  else
-    m->get_footer().flags = (unsigned)m->get_footer().flags | CEPH_MSG_FOOTER_NOCRC;
   if (!m->get_priority()) m->set_priority(get_default_send_priority());
  
   dout(1) << m->get_source()
           << " --> " << dest.name << " " << dest.addr
           << " -- " << *m
          << " -- ?+" << m->get_data().length()
-         << " (? " << m->get_footer().data_crc << ")"
          << " " << m 
          << dendl;
 
@@ -394,17 +389,12 @@ int SimpleMessenger::Endpoint::forward_message(Message *m, entity_inst_t dest)
   // set envelope
   m->set_source_inst(_myinst);
   m->set_dest_inst(dest);
-  if (!g_conf.ms_nocrc)
-    m->calc_data_crc();
-  else
-    m->get_footer().flags = (unsigned)m->get_footer().flags | CEPH_MSG_FOOTER_NOCRC;
   if (!m->get_priority()) m->set_priority(get_default_send_priority());
  
   dout(1) << m->get_source()
           << " **> " << dest.name << " " << dest.addr
           << " -- " << *m
          << " -- ?+" << m->get_data().length()
-         << " (? " << m->get_footer().data_crc << ")"
          << " " << m 
           << dendl;
 
@@ -421,17 +411,12 @@ int SimpleMessenger::Endpoint::lazy_send_message(Message *m, entity_inst_t dest)
   m->set_source_inst(_myinst);
   m->set_orig_source_inst(_myinst);
   m->set_dest_inst(dest);
-  if (!g_conf.ms_nocrc)
-    m->calc_data_crc();
-  else
-    m->get_footer().flags = (unsigned)m->get_footer().flags | CEPH_MSG_FOOTER_NOCRC;
   if (!m->get_priority()) m->set_priority(get_default_send_priority());
  
   dout(1) << "lazy " << m->get_source()
           << " --> " << dest.name << " " << dest.addr
           << " -- " << *m
          << " -- ?+" << m->get_data().length()
-         << " (? " << m->get_footer().data_crc << ")"
          << " " << m 
           << dendl;
 
@@ -1413,6 +1398,11 @@ void SimpleMessenger::Pipe::writer()
          m->encode_payload();
        m->calc_front_crc();
 
+       if (!g_conf.ms_nocrc)
+         m->calc_data_crc();
+       else
+         m->get_footer().flags = (unsigned)m->get_footer().flags | CEPH_MSG_FOOTER_NOCRC;
+
         dout(20) << "writer sending " << m->get_seq() << " " << m << dendl;
        int rc = write_message(m);