object_cacher = new ObjectCacher(cct, pname, *writeback_handler, cache_lock,
NULL, NULL,
cct->_conf->rbd_cache_size,
- (uint64_t) -1, // unlimited number of objects
+ 10, /* reset this in init */
init_max_dirty,
cct->_conf->rbd_cache_target_dirty,
cct->_conf->rbd_cache_max_dirty_age,
snprintf(format_string, len, "%s.%%016llx", object_prefix.c_str());
}
+ // size object cache appropriately
+ if (object_cacher) {
+ uint64_t obj = cct->_conf->rbd_cache_size / (1ull << order);
+ ldout(cct, 10) << " cache bytes " << cct->_conf->rbd_cache_size << " order " << (int)order
+ << " -> about " << obj << " objects" << dendl;
+ object_cacher->set_max_objects(obj * 4 + 10);
+ }
+
ldout(cct, 10) << "init_layout stripe_unit " << stripe_unit
<< " stripe_count " << stripe_count
<< " object_size " << layout.fl_object_size