OPTION(filestore_queue_committing_max_bytes, OPT_INT, 100 << 20), // "
OPTION(filestore_op_threads, OPT_INT, 2),
OPTION(filestore_op_thread_timeout, OPT_INT, 60),
+ OPTION(filestore_op_thread_suicide_timeout, OPT_INT, 180),
OPTION(filestore_commit_timeout, OPT_FLOAT, 600),
OPTION(filestore_fiemap_threshold, OPT_INT, 4096),
OPTION(journal_dio, OPT_BOOL, true),
int filestore_queue_committing_max_bytes;
int filestore_op_threads;
int filestore_op_thread_timeout;
+ int filestore_op_thread_suicide_timeout;
float filestore_commit_timeout;
int filestore_fiemap_threshold;
stop(false), sync_thread(this),
op_queue_len(0), op_queue_bytes(0), op_finisher(g_ceph_context), next_finish(0),
op_tp(g_ceph_context, "FileStore::op_tp", g_conf->filestore_op_threads),
- op_wq(this, g_conf->filestore_op_thread_timeout, &op_tp),
+ op_wq(this, g_conf->filestore_op_thread_timeout,
+ g_conf->filestore_op_thread_suicide_timeout, &op_tp),
flusher_queue_len(0), flusher_thread(this),
logger(NULL)
{
ThreadPool op_tp;
struct OpWQ : public ThreadPool::WorkQueue<OpSequencer> {
FileStore *store;
- OpWQ(FileStore *fs, time_t timeout, ThreadPool *tp)
- : ThreadPool::WorkQueue<OpSequencer>("FileStore::OpWQ", timeout, 0, tp), store(fs) {}
+ OpWQ(FileStore *fs, time_t timeout, time_t suicide_timeout, ThreadPool *tp)
+ : ThreadPool::WorkQueue<OpSequencer>("FileStore::OpWQ", timeout, suicide_timeout, tp), store(fs) {}
bool _enqueue(OpSequencer *osr) {
store->op_queue.push_back(osr);