recovery_gen_wq("recovery_gen_wq", cct->_conf->osd_recovery_thread_timeout,
&osd->disk_tp),
class_handler(osd->class_handler),
+ osd_max_object_size(*cct->_conf, "osd_max_object_size"),
+ osd_skip_data_digest(*cct->_conf, "osd_skip_data_digest"),
pg_epoch_lock("OSDService::pg_epoch_lock"),
publish_lock("OSDService::publish_lock"),
pre_publish_lock("OSDService::pre_publish_lock"),
#include "common/WorkQueue.h"
#include "common/AsyncReserver.h"
#include "common/ceph_context.h"
+#include "common/config_cacher.h"
#include "common/zipkin_trace.h"
#include "mgr/MgrClient.h"
GenContextWQ recovery_gen_wq;
ClassHandler *&class_handler;
+ md_config_cacher_t<uint64_t> osd_max_object_size;
+ md_config_cacher_t<bool> osd_skip_data_digest;
+
void enqueue_back(OpQueueItem&& qi);
void enqueue_front(OpQueueItem&& qi);
ObjectState& obs = ctx->new_obs;
object_info_t& oi = obs.oi;
const hobject_t& soid = oi.soid;
- bool skip_data_digest = osd->store->has_builtin_csum() &&
- cct->_conf->osd_skip_data_digest;
- const uint64_t osd_max_object_size = cct->_conf->osd_max_object_size;
+ const bool skip_data_digest = osd->store->has_builtin_csum() &&
+ osd->osd_skip_data_digest;
PGTransaction* t = ctx->op_t.get();
// munge ZERO -> TRUNCATE? (don't munge to DELETE or we risk hosing attributes)
if (op.op == CEPH_OSD_OP_ZERO &&
obs.exists &&
- op.extent.offset < osd_max_object_size &&
+ op.extent.offset < osd->osd_max_object_size &&
op.extent.length >= 1 &&
- op.extent.length <= osd_max_object_size &&
+ op.extent.length <= osd->osd_max_object_size &&
op.extent.offset + op.extent.length >= oi.size) {
if (op.extent.offset >= oi.size) {
// no-op
}
}
result = check_offset_and_length(op.extent.offset, op.extent.length,
- osd_max_object_size, get_dpp());
+ osd->osd_max_object_size, get_dpp());
if (result < 0)
break;
break;
}
result = check_offset_and_length(0, op.extent.length,
- osd_max_object_size, get_dpp());
+ osd->osd_max_object_size, get_dpp());
if (result < 0)
break;
++ctx->num_write;
{ // zero
result = check_offset_and_length(op.extent.offset, op.extent.length,
- osd_max_object_size, get_dpp());
+ osd->osd_max_object_size, get_dpp());
if (result < 0)
break;
}
result = check_offset_and_length(op.extent.offset, op.extent.length,
- osd_max_object_size, get_dpp());
+ osd->osd_max_object_size, get_dpp());
if (result < 0)
break;