ASSIGN_OPTION(non_blocking_aio, bool);
ASSIGN_OPTION(cache, bool);
ASSIGN_OPTION(sparse_read_threshold_bytes, Option::size_t);
- ASSIGN_OPTION(readahead_max_bytes, Option::size_t);
- ASSIGN_OPTION(readahead_disable_after_bytes, Option::size_t);
ASSIGN_OPTION(clone_copy_on_read, bool);
ASSIGN_OPTION(enable_alloc_hint, bool);
ASSIGN_OPTION(mirroring_replay_delay, uint64_t);
ASSIGN_OPTION(discard_granularity_bytes, uint64_t);
ASSIGN_OPTION(blkin_trace_all, bool);
+ auto cache_policy = config.get_val<std::string>("rbd_cache_policy");
+ if (cache_policy == "writethrough" || cache_policy == "writeback") {
+ ASSIGN_OPTION(readahead_max_bytes, Option::size_t);
+ ASSIGN_OPTION(readahead_disable_after_bytes, Option::size_t);
+ }
+
#undef ASSIGN_OPTION
if (sparse_read_threshold_bytes == 0) {
bool non_blocking_aio;
bool cache;
uint64_t sparse_read_threshold_bytes;
- uint64_t readahead_max_bytes;
- uint64_t readahead_disable_after_bytes;
+ uint64_t readahead_max_bytes = 0;
+ uint64_t readahead_disable_after_bytes = 0;
bool clone_copy_on_read;
bool enable_alloc_hint;
uint32_t alloc_hint_flags = 0U;
auto cache = cache::WriteAroundObjectDispatch<I>::create(
m_image_ctx, max_dirty, writethrough_until_flush);
cache->init();
+
+ m_image_ctx->readahead.set_max_readahead_size(0);
} else if (cache_policy == "writethrough" || cache_policy == "writeback") {
if (cache_policy == "writethrough") {
max_dirty = 0;