]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: Output Base64 encoding of CRC header if binary data present 28503/head
authorDavid Zafman <dzafman@redhat.com>
Sat, 4 May 2019 18:32:40 +0000 (11:32 -0700)
committerPrashant D <pdhange@redhat.com>
Wed, 12 Jun 2019 01:20:39 +0000 (21:20 -0400)
Add optional paramter so cleanbin() for bufferlist can include "Base64:"

Fixes: https://tracker.ceph.com/issues/39582
Signed-off-by: David Zafman <dzafman@redhat.com>
(cherry picked from commit eea239c03ca8aeb9a1da742b07d8627fbe2317e2)

Conflicts:
src/include/util.h : Resolved for cleanbin
src/osd/ReplicatedBackend.cc : Resolved for util.h

src/common/util.cc
src/include/util.h
src/osd/ReplicatedBackend.cc

index c07a493872e8bf58732778ac7b8e5eedbb250df9..01dc09af96623e7834a2ee55051dd7cdf720d5a2 100644 (file)
@@ -269,7 +269,7 @@ void dump_services(Formatter* f, const map<string, list<string> >& services, con
 
 // If non-printable characters found then convert bufferlist to
 // base64 encoded string indicating whether it did.
-string cleanbin(bufferlist &bl, bool &base64)
+string cleanbin(bufferlist &bl, bool &base64, bool show)
 {
   bufferlist::iterator it;
   for (it = bl.begin(); it != bl.end(); ++it) {
@@ -285,6 +285,8 @@ string cleanbin(bufferlist &bl, bool &base64)
   bufferlist b64;
   bl.encode_base64(b64);
   string encoded(b64.c_str(), b64.length());
+  if (show)
+    encoded = "Base64:" + encoded;
   base64 = true;
   return encoded;
 }
@@ -296,9 +298,7 @@ string cleanbin(string &str)
   bool base64;
   bufferlist bl;
   bl.append(str);
-  string result = cleanbin(bl, base64);
-  if (base64)
-    result = "Base64:" + result;
+  string result = cleanbin(bl, base64, true);
   return result;
 }
 
index 88eab27ad322da3a5484449f1700c4f003aad313..c216325df1ead1b7ecee53d69a7c5199442daae0 100644 (file)
@@ -87,7 +87,7 @@ void dump_services(Formatter* f, const map<string, list<int> >& services, const
 /// @param type the service type of given @p services, for example @p osd or @p mon.
 void dump_services(Formatter* f, const map<string, list<string> >& services, const char* type);
 
-string cleanbin(bufferlist &bl, bool &b64);
+string cleanbin(bufferlist &bl, bool &b64, bool show = false);
 string cleanbin(string &str);
 
 namespace ceph::util {
index 0b5911339a85523c89b4d596170cc469bb5e89d7..2c7802ee3c7a3c2c3b28e0d20bdb52b56c25528d 100644 (file)
@@ -21,6 +21,7 @@
 #include "messages/MOSDPGPushReply.h"
 #include "common/EventTrace.h"
 #include "include/random.h"
+#include "include/util.h"
 
 #define dout_context cct
 #define dout_subsys ceph_subsys_osd
@@ -661,8 +662,8 @@ int ReplicatedBackend::be_deep_scrub(
       return 0;
     }
     if (r == 0 && hdrbl.length()) {
-      dout(25) << "CRC header " << string(hdrbl.c_str(), hdrbl.length())
-              << dendl;
+      bool encoded = false;
+      dout(25) << "CRC header " << cleanbin(hdrbl, encoded, true) << dendl;
       pos.omap_hash << hdrbl;
     }
   }