}
// caches
- if (!cache_size) {
+ if (!set_cache_flag) {
cache_size = g_conf->rocksdb_cache_size;
}
uint64_t row_cache_size = cache_size * g_conf->rocksdb_cache_row_ratio;
uint64_t block_cache_size = cache_size - row_cache_size;
- if (g_conf->rocksdb_cache_type == "lru") {
- bbt_opts.block_cache = rocksdb::NewLRUCache(
- block_cache_size,
- g_conf->rocksdb_cache_shard_bits);
- } else if (g_conf->rocksdb_cache_type == "clock") {
- bbt_opts.block_cache = rocksdb::NewClockCache(
- block_cache_size,
- g_conf->rocksdb_cache_shard_bits);
+
+ if (block_cache_size == 0) {
+ // disable block cache
+ dout(10) << __func__ << " block_cache_size " << block_cache_size
+ << ", setting no_block_cache " << dendl;
+ bbt_opts.no_block_cache = true;
} else {
- derr << "unrecognized rocksdb_cache_type '" << g_conf->rocksdb_cache_type
- << "'" << dendl;
- return -EINVAL;
+ if (g_conf->rocksdb_cache_type == "lru") {
+ bbt_opts.block_cache = rocksdb::NewLRUCache(
+ block_cache_size,
+ g_conf->rocksdb_cache_shard_bits);
+ } else if (g_conf->rocksdb_cache_type == "clock") {
+ bbt_opts.block_cache = rocksdb::NewClockCache(
+ block_cache_size,
+ g_conf->rocksdb_cache_shard_bits);
+ } else {
+ derr << "unrecognized rocksdb_cache_type '" << g_conf->rocksdb_cache_type
+ << "'" << dendl;
+ return -EINVAL;
+ }
}
bbt_opts.block_size = g_conf->rocksdb_block_size;