#include "librbd/io/ImageDispatcher.h"
#include "librbd/io/ObjectDispatcher.h"
#include "librbd/io/QosImageDispatch.h"
+#include "librbd/io/IoOperations.h"
#include "librbd/journal/StandardPolicy.h"
#include "librbd/operation/ResizeRequest.h"
if (sparse_read_threshold_bytes == 0) {
sparse_read_threshold_bytes = get_object_size();
}
- if (!skip_partial_discard) {
+
+ bool dirty_cache = test_features(RBD_FEATURE_DIRTY_CACHE);
+ if (!skip_partial_discard || dirty_cache) {
discard_granularity_bytes = 0;
}
config.get_val<uint64_t>("rbd_qos_write_bps_limit"),
config.get_val<uint64_t>("rbd_qos_write_bps_burst"),
config.get_val<uint64_t>("rbd_qos_write_bps_burst_seconds"));
+ io_image_dispatcher->apply_qos_exclude_ops(
+ librbd::io::rbd_io_operations_from_string(
+ config.get_val<std::string>("rbd_qos_exclude_ops"), nullptr));
if (!disable_zero_copy &&
config.get_val<bool>("rbd_disable_zero_copy_writes")) {
ctx->write_snap_context(
{{snapc.seq, {snapc.snaps.begin(), snapc.snaps.end()}}});
}
+ if (data_ctx.get_pool_full_try()) {
+ ctx->full_try(true);
+ }
// atomically reset the data IOContext to new version
atomic_store(&data_io_context, ctx);