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: v16.1.0~945^2~6 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=a5520be135156c867a6502845603e2afdbb0a44a;p=ceph.git rgw: add helper to decode compression info from single attr Signed-off-by: Casey Bodley --- diff --git a/src/rgw/rgw_compression.cc b/src/rgw/rgw_compression.cc index f27f446a0bd..2eaf9da30d5 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 6a2cc6e5685..cc9386d2c05 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 {