From: Casey Bodley Date: Thu, 17 Sep 2020 17:26:32 +0000 (-0400) Subject: rgw: add helper to decode compression info from single attr X-Git-Tag: v15.2.9~47^2~6 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=2116b8b0f37e252a67118def38f5c733619529f0;p=ceph.git rgw: add helper to decode compression info from single attr Signed-off-by: Casey Bodley (cherry picked from commit a5520be135156c867a6502845603e2afdbb0a44a) --- diff --git a/src/rgw/rgw_compression.cc b/src/rgw/rgw_compression.cc index 7db8108d6958..30d9afa3ec92 100644 --- a/src/rgw/rgw_compression.cc +++ b/src/rgw/rgw_compression.cc @@ -5,29 +5,36 @@ #define dout_subsys ceph_subsys_rgw -int rgw_compression_info_from_attrset(map& attrs, +int rgw_compression_info_from_attr(const bufferlist& attr, + bool& need_decompress, + RGWCompressionInfo& cs_info) +{ + auto bliter = attr.cbegin(); + try { + decode(cs_info, bliter); + } catch (buffer::error& err) { + return -EIO; + } + if (cs_info.blocks.size() == 0) { + return -EIO; + } + if (cs_info.compression_type != "none") + need_decompress = true; + else + need_decompress = false; + return 0; +} + +int rgw_compression_info_from_attrset(const map& attrs, bool& need_decompress, - RGWCompressionInfo& cs_info) { - map::iterator value = attrs.find(RGW_ATTR_COMPRESSION); - if (value != attrs.end()) { - auto bliter = value->second.cbegin(); - try { - decode(cs_info, bliter); - } catch (buffer::error& err) { - return -EIO; - } - if (cs_info.blocks.size() == 0) { - return -EIO; - } - if (cs_info.compression_type != "none") - need_decompress = true; - else - need_decompress = false; - return 0; - } else { + RGWCompressionInfo& cs_info) +{ + auto value = attrs.find(RGW_ATTR_COMPRESSION); + if (value == attrs.end()) { need_decompress = false; return 0; } + return rgw_compression_info_from_attr(value->second, need_decompress, cs_info); } //------------RGWPutObj_Compress--------------- diff --git a/src/rgw/rgw_compression.h b/src/rgw/rgw_compression.h index 4d7f8638412a..cbefa17014c8 100644 --- a/src/rgw/rgw_compression.h +++ b/src/rgw/rgw_compression.h @@ -11,7 +11,12 @@ #include "rgw_op.h" #include "rgw_compression_types.h" -int rgw_compression_info_from_attrset(map& attrs, bool& need_decompress, RGWCompressionInfo& cs_info); +int rgw_compression_info_from_attr(const bufferlist& attr, + bool& need_decompress, + RGWCompressionInfo& cs_info); +int rgw_compression_info_from_attrset(const map& attrs, + bool& need_decompress, + RGWCompressionInfo& cs_info); class RGWGetObj_Decompress : public RGWGetObj_Filter {