bool part_compressed = (obj_part.cs_info.compression_type != "none");
if ((handled_parts > 0) &&
((part_compressed != compressed) ||
- (cs_info.compression_type != obj_part.cs_info.compression_type))) {
+ (cs_info.compression_type != obj_part.cs_info.compression_type) ||
+ (cs_info.compressor_message.has_value() &&
+ (cs_info.compressor_message != obj_part.cs_info.compressor_message)))) {
ldpp_dout(dpp, 0)
- << "ERROR: compression type was changed during multipart upload ("
- << cs_info.compression_type << ">>"
- << obj_part.cs_info.compression_type << ")" << dendl;
+ << "ERROR: compression type or compressor message was changed during multipart upload ("
+ << cs_info.compression_type << ">>" << obj_part.cs_info.compression_type << "),"
+ << cs_info.compressor_message << ">>" << obj_part.cs_info.compressor_message << ") "
+ << dendl;
ret = -ERR_INVALID_PART;
return ret;
}
cs_info.blocks.push_back(cb);
new_ofs = cb.new_ofs + cb.len;
}
- if (!compressed)
+ if (!compressed) {
cs_info.compression_type = obj_part.cs_info.compression_type;
+ if (obj_part.cs_info.compressor_message.has_value())
+ cs_info.compressor_message = obj_part.cs_info.compressor_message;
+ }
cs_info.orig_size += obj_part.cs_info.orig_size;
compressed = true;
}
bool part_compressed = (part->cs_info.compression_type != "none");
if ((handled_parts > 0) &&
((part_compressed != compressed) ||
- (cs_info.compression_type != part->cs_info.compression_type))) {
- ldpp_dout(dpp, 0) << "ERROR: compression type was changed during multipart upload ("
- << cs_info.compression_type << ">>" << part->cs_info.compression_type << ")" << dendl;
+ (cs_info.compression_type != obj_part.cs_info.compression_type) ||
+ (cs_info.compressor_message.has_value() &&
+ (cs_info.compressor_message != obj_part.cs_info.compressor_message)))) {
+ ldpp_dout(dpp, 0) << "ERROR: compression type or compressor message was changed during multipart upload ("
+ << cs_info.compression_type << ">>" << part->cs_info.compression_type << "),"
+ << cs_info.compressor_message << ">>" << obj_part.cs_info.compressor_message << ")"
+ << dendl;
rc = -ERR_INVALID_PART;
return rc;
}
cs_info.blocks.push_back(cb);
new_ofs = cb.new_ofs + cb.len;
}
- if (!compressed)
+ if (!compressed) {
cs_info.compression_type = part->cs_info.compression_type;
+ if (obj_part.cs_info.compressor_message.has_value())
+ cs_info.compressor_message = obj_part.cs_info.compressor_message;
+ }
cs_info.orig_size += part->cs_info.orig_size;
compressed = true;
}
bool part_compressed = (obj_part.cs_info.compression_type != "none");
if ((handled_parts > 0) &&
((part_compressed != compressed) ||
- (cs_info.compression_type != obj_part.cs_info.compression_type))) {
- ldpp_dout(dpp, 0) << "ERROR: compression type was changed during multipart upload ("
- << cs_info.compression_type << ">>" << obj_part.cs_info.compression_type << ")" << dendl;
+ (cs_info.compression_type != obj_part.cs_info.compression_type) ||
+ (cs_info.compressor_message.has_value() &&
+ (cs_info.compressor_message != obj_part.cs_info.compressor_message)))) {
+ ldpp_dout(dpp, 0) << "ERROR: compression type or compressor message was changed during multipart upload ("
+ << cs_info.compression_type << ">>" << obj_part.cs_info.compression_type << "), "
+ << cs_info.compressor_message << ">>" << obj_part.cs_info.compressor_message << ") "
+ << dendl;
ret = -ERR_INVALID_PART;
return ret;
}
cs_info.blocks.push_back(cb);
new_ofs = cb.new_ofs + cb.len;
}
- if (!compressed)
+ if (!compressed) {
cs_info.compression_type = obj_part.cs_info.compression_type;
+ if (obj_part.cs_info.compressor_message.has_value())
+ cs_info.compressor_message = obj_part.cs_info.compressor_message;
+ }
cs_info.orig_size += obj_part.cs_info.orig_size;
compressed = true;
}
RGWCompressionInfo cs_info;
cs_info.compression_type = plugin->get_type_name();
cs_info.orig_size = state->obj_size;
+ cs_info.compressor_message = compressor->get_compressor_message();
cs_info.blocks = std::move(compressor->get_compression_blocks());
encode(cs_info, tmp);
attrs[RGW_ATTR_COMPRESSION] = tmp;
ldpp_dout(this, 20) << "storing " << RGW_ATTR_COMPRESSION
<< " with type=" << cs_info.compression_type
<< ", orig_size=" << cs_info.orig_size
+ << ", compressor_message=" << cs_info.compressor_message
<< ", blocks=" << cs_info.blocks.size() << dendl;
}
ldpp_dout(this, 20) << "storing " << RGW_ATTR_COMPRESSION
<< " with type=" << cs_info.compression_type
<< ", orig_size=" << cs_info.orig_size
+ << ", compressor_message=" << cs_info.compressor_message
<< ", blocks=" << cs_info.blocks.size() << dendl;
}
if (torrent) {