OPTION(bluestore_block_wal_size, OPT_U64, 96 * 1024*1024) // rocksdb wal
OPTION(bluestore_block_wal_create, OPT_BOOL, false)
OPTION(bluestore_block_preallocate_file, OPT_BOOL, false) //whether preallocate space if block/db_path/wal_path is file rather that block device.
+OPTION(bluestore_precondition_bluefs, OPT_U64, 128*1024*1024) // write this much data at mkfs
+OPTION(bluestore_precondition_bluefs_block, OPT_U64, 1048576)
OPTION(bluestore_csum_type, OPT_STR, "crc32c") // none|xxhash32|xxhash64|crc32c|crc32c_16|crc32c_8
OPTION(bluestore_min_csum_block, OPT_U32, 4096)
OPTION(bluestore_max_csum_block, OPT_U32, 64*1024)
goto out_close_alloc;
dout(10) << __func__ << " success" << dendl;
+ if (bluefs &&
+ g_conf->bluestore_precondition_bluefs > 0) {
+ dout(10) << __func__ << " preconditioning with "
+ << pretty_si_t(g_conf->bluestore_precondition_bluefs)
+ << " in blocks of "
+ << pretty_si_t(g_conf->bluestore_precondition_bluefs_block)
+ << dendl;
+ unsigned n = g_conf->bluestore_precondition_bluefs /
+ g_conf->bluestore_precondition_bluefs_block;
+ bufferlist bl;
+ bufferptr bp(g_conf->bluestore_precondition_bluefs_block);
+ for (unsigned i=0; i < g_conf->bluestore_precondition_bluefs_block; ++i) {
+ bp[i] = rand();
+ }
+ bl.append(bp);
+ string key1("a");
+ string key2("b");
+ for (unsigned i=0; i < n; ++i) {
+ KeyValueDB::Transaction t = db->get_transaction();
+ t->set(PREFIX_SUPER, (i & 1) ? key1 : key2, bl);
+ t->rmkey(PREFIX_SUPER, (i & 1) ? key2 : key1);
+ db->submit_transaction_sync(t);
+ }
+ KeyValueDB::Transaction t = db->get_transaction();
+ t->rmkey(PREFIX_SUPER, key1);
+ t->rmkey(PREFIX_SUPER, key2);
+ db->submit_transaction_sync(t);
+ dout(10) << __func__ << " done preconditioning" << dendl;
+ }
+
out_close_alloc:
_close_alloc();
out_close_fm: