]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/compressor/zlib/ZlibCompressor.cc
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / compressor / zlib / ZlibCompressor.cc
index d1ee1549977bba86e4001a0768d105bf90ca0b8a..9795d79b3ba7f337919084559f4d45139f404857 100644 (file)
@@ -52,7 +52,7 @@ _prefix(std::ostream* _dout)
 // compression ratio.
 #define ZLIB_MEMORY_LEVEL 8
 
-int ZlibCompressor::zlib_compress(const bufferlist &in, bufferlist &out, boost::optional<int32_t> &compressor_message)
+int ZlibCompressor::zlib_compress(const bufferlist &in, bufferlist &out, std::optional<int32_t> &compressor_message)
 {
   int ret;
   unsigned have;
@@ -113,8 +113,8 @@ int ZlibCompressor::zlib_compress(const bufferlist &in, bufferlist &out, boost::
   return 0;
 }
 
-#if __x86_64__ && defined(HAVE_NASM_X64_AVX2)
-int ZlibCompressor::isal_compress(const bufferlist &in, bufferlist &out, boost::optional<int32_t> &compressor_message)
+#if (__x86_64__ && defined(HAVE_NASM_X64_AVX2)) || defined(__aarch64__)
+int ZlibCompressor::isal_compress(const bufferlist &in, bufferlist &out, std::optional<int32_t> &compressor_message)
 {
   int ret;
   unsigned have;
@@ -168,13 +168,13 @@ int ZlibCompressor::isal_compress(const bufferlist &in, bufferlist &out, boost::
 }
 #endif
 
-int ZlibCompressor::compress(const bufferlist &in, bufferlist &out, boost::optional<int32_t> &compressor_message)
+int ZlibCompressor::compress(const bufferlist &in, bufferlist &out, std::optional<int32_t> &compressor_message)
 {
 #ifdef HAVE_QATZIP
   if (qat_enabled)
     return qat_accel.compress(in, out, compressor_message);
 #endif
-#if __x86_64__ && defined(HAVE_NASM_X64_AVX2)
+#if (__x86_64__ && defined(HAVE_NASM_X64_AVX2)) || defined(__aarch64__)
   if (isal_enabled)
     return isal_compress(in, out, compressor_message);
   else
@@ -184,10 +184,11 @@ int ZlibCompressor::compress(const bufferlist &in, bufferlist &out, boost::optio
 #endif
 }
 
-int ZlibCompressor::decompress(bufferlist::const_iterator &p, size_t compressed_size, bufferlist &out, boost::optional<int32_t> compressor_message)
+int ZlibCompressor::decompress(bufferlist::const_iterator &p, size_t compressed_size, bufferlist &out, std::optional<int32_t> compressor_message)
 {
 #ifdef HAVE_QATZIP
-  if (qat_enabled)
+  // QAT can only decompress with the default window size
+  if (qat_enabled && (!compressor_message || *compressor_message == ZLIB_DEFAULT_WIN_SIZE))
     return qat_accel.decompress(p, compressed_size, out, compressor_message);
 #endif
 
@@ -244,7 +245,7 @@ int ZlibCompressor::decompress(bufferlist::const_iterator &p, size_t compressed_
   return 0;
 }
 
-int ZlibCompressor::decompress(const bufferlist &in, bufferlist &out, boost::optional<int32_t> compressor_message)
+int ZlibCompressor::decompress(const bufferlist &in, bufferlist &out, std::optional<int32_t> compressor_message)
 {
   auto i = std::cbegin(in);
   return decompress(i, in.length(), out, compressor_message);