return r;
}
- // Automatically set crash_replay_interval on data pool if it
- // isn't already set.
- if (data_pool->get_crash_replay_interval() == 0) {
- // We will be changing osdmon's state and requesting the osdmon to
- // propose. We thus need to make sure the osdmon is writeable before
- // we do this, waiting if it's not.
- if (!mon->osdmon()->is_writeable()) {
- mon->osdmon()->wait_for_writeable(op, new C_RetryMessage(this, op));
- return -EAGAIN;
- }
-
- r = mon->osdmon()->set_crash_replay_interval(data, g_conf->osd_default_data_pool_replay_window);
- assert(r == 0); // We just did get_pg_pool so it must exist and be settable
- request_proposal(mon->osdmon());
- }
-
// All checks passed, go ahead and create.
create_new_fs(pending_fsmap, fs_name, metadata, data);
ss << "new fs with metadata pool " << metadata << " and data pool " << data;
}
-/**
- * Special setter for crash_replay_interval on a pool. Equivalent to
- * using prepare_command_pool_set, but in a form convenient for use
- * from MDSMonitor rather than from an administrative command.
- */
-int OSDMonitor::set_crash_replay_interval(const int64_t pool_id, const uint32_t cri)
-{
- pg_pool_t p;
- if (pending_inc.new_pools.count(pool_id)) {
- p = pending_inc.new_pools[pool_id];
- } else {
- const pg_pool_t *p_ptr = osdmap.get_pg_pool(pool_id);
- if (p_ptr == NULL) {
- return -ENOENT;
- } else {
- p = *p_ptr;
- }
- }
-
- dout(10) << "Set pool " << pool_id << " crash_replay_interval=" << cri << dendl;
- p.crash_replay_interval = cri;
- p.last_change = pending_inc.epoch;
- pending_inc.new_pools[pool_id] = p;
-
- return 0;
-}
-
-
int OSDMonitor::prepare_command_pool_set(map<string,cmd_vartype> &cmdmap,
stringstream& ss)
{
bool prepare_command(MonOpRequestRef op);
bool prepare_command_impl(MonOpRequestRef op, map<string,cmd_vartype>& cmdmap);
- int set_crash_replay_interval(const int64_t pool_id, const uint32_t cri);
int prepare_command_pool_set(map<string,cmd_vartype> &cmdmap,
stringstream& ss);