static CompressorRef get_compressor_plugin(const req_state *s,
const std::string& compression_type)
{
-#warning FIXME different compression types per placement rule + storage_class
if (compression_type != "random") {
return Compressor::create(s->cct, compression_type);
}
sizeof(AtomicObjectProcessor));
ceph::static_ptr<ObjectProcessor, max_processor_size> processor;
+ rgw_placement_rule *pdest_placement;
+
if (multipart) {
RGWMPObj mp(s->object.name, multipart_upload_id);
}
return;
}
+ pdest_placement = &upload_info.dest_placement;
ldpp_dout(this, 20) << "dest_placement for part=" << upload_info.dest_placement << dendl;
processor.emplace<MultipartObjectProcessor>(
- &aio, store, s->bucket_info, &upload_info.dest_placement,
+ &aio, store, s->bucket_info, pdest_placement,
s->owner.get_id(), obj_ctx, obj,
multipart_upload_id, multipart_part_num, multipart_part_str);
} else {
version_id = obj.key.instance;
}
}
+ pdest_placement = &s->dest_placement;
processor.emplace<AtomicObjectProcessor>(
- &aio, store, s->bucket_info, &s->dest_placement,
+ &aio, store, s->bucket_info, pdest_placement,
s->bucket_owner.get_id(), obj_ctx, obj, olh_epoch, s->req_id);
}
// no filters by default
DataProcessor *filter = processor.get();
- const auto& compression_type = store->svc.zone->get_zone_params().get_compression_type(
- s->bucket_info.placement_rule);
+ const auto& compression_type = store->svc.zone->get_zone_params().get_compression_type(*pdest_placement);
CompressorRef plugin;
boost::optional<RGWPutObj_Compress> compressor;
filter = encrypt.get();
} else {
const auto& compression_type = store->svc.zone->get_zone_params().get_compression_type(
- s->bucket_info.placement_rule);
+ s->dest_placement);
if (compression_type != "none") {
plugin = Compressor::create(s->cct, compression_type);
if (!plugin) {
store->gen_rand_obj_instance_name(&obj);
}
+ rgw_placement_rule dest_placement = s->dest_placement;
+ dest_placement.inherit_from(binfo.placement_rule);
+
rgw::AioThrottle aio(store->ctx()->_conf->rgw_put_obj_min_window_size);
using namespace rgw::putobj;
DataProcessor *filter = &processor;
const auto& compression_type = store->svc.zone->get_zone_params().get_compression_type(
- binfo.placement_rule);
+ dest_placement);
CompressorRef plugin;
boost::optional<RGWPutObj_Compress> compressor;
if (compression_type != "none") {