From: Sage Weil Date: Tue, 27 Jan 2009 22:56:25 +0000 (-0800) Subject: msgr: make nocrc only apply to data payload; and set flag if no crc X-Git-Tag: v0.7~283 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=ee114f91bcb331f571cf0826a4eb4dfc389eb8a7;p=ceph.git msgr: make nocrc only apply to data payload; and set flag if no crc --- diff --git a/src/msg/SimpleMessenger.cc b/src/msg/SimpleMessenger.cc index 60cbf923d5dc..1110ba428bcd 100644 --- a/src/msg/SimpleMessenger.cc +++ b/src/msg/SimpleMessenger.cc @@ -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());