OPTION(filestore_blackhole, OPT_BOOL, false) // drop any new transactions on the floor
OPTION(filestore_dump_file, OPT_STR, "") // file onto which store transaction dumps
OPTION(filestore_kill_at, OPT_INT, 0) // inject a failure at the n'th opportunity
+OPTION(filestore_fail_eio, OPT_BOOL, true) // fail/crash on EIO
OPTION(journal_dio, OPT_BOOL, true)
OPTION(journal_aio, OPT_BOOL, false)
OPTION(journal_block_align, OPT_BOOL, true)
m_filestore_flush_min(g_conf->filestore_flush_min),
m_filestore_max_sync_interval(g_conf->filestore_max_sync_interval),
m_filestore_min_sync_interval(g_conf->filestore_min_sync_interval),
+ m_filestore_fail_eio(g_conf->filestore_fail_eio),
do_update(do_update),
m_journal_dio(g_conf->journal_dio),
m_journal_aio(g_conf->journal_aio),
"filestore_commit_timeout",
"filestore_dump_file",
"filestore_kill_at",
+ "filestore_fail_eio",
NULL
};
return KEYS;
changed.count("filestore_max_sync_interval") ||
changed.count("filestore_flusher_max_fds") ||
changed.count("filestore_flush_min") ||
- changed.count("filestore_kill_at")) {
+ changed.count("filestore_kill_at") ||
+ changed.count("filestore_fail_eio")) {
Mutex::Locker l(lock);
m_filestore_min_sync_interval = conf->filestore_min_sync_interval;
m_filestore_max_sync_interval = conf->filestore_max_sync_interval;
m_filestore_flush_min = conf->filestore_flush_min;
m_filestore_sync_flush = conf->filestore_sync_flush;
m_filestore_kill_at.set(conf->filestore_kill_at);
+ m_filestore_fail_eio = conf->filestore_fail_eio;
}
if (changed.count("filestore_commit_timeout")) {
Mutex::Locker l(sync_entry_timeo_lock);
int m_filestore_flush_min;
double m_filestore_max_sync_interval;
double m_filestore_min_sync_interval;
+ bool m_filestore_fail_eio;
int do_update;
bool m_journal_dio, m_journal_aio;
std::string m_osd_rollback_to_cluster_snap;