]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
msgr: make nocrc only apply to data payload; and set flag if no crc
authorSage Weil <sage@newdream.net>
Tue, 27 Jan 2009 22:56:25 +0000 (14:56 -0800)
committerSage Weil <sage@newdream.net>
Tue, 27 Jan 2009 23:21:00 +0000 (15:21 -0800)
src/msg/SimpleMessenger.cc

index 60cbf923d5dc44a239c23680c8a7d9b8ddb4d657..1110ba428bcd8fac4d9c69c908049f83c9f201a4 100644 (file)
@@ -734,6 +734,8 @@ int Rank::EntityMessenger::send_message(Message *m, entity_inst_t dest)
   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()
@@ -756,6 +758,8 @@ int Rank::EntityMessenger::forward_message(Message *m, entity_inst_t dest)
   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()
@@ -781,6 +785,8 @@ int Rank::EntityMessenger::lazy_send_message(Message *m, entity_inst_t dest)
   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()
@@ -1782,8 +1788,7 @@ void Rank::Pipe::writer()
        // encode and copy out of *m
         if (m->empty_payload()) 
          m->encode_payload();
-       if (!g_conf.ms_nocrc)
-         m->calc_front_crc();
+       m->calc_front_crc();
 
         dout(20) << "writer sending " << m->get_seq() << " " << m << dendl;
        int rc = write_message(m);
@@ -1851,12 +1856,10 @@ Message *Rank::Pipe::read_message()
            << dendl;
 
   // verify header crc
-  if (!g_conf.ms_nocrc) {
-    __u32 header_crc = crc32c_le(0, (unsigned char *)&header, sizeof(header) - sizeof(header.crc));
-    if (header_crc != header.crc) {
-      dout(0) << "reader got bad header crc " << header_crc << " != " << header.crc << dendl;
-      return 0;
-    }
+  __u32 header_crc = crc32c_le(0, (unsigned char *)&header, sizeof(header) - sizeof(header.crc));
+  if (header_crc != header.crc) {
+    dout(0) << "reader got bad header crc " << header_crc << " != " << header.crc << dendl;
+    return 0;
   }
 
   // ok, now it's safe to change the header..
@@ -2018,8 +2021,7 @@ int Rank::Pipe::write_message(Message *m)
   header.front_len = m->get_payload().length();
   header.data_len = m->get_data().length();
   footer.flags = 0;
-  if (!g_conf.ms_nocrc)
-    m->calc_header_crc();
+  m->calc_header_crc();
 
   bufferlist blist = m->get_payload();
   blist.append(m->get_data());