if (!g_conf()->bluestore_debug_omit_block_device_write) {
if (data_size < prefer_deferred_size_snapshot) {
dout(20) << __func__ << " deferring 0x" << std::hex
- << l->length() << std::dec << " write via deferred" << dendl;
+ << l->length() << " write via deferred, pds=0x"
+ << prefer_deferred_size_snapshot
+ << std::dec<< dendl;
bluestore_deferred_op_t *op = _get_deferred_op(txc, l->length());
op->op = bluestore_deferred_op_t::OP_WRITE;
int r = wi.b->get_blob().map(
SetVal(g_conf(), "bluestore_min_alloc_size", stringify(t.min_alloc_size).c_str());
SetVal(g_conf(), "bluestore_max_blob_size", stringify(t.max_blob_size).c_str());
SetVal(g_conf(), "bluestore_prefer_deferred_size", stringify(t.prefer_deferred_size).c_str());
+ // bluestore_prefer_deferred_size set to 0 is a special case
+ // when hdd-/ssd-specific settings applied.
+ // Need to adjust them as well if we want to have no deferred ops at all
+ // Fixes: https://tracker.ceph.com/issues/64443
+ //
+ if (0 == t.prefer_deferred_size) {
+ SetVal(g_conf(), "bluestore_prefer_deferred_size_hdd", "0");
+ SetVal(g_conf(), "bluestore_prefer_deferred_size_ssd", "0");
+ }
g_conf().apply_changes(nullptr);
DeferredSetup();