_dout_need_open = true;
}
-
-#define CF_READ(section, var, inout) \
- cf->read(section, var, &g_conf.inout, g_conf.inout)
-
-#define CF_READ_TYPE(section, var, type, inout) \
- cf->read(section, var, (type *)&g_conf.inout, (type)g_conf.inout)
-
-#define CF_READ_STR(section, var, inout) \
- cf->read(section, var, (char **)&g_conf.inout, (char *)g_conf.inout)
-
-void parse_config_file0(ConfFile *cf, bool auto_update)
-{
- cf->set_auto_update(true);
-
- cf->parse();
-
- CF_READ("global", "num mon", num_mon);
- CF_READ("global", "num mds", num_mds);
- CF_READ("global", "num osd", num_osd);
- CF_READ_STR("global", "monmap file", monmap_file);
- CF_READ("global", "daemonize", daemonize);
- CF_READ("global", "log to stdout", log_to_stdout);
- CF_READ("global", "logger", logger);
- CF_READ("global", "logger interval", logger_interval);
- CF_READ_STR("global", "logger calc variance", logger_subdir);
- CF_READ_STR("global", "logger subdir", logger_subdir);
- CF_READ_STR("global", "logger dir", logger_dir);
-
- CF_READ_STR("global", "log dir", log_dir);
- CF_READ_STR("global", "log sym dir", log_sym_dir);
-
- CF_READ_STR("global", "pid file", pid_file);
-
- CF_READ("global", "chdir root", chdir_root);
-
- CF_READ("debug", "debug", debug);
- CF_READ("debug", "lockdep", debug_lockdep);
- CF_READ("debug", "mds", debug_mds);
- CF_READ("debug", "mds balancer", debug_mds_balancer);
- CF_READ("debug", "mds log expire", debug_mds_log_expire);
- CF_READ("debug", "buffer", debug_buffer);
- CF_READ("debug", "filer", debug_filer);
- CF_READ("debug", "journaler", debug_journaler);
- CF_READ("debug", "client", debug_client);
- CF_READ("debug", "ebofs", debug_ebofs);
- CF_READ("debug", "journal", debug_journal);
- CF_READ("debug", "ns", debug_ns);
- CF_READ("debug", "ms", debug_ms);
- CF_READ("debug", "mon", debug_mon);
- CF_READ("debug", "tp", debug_tp);
-
- CF_READ("clock", "lock", clock_lock);
- CF_READ("clock", "tare", clock_tare);
-
- CF_READ("messenger", "tcp nodelay", ms_tcp_nodelay);
- CF_READ("messenger", "retry interval", ms_retry_interval);
- CF_READ("messenger", "fail interval", ms_fail_interval);
- CF_READ("messenger", "die on failure", ms_die_on_failure);
- CF_READ("messenger", "no crc", ms_nocrc);
-
- CF_READ("mon", "tick interval", mon_tick_interval);
- CF_READ("mon", "osd down out interval", mon_osd_down_out_interval);
- CF_READ("mon", "lease", mon_lease);
- CF_READ("mon", "lease renew interval", mon_lease_renew_interval);
- CF_READ("mon", "lease ack timeout", mon_lease_ack_timeout);
- CF_READ("mon", "lease timeout", mon_lease_timeout);
- CF_READ("mon", "accept timeout", mon_accept_timeout);
- CF_READ("mon", "stop on last unmount", mon_stop_on_last_unmount);
- CF_READ("mon", "stop with last mds", mon_stop_with_last_mds);
- CF_READ("mon", "allow mds bully", mon_allow_mds_bully);
- CF_READ("mon", "pg create interval", mon_pg_create_interval);
-
- CF_READ("paxos", "propose interval", paxos_propose_interval);
- CF_READ("paxos", "observer timeout", paxos_observer_timeout);
-
- CF_READ("client", "cache size", client_cache_size);
- CF_READ("client", "cache mid", client_cache_mid);
- CF_READ("client", "cache stat ttl", client_cache_stat_ttl);
- CF_READ("client", "cache readdir ttl", client_cache_readdir_ttl);
- CF_READ("client", "use random mds", client_use_random_mds);
- CF_READ("client", "mount timeout", client_mount_timeout);
- CF_READ("client", "tick interval", client_tick_interval);
- CF_READ("client", "hack balance reads", client_hack_balance_reads);
- CF_READ_STR("client", "trace", client_trace);
- CF_READ_TYPE("client", "readahead min", long long, client_readahead_min);
- CF_READ_TYPE("client", "readahead max bytes", long long, client_readahead_max_bytes);
- CF_READ_TYPE("client", "readahead max periods", long long, client_readahead_max_periods);
- CF_READ_STR("client", "snapdir", client_snapdir);
-
- CF_READ("fuse", "direct io", fuse_direct_io);
- CF_READ("fuse", "fuse_ll", fuse_ll);
-
- CF_READ("client oc", "oc", client_oc);
- CF_READ("client oc", "oc size", client_oc_size);
- CF_READ("client oc", "oc max dirty", client_oc_max_dirty);
- CF_READ("client oc", "oc target dirty", client_oc_target_dirty);
- CF_READ_TYPE("client oc", "oc max sync write", unsigned long long, client_oc_max_sync_write);
-
- CF_READ("objecter", "buffer uncommitted", objecter_buffer_uncommitted);
- CF_READ("objecter", "map request interval", objecter_map_request_interval);
- CF_READ("objecter", "tick interval", objecter_tick_interval);
- CF_READ("objecter", "timeout", objecter_timeout);
-
- CF_READ("journaler", "allow split entries", journaler_allow_split_entries);
- CF_READ("journaler", "safe", journaler_safe);
- CF_READ("journaler", "write head interval", journaler_write_head_interval);
- CF_READ("journaler", "cache", journaler_cache);
- CF_READ("journaler", "prefetch periods", journaler_prefetch_periods);
- CF_READ("journaler", "batch interval", journaler_batch_interval);
- CF_READ_TYPE("journaler", "batch max", unsigned long long, journaler_batch_max);
-
- CF_READ("mds", "cache size", mds_cache_size);
- CF_READ("mds", "cache mid", mds_cache_mid);
- CF_READ("mds", "decay halflife", mds_decay_halflife);
- CF_READ("mds", "beacon interval", mds_beacon_interval);
- CF_READ("mds", "beacon grace", mds_beacon_grace);
- CF_READ("mds", "blacklist interval", mds_blacklist_interval);
- CF_READ("mds", "session timeout", mds_session_timeout);
- CF_READ("mds", "session autoclose", mds_session_autoclose);
- CF_READ("mds", "client lease", mds_client_lease);
- CF_READ("mds", "reconnect timeout", mds_reconnect_timeout);
- CF_READ("mds", "tick interval", mds_tick_interval);
- CF_READ("mds", "scatter nudge interval", mds_scatter_nudge_interval);
- CF_READ("mds", "client prealloc inos", mds_client_prealloc_inos);
- CF_READ("mds", "early reply", mds_early_reply);
- CF_READ("mds", "log", mds_log);
- CF_READ("mds", "log max events", mds_log_max_events);
- CF_READ("mds", "log max segments", mds_log_max_segments);
- CF_READ("mds", "log max expiring", mds_log_max_expiring);
- CF_READ("mds", "log pad entry", mds_log_pad_entry);
- CF_READ("mds", "log eopen size", mds_log_eopen_size);
- CF_READ("mds", "bal sample interval", mds_bal_sample_interval);
- CF_READ("mds", "bal replicate threshold", mds_bal_replicate_threshold);
- CF_READ("mds", "bal unreplicate threshold", mds_bal_unreplicate_threshold);
- CF_READ("mds", "bal frag", mds_bal_frag);
- CF_READ("mds", "bal split size", mds_bal_split_size);
- CF_READ("mds", "bal split rd", mds_bal_split_rd);
- CF_READ("mds", "bal split wr", mds_bal_split_wr);
- CF_READ("mds", "bal merge size", mds_bal_merge_size);
- CF_READ("mds", "bal merge rd", mds_bal_merge_rd);
- CF_READ("mds", "bal merge wr", mds_bal_merge_wr);
- CF_READ("mds", "bal interval", mds_bal_interval);
- CF_READ("mds", "bal fragment interval", mds_bal_fragment_interval);
- CF_READ("mds", "bal idle threshold", mds_bal_idle_threshold);
- CF_READ("mds", "bal max", mds_bal_max);
- CF_READ("mds", "bal max until", mds_bal_max_until);
- CF_READ("mds", "bal mode", mds_bal_mode);
- CF_READ("mds", "bal min rebalance", mds_bal_min_rebalance);
- CF_READ("mds", "bal min start", mds_bal_min_start);
- CF_READ("mds", "bal need min", mds_bal_need_min);
- CF_READ("mds", "bal need max", mds_bal_need_max);
- CF_READ("mds", "bal midchunk", mds_bal_midchunk);
- CF_READ("mds", "bal minchunk", mds_bal_minchunk);
- CF_READ("mds", "trim on rejoin", mds_trim_on_rejoin);
- CF_READ("mds", "shutdown check", mds_shutdown_check);
- CF_READ("mds", "verify export dirauth", mds_verify_export_dirauth);
- CF_READ("mds", "local osd", mds_local_osd);
- CF_READ("mds", "thrash exports", mds_thrash_exports);
- CF_READ("mds", "thrash fragments", mds_thrash_fragments);
- CF_READ("mds", "dump cache on map", mds_dump_cache_on_map);
- CF_READ("mds", "dump cache after rejoin", mds_dump_cache_after_rejoin);
- CF_READ("mds", "hack log expire for better stats", mds_hack_log_expire_for_better_stats);
-
- CF_READ("osd", "balance reads", osd_balance_reads);
- CF_READ("osd", "flash crowd iat threshold", osd_flash_crowd_iat_threshold);
- CF_READ("osd", "flash crowd iat alpha", osd_flash_crowd_iat_alpha);
- CF_READ("osd", "balance reads temp", osd_balance_reads_temp);
- CF_READ("osd", "shed reads", osd_shed_reads);
- CF_READ("osd", "shed reads min latency", osd_shed_reads_min_latency);
- CF_READ("osd", "shed reads min latency diff", osd_shed_reads_min_latency_diff);
- CF_READ("osd", "shed reads min latency ratio", osd_shed_reads_min_latency_ratio);
- CF_READ("osd", "immediate read from cache", osd_immediate_read_from_cache);
- CF_READ("osd", "exclusive caching", osd_exclusive_caching);
- CF_READ("osd", "stat refresh interval", osd_stat_refresh_interval);
- CF_READ("osd", "min pg size without alive", osd_min_pg_size_without_alive);
- CF_READ("osd", "pg bits", osd_pg_bits);
- CF_READ("osd", "lpg bits", osd_lpg_bits);
- CF_READ("osd", "object layout", osd_object_layout);
- CF_READ("osd", "pg layout", osd_pg_layout);
- CF_READ("osd", "min rep", osd_min_rep);
- CF_READ("osd", "max rep", osd_max_rep);
- CF_READ("osd", "min raid width", osd_min_raid_width);
- CF_READ("osd", "max raid width", osd_max_raid_width);
- CF_READ("osd", "maxthreads", osd_maxthreads);
- CF_READ("osd", "max opq", osd_max_opq);
- CF_READ("osd", "age", osd_age);
- CF_READ("osd", "age time", osd_age_time);
- CF_READ("osd", "heartbeat interval", osd_heartbeat_interval);
- CF_READ("osd", "mon heartbeat interval", osd_mon_heartbeat_interval);
- CF_READ("osd", "heartbeat grace", osd_heartbeat_grace);
- CF_READ("osd", "mon report interval", osd_mon_report_interval);
- CF_READ("osd", "replay window", osd_replay_window);
- CF_READ("osd", "max pull", osd_max_pull);
- CF_READ("osd", "preserve trimmed log", osd_preserve_trimmed_log);
- CF_READ("osd", "recovery delay start", osd_recovery_delay_start);
- CF_READ("osd", "recovery max active", osd_recovery_max_active);
- CF_READ("osd", "auto weight", osd_auto_weight);
-
- CF_READ("filestore", "filestore", filestore);
- CF_READ("filestore", "sync interval", filestore_sync_interval);
- CF_READ("filestore", "fake attrs", filestore_fake_attrs);
- CF_READ("filestore", "fake collections", filestore_fake_collections);
- CF_READ_STR("filestore", "dev", filestore_dev);
- CF_READ("filestore", "btrfs trans", filestore_btrfs_trans);
-
- CF_READ("ebofs", "ebofs", ebofs);
- CF_READ("ebofs", "cloneable", ebofs_cloneable);
- CF_READ("ebofs", "verify", ebofs_verify);
- CF_READ("ebofs", "commit ms", ebofs_commit_ms);
- CF_READ("ebofs", "oc size", ebofs_oc_size);
- CF_READ("ebofs", "cc size", ebofs_cc_size);
- CF_READ_TYPE("ebofs", "bc size", unsigned long long, ebofs_bc_size);
- CF_READ_TYPE("ebofs", "bc max dirty", unsigned long long, ebofs_bc_max_dirty);
- CF_READ("ebofs", "max prefetch", ebofs_max_prefetch);
- CF_READ("ebofs", "realloc", ebofs_realloc);
- CF_READ("ebofs", "verify csum on read", ebofs_verify_csum_on_read);
-
- CF_READ("journal", "dio", journal_dio);
- CF_READ("journal", "max write bytes", journal_max_write_bytes);
- CF_READ("journal", "max write entries", journal_max_write_entries);
-
- CF_READ("bdev", "lock", bdev_lock);
- CF_READ("bdev", "iothreads", bdev_iothreads);
- CF_READ("bdev", "idle kick after ms", bdev_idle_kick_after_ms);
- CF_READ("bdev", "el fw max ms", bdev_el_fw_max_ms);
- CF_READ("bdev", "el bw max ms", bdev_el_bw_max_ms);
- CF_READ("bdev", "el bidir", bdev_el_bidir);
- CF_READ("bdev", "iov max", bdev_iov_max);
- CF_READ("bdev", "debug check io overlap", bdev_debug_check_io_overlap);
- CF_READ("bdev", "fake mb", bdev_fake_mb);
- CF_READ("bdev", "fake max mb", bdev_fake_max_mb);
-#ifdef USE_OSBDB
- CF_READ("bdstore", "bdbstore", bdbstore);
- CF_READ("bdstore", "debug", debug_bdbstore);
- CF_READ("bdstore", "btree", bdbstore_btree);
- CF_READ("bdstore", "ffactor", bdbstore_ffactor);
- CF_READ("bdstore", "nelem", bdbstore_nelem);
- CF_READ("bdstore", "pagesize", bdbstore_pagesize);
- CF_READ("bdstore", "cachesize", bdbstore_cachesize);
- CF_READ("bdstore", "transactional", bdbstore_transactional);
-#endif
-}
-#if 0
-void parse_config_options0(std::vector<const char*>& args, bool open)
-{
- std::vector<const char*> nargs;
-
- for (unsigned i=0; i<args.size(); i++) {
- bool isarg = i+1 < args.size(); // is more?
-
- if ((strcmp(args[i], "--conf_file") == 0 ||
- strcmp(args[i], "-c") == 0) && isarg)
- g_conf.conf_file = args[++i];
- else if (strcmp(args[i], "--dump_conf") == 0)
- g_conf.dump_conf = true;
- else
- nargs.push_back(args[i]);
- }
- args.swap(nargs);
- nargs.clear();
-
- ConfFile cf(g_conf.conf_file);
-
- parse_config_file(&cf, true);
- if (g_conf.dump_conf)
- cf.dump();
-
- for (unsigned i=0; i<args.size(); i++) {
- bool isarg = i+1 < args.size(); // is more?
-
- if (strcmp(args[i],"--bind") == 0 && isarg) {
- assert_warn(parse_ip_port(args[++i], g_my_addr));
- } else if (strcmp(args[i], "--nummon") == 0 && isarg)
- g_conf.num_mon = atoi(args[++i]);
- else if (strcmp(args[i], "--nummds") == 0 && isarg)
- g_conf.num_mds = atoi(args[++i]);
- else if (strcmp(args[i], "--numclient") == 0 && isarg)
- g_conf.num_client = atoi(args[++i]);
- else if (strcmp(args[i], "--numosd") == 0 && isarg)
- g_conf.num_osd = atoi(args[++i]);
-
- else if (strcmp(args[i], "--monmap_file") == 0 && isarg)
- g_conf.monmap_file = args[++i];
- else if ((strcmp(args[i], "--mon_host") == 0 ||
- strcmp(args[i], "-m") == 0) && isarg)
- g_conf.mon_host = args[++i];
- else if ((strcmp(args[i], "--daemonize") == 0 ||
- strcmp(args[i], "-d") == 0) && isarg) {
- g_conf.daemonize = true;
- g_conf.log_to_stdout = false;
- } else if ((strcmp(args[i], "--foreground") == 0 ||
- strcmp(args[i], "-f") == 0) && isarg) {
- g_conf.daemonize = false;
- g_conf.log_to_stdout = false;
- }
-
- else if (strcmp(args[i], "--ms_nocrc") == 0)
- g_conf.ms_nocrc = true;
-
- /*else if (strcmp(args[i], "--tcp_log") == 0)
- g_conf.tcp_log = true;
- else if (strcmp(args[i], "--tcp_multi_out") == 0)
- g_conf.tcp_multi_out = atoi(args[++i]);
- */
-
- else if (strcmp(args[i], "--fake_kill_osd_after") == 0) {
- g_fake_kill_after[entity_name_t(entity_name_t::TYPE_OSD, atoi(args[i+1]))] = atof(args[i+2]);
- i += 2;
- }
- else if (strcmp(args[i], "--fake_kill_mds_after") == 0) {
- g_fake_kill_after[entity_name_t(entity_name_t::TYPE_MDS, atoi(args[i+1]))] = atof(args[i+2]);
- i += 2;
- }
- else if (strcmp(args[i], "--fake_kill_mon_after") == 0) {
- g_fake_kill_after[entity_name_t(entity_name_t::TYPE_MON, atoi(args[i+1]))] = atof(args[i+2]);
- i += 2;
- }
- else if (strcmp(args[i], "--fake_kill_client_after") == 0) {
- g_fake_kill_after[entity_name_t(entity_name_t::TYPE_CLIENT, atoi(args[i+1]))] = atof(args[i+2]);
- i += 2;
- }
-
- else if (strcmp(args[i], "--log_dir") == 0 && isarg)
- g_conf.log_dir = args[++i];
- else if (//strcmp(args[i], "-o") == 0 ||
- strcmp(args[i], "--log_sym_dir") == 0 && isarg)
- g_conf.log_sym_dir = args[++i];
- else if (strcmp(args[i], "--logger_dir") == 0 && isarg)
- g_conf.logger_dir = args[++i];
- else if ((strcmp(args[i], "--pid_file") == 0 ||
- strcmp(args[i], "-p") == 0) && isarg)
- g_conf.pid_file = args[++i];
-
- else if (strcmp(args[i], "--lockdep") == 0 && isarg)
- g_lockdep = atoi(args[++i]);
-
- else if (strcmp(args[i], "--debug") == 0 && isarg)
- if (!g_conf.debug_after)
- g_conf.debug = atoi(args[++i]);
- else
- g_debug_after_conf.debug = atoi(args[++i]);
- else if (strcmp(args[i], "--debug_lockdep") == 0 && isarg)
- if (!g_conf.debug_after)
- g_conf.debug_lockdep = atoi(args[++i]);
- else
- g_debug_after_conf.debug_lockdep = atoi(args[++i]);
- else if (strcmp(args[i], "--debug_mds") == 0 && isarg)
- if (!g_conf.debug_after)
- g_conf.debug_mds = atoi(args[++i]);
- else
- g_debug_after_conf.debug_mds = atoi(args[++i]);
- else if (strcmp(args[i], "--debug_mds_balancer") == 0 && isarg)
- if (!g_conf.debug_after)
- g_conf.debug_mds_balancer = atoi(args[++i]);
- else
- g_debug_after_conf.debug_mds_balancer = atoi(args[++i]);
- else if (strcmp(args[i], "--debug_mds_log") == 0 && isarg)
- if (!g_conf.debug_after)
- g_conf.debug_mds_log = atoi(args[++i]);
- else
- g_debug_after_conf.debug_mds_log = atoi(args[++i]);
- else if (strcmp(args[i], "--debug_mds_log_expire") == 0 && isarg)
- if (!g_conf.debug_after)
- g_conf.debug_mds_log_expire = atoi(args[++i]);
- else
- g_debug_after_conf.debug_mds_log_expire = atoi(args[++i]);
- else if (strcmp(args[i], "--debug_mds_migrator") == 0 && isarg)
- if (!g_conf.debug_after)
- g_conf.debug_mds_migrator = atoi(args[++i]);
- else
- g_debug_after_conf.debug_mds_migrator = atoi(args[++i]);
- else if (strcmp(args[i], "--debug_buffer") == 0 && isarg)
- if (!g_conf.debug_after)
- g_conf.debug_buffer = atoi(args[++i]);
- else
- g_debug_after_conf.debug_buffer = atoi(args[++i]);
- else if (strcmp(args[i], "--debug_timer") == 0 && isarg)
- if (!g_conf.debug_after)
- g_conf.debug_timer = atoi(args[++i]);
- else
- g_debug_after_conf.debug_timer = atoi(args[++i]);
- else if (strcmp(args[i], "--debug_filer") == 0 && isarg)
- if (!g_conf.debug_after)
- g_conf.debug_filer = atoi(args[++i]);
- else
- g_debug_after_conf.debug_filer = atoi(args[++i]);
- else if (strcmp(args[i], "--debug_objecter") == 0 && isarg)
- if (!g_conf.debug_after)
- g_conf.debug_objecter = atoi(args[++i]);
- else
- g_debug_after_conf.debug_objecter = atoi(args[++i]);
- else if (strcmp(args[i], "--debug_journaler") == 0 && isarg)
- if (!g_conf.debug_after)
- g_conf.debug_journaler = atoi(args[++i]);
- else
- g_debug_after_conf.debug_journaler = atoi(args[++i]);
- else if (strcmp(args[i], "--debug_objectcacher") == 0 && isarg)
- if (!g_conf.debug_after)
- g_conf.debug_objectcacher = atoi(args[++i]);
- else
- g_debug_after_conf.debug_objectcacher = atoi(args[++i]);
- else if (strcmp(args[i], "--debug_client") == 0 && isarg)
- if (!g_conf.debug_after)
- g_conf.debug_client = atoi(args[++i]);
- else
- g_debug_after_conf.debug_client = atoi(args[++i]);
- else if (strcmp(args[i], "--debug_osd") == 0 && isarg)
- if (!g_conf.debug_after)
- g_conf.debug_osd = atoi(args[++i]);
- else
- g_debug_after_conf.debug_osd = atoi(args[++i]);
- else if (strcmp(args[i], "--debug_ebofs") == 0 && isarg)
- if (!g_conf.debug_after)
- g_conf.debug_ebofs = atoi(args[++i]);
- else
- g_debug_after_conf.debug_ebofs = atoi(args[++i]);
- else if (strcmp(args[i], "--debug_filestore") == 0 && isarg)
- if (!g_conf.debug_after)
- g_conf.debug_filestore = atoi(args[++i]);
- else
- g_debug_after_conf.debug_filestore = atoi(args[++i]);
- else if (strcmp(args[i], "--debug_journal") == 0 && isarg)
- if (!g_conf.debug_after)
- g_conf.debug_journal = atoi(args[++i]);
- else
- g_debug_after_conf.debug_journal = atoi(args[++i]);
- else if (strcmp(args[i], "--debug_bdev") == 0 && isarg)
- if (!g_conf.debug_after)
- g_conf.debug_bdev = atoi(args[++i]);
- else
- g_debug_after_conf.debug_bdev = atoi(args[++i]);
- else if (strcmp(args[i], "--debug_ms") == 0 && isarg)
- if (!g_conf.debug_after)
- g_conf.debug_ms = atoi(args[++i]);
- else
- g_debug_after_conf.debug_ms = atoi(args[++i]);
- else if (strcmp(args[i], "--debug_mon") == 0 && isarg)
- if (!g_conf.debug_after)
- g_conf.debug_mon = atoi(args[++i]);
- else
- g_debug_after_conf.debug_mon = atoi(args[++i]);
- else if (strcmp(args[i], "--debug_paxos") == 0 && isarg)
- if (!g_conf.debug_after)
- g_conf.debug_paxos = atoi(args[++i]);
- else
- g_debug_after_conf.debug_paxos = atoi(args[++i]);
- else if (strcmp(args[i], "--debug_tp") == 0 && isarg)
- if (!g_conf.debug_after)
- g_conf.debug_tp = atoi(args[++i]);
- else
- g_debug_after_conf.debug_tp = atoi(args[++i]);
-
- else if (strcmp(args[i], "--debug_after") == 0 && isarg) {
- g_conf.debug_after = atoi(args[++i]);
- g_debug_after_conf = g_conf;
- }
-
- else if (strcmp(args[i], "--logger") == 0 && isarg)
- g_conf.logger = atoi(args[++i]);
- else if (strcmp(args[i], "--logger_subdir") == 0 && isarg)
- g_conf.logger_subdir = args[++i];
-
- else if (strcmp(args[i], "--fakemessenger_serialize") == 0 && isarg)
- g_conf.fakemessenger_serialize = atoi(args[++i]);
-
-
- else if (strcmp(args[i], "--clock_lock") == 0 && isarg)
- g_conf.clock_lock = atoi(args[++i]);
- else if (strcmp(args[i], "--clock_tare") == 0 && isarg)
- g_conf.clock_tare = atoi(args[++i]);
-
- else if (strcmp(args[i], "--objecter_buffer_uncommitted") == 0 && isarg)
- g_conf.objecter_buffer_uncommitted = atoi(args[++i]);
-
- else if (strcmp(args[i], "--journaler_safe") == 0 && isarg)
- g_conf.journaler_safe = atoi(args[++i]);
- else if (strcmp(args[i], "--journaler_cache") == 0 && isarg)
- g_conf.journaler_cache = atoi(args[++i]);
- else if (strcmp(args[i], "--journaler_batch_interval") == 0 && isarg)
- g_conf.journaler_batch_interval = atof(args[++i]);
- else if (strcmp(args[i], "--journaler_batch_max") == 0 && isarg)
- g_conf.journaler_batch_max = atoi(args[++i]);
-
- else if (strcmp(args[i], "--mds_cache_size") == 0 && isarg)
- g_conf.mds_cache_size = atoi(args[++i]);
-
- else if (strcmp(args[i], "--mds_beacon_interval") == 0 && isarg)
- g_conf.mds_beacon_interval = atoi(args[++i]);
- else if (strcmp(args[i], "--mds_beacon_grace") == 0 && isarg)
- g_conf.mds_beacon_grace = atoi(args[++i]);
-
- else if (strcmp(args[i], "--mds_log") == 0 && isarg)
- g_conf.mds_log = atoi(args[++i]);
- else if (strcmp(args[i], "--mds_log_max_events") == 0 && isarg)
- g_conf.mds_log_max_events = atoi(args[++i]);
- else if (strcmp(args[i], "--mds_log_max_segments") == 0 && isarg)
- g_conf.mds_log_max_segments = atoi(args[++i]);
- else if (strcmp(args[i], "--mds_log_max_expiring") == 0 && isarg)
- g_conf.mds_log_max_expiring = atoi(args[++i]);
-
- else if (strcmp(args[i], "--mds_shutdown_check") == 0 && isarg)
- g_conf.mds_shutdown_check = atoi(args[++i]);
-
- else if (strcmp(args[i], "--mds_decay_halflife") == 0 && isarg)
- g_conf.mds_decay_halflife = atoi(args[++i]);
-
- else if (strcmp(args[i], "--mds_early_reply") == 0 && isarg)
- g_conf.mds_early_reply = atoi(args[++i]);
- else if (strcmp(args[i], "--mds_client_prealloc_inos") == 0 && isarg)
- g_conf.mds_client_prealloc_inos = atoi(args[++i]);
-
- else if (strcmp(args[i], "--mds_bal_interval") == 0 && isarg)
- g_conf.mds_bal_interval = atoi(args[++i]);
- else if (strcmp(args[i], "--mds_bal_rep") == 0 && isarg)
- g_conf.mds_bal_replicate_threshold = atoi(args[++i]);
- else if (strcmp(args[i], "--mds_bal_unrep") == 0 && isarg)
- g_conf.mds_bal_unreplicate_threshold = atoi(args[++i]);
- else if (strcmp(args[i], "--mds_bal_max") == 0 && isarg)
- g_conf.mds_bal_max = atoi(args[++i]);
- else if (strcmp(args[i], "--mds_bal_max_until") == 0 && isarg)
- g_conf.mds_bal_max_until = atoi(args[++i]);
-
- else if (strcmp(args[i], "--mds_bal_frag") == 0 && isarg)
- g_conf.mds_bal_frag = atoi(args[++i]);
- else if (strcmp(args[i], "--mds_bal_split_size") == 0 && isarg)
- g_conf.mds_bal_split_size = atoi(args[++i]);
- else if (strcmp(args[i], "--mds_bal_split_rd") == 0 && isarg)
- g_conf.mds_bal_split_rd = atoi(args[++i]);
- else if (strcmp(args[i], "--mds_bal_split_wr") == 0 && isarg)
- g_conf.mds_bal_split_wr = atoi(args[++i]);
- else if (strcmp(args[i], "--mds_bal_merge_size") == 0 && isarg)
- g_conf.mds_bal_merge_size = atoi(args[++i]);
- else if (strcmp(args[i], "--mds_bal_merge_rd") == 0 && isarg)
- g_conf.mds_bal_merge_rd = atoi(args[++i]);
- else if (strcmp(args[i], "--mds_bal_merge_wr") == 0 && isarg)
- g_conf.mds_bal_merge_wr = atoi(args[++i]);
-
- else if (strcmp(args[i], "--mds_bal_fragment_interval") == 0 && isarg)
- g_conf.mds_bal_fragment_interval = atoi(args[++i]);
-
- else if (strcmp(args[i], "--mds_bal_mode") == 0 && isarg)
- g_conf.mds_bal_mode = atoi(args[++i]);
- else if (strcmp(args[i], "--mds_bal_min_start") == 0 && isarg)
- g_conf.mds_bal_min_start = atoi(args[++i]);
- else if (strcmp(args[i], "--mds_bal_need_min") == 0 && isarg)
- g_conf.mds_bal_need_min = atoi(args[++i]);
- else if (strcmp(args[i], "--mds_bal_need_max") == 0 && isarg)
- g_conf.mds_bal_need_max = atoi(args[++i]);
- else if (strcmp(args[i], "--mds_bal_midchunk") == 0 && isarg)
- g_conf.mds_bal_midchunk = atoi(args[++i]);
- else if (strcmp(args[i], "--mds_bal_minchunk") == 0 && isarg)
- g_conf.mds_bal_minchunk = atoi(args[++i]);
-
- else if (strcmp(args[i], "--mds_local_osd") == 0 && isarg)
- g_conf.mds_local_osd = atoi(args[++i]);
- else if (strcmp(args[i], "--mds_thrash_exports") == 0 && isarg)
- g_conf.mds_thrash_exports = atoi(args[++i]);
- else if (strcmp(args[i], "--mds_thrash_fragments") == 0 && isarg)
- g_conf.mds_thrash_fragments = atoi(args[++i]);
- else if (strcmp(args[i], "--mds_dump_cache_on_map") == 0)
- g_conf.mds_dump_cache_on_map = true;
-
- else if (strcmp(args[i], "--mds_hack_log_expire_for_better_stats") == 0 && isarg)
- g_conf.mds_hack_log_expire_for_better_stats = atoi(args[++i]);
-
- else if (strcmp(args[i], "--client_use_random_mds") == 0)
- g_conf.client_use_random_mds = true;
- else if (strcmp(args[i], "--client_cache_size") == 0 && isarg)
- g_conf.client_cache_size = atoi(args[++i]);
- else if (strcmp(args[i], "--client_cache_stat_ttl") == 0 && isarg)
- g_conf.client_cache_stat_ttl = atoi(args[++i]);
- else if (strcmp(args[i], "--client_cache_readdir_ttl") == 0 && isarg)
- g_conf.client_cache_readdir_ttl = atoi(args[++i]);
- else if (strcmp(args[i], "--client_trace") == 0 && isarg)
- g_conf.client_trace = args[++i];
-
- else if (strcmp(args[i], "--client_readahead_min") == 0 && isarg)
- g_conf.client_readahead_min = atoi(args[++i]);
- else if (strcmp(args[i], "--client_readahead_max_bytes") == 0 && isarg)
- g_conf.client_readahead_max_bytes = atoi(args[++i]);
- else if (strcmp(args[i], "--client_readahead_max_periods") == 0 && isarg)
- g_conf.client_readahead_max_periods = atoi(args[++i]);
-
- else if (strcmp(args[i], "--fuse_direct_io") == 0 && isarg)
- g_conf.fuse_direct_io = atoi(args[++i]);
- else if (strcmp(args[i], "--fuse_ll") == 0 && isarg)
- g_conf.fuse_ll = atoi(args[++i]);
-
- else if (strcmp(args[i], "--mon_osd_down_out_interval") == 0 && isarg)
- g_conf.mon_osd_down_out_interval = atoi(args[++i]);
- else if (strcmp(args[i], "--mon_stop_on_last_unmount") == 0 && isarg)
- g_conf.mon_stop_on_last_unmount = atoi(args[++i]);
- else if (strcmp(args[i], "--mon_stop_with_last_mds") == 0 && isarg)
- g_conf.mon_stop_with_last_mds = atoi(args[++i]);
-
- else if (strcmp(args[i], "--client_oc") == 0 && isarg)
- g_conf.client_oc = atoi(args[++i]);
- else if (strcmp(args[i], "--client_oc_size") == 0 && isarg)
- g_conf.client_oc_size = atoi(args[++i]);
- else if (strcmp(args[i], "--client_oc_max_dirty") == 0 && isarg)
- g_conf.client_oc_max_dirty = atoi(args[++i]);
-
- else if (strcmp(args[i], "--client_hack_balance_reads") == 0 && isarg)
- g_conf.client_hack_balance_reads = atoi(args[++i]);
-
- else if (strcmp(args[i], "--ebofs") == 0)
- g_conf.ebofs = true;
- else if (strcmp(args[i], "--ebofs_cloneable") == 0 && isarg)
- g_conf.ebofs_cloneable = atoi(args[++i]);
- else if (strcmp(args[i], "--ebofs_verify") == 0 && isarg)
- g_conf.ebofs_verify = atoi(args[++i]);
- else if (strcmp(args[i], "--ebofs_commit_ms") == 0 && isarg)
- g_conf.ebofs_commit_ms = atoi(args[++i]);
- else if (strcmp(args[i], "--ebofs_oc_size") == 0 && isarg)
- g_conf.ebofs_oc_size = atoi(args[++i]);
- else if (strcmp(args[i], "--ebofs_cc_size") == 0 && isarg)
- g_conf.ebofs_cc_size = atoi(args[++i]);
- else if (strcmp(args[i], "--ebofs_bc_size") == 0 && isarg)
- g_conf.ebofs_bc_size = atoi(args[++i]);
- else if (strcmp(args[i], "--ebofs_bc_max_dirty") == 0 && isarg)
- g_conf.ebofs_bc_max_dirty = atoi(args[++i]);
- else if (strcmp(args[i], "--ebofs_verify_csum_on_read") == 0 && isarg)
- g_conf.ebofs_verify_csum_on_read = atoi(args[++i]);
- else if (strcmp(args[i], "--ebofs_max_prefetch") == 0 && isarg)
- g_conf.ebofs_max_prefetch = atoi(args[++i]);
- else if (strcmp(args[i], "--ebofs_realloc") == 0 && isarg)
- g_conf.ebofs_realloc = atoi(args[++i]);
-
- else if (strcmp(args[i], "--journal_dio") == 0 && isarg)
- g_conf.journal_dio = atoi(args[++i]);
- else if (strcmp(args[i], "--journal_max_write_entries") == 0 && isarg)
- g_conf.journal_max_write_entries = atoi(args[++i]);
- else if (strcmp(args[i], "--journal_max_write_bytes") == 0 && isarg)
- g_conf.journal_max_write_bytes = atoi(args[++i]);
-
- else if (strcmp(args[i], "--filestore") == 0)
- g_conf.filestore = true;
- else if (strcmp(args[i], "--filestore_sync_interval") == 0 && isarg)
- g_conf.filestore_sync_interval = atoi(args[++i]);
- else if (strcmp(args[i], "--filestore_dev") == 0 && isarg)
- g_conf.filestore_dev = args[++i];
- else if (strcmp(args[i], "--filestore_fake_attrs") == 0)
- g_conf.filestore_fake_attrs = true;//atoi(args[++i]);
- else if (strcmp(args[i], "--filestore_fake_collections") == 0)
- g_conf.filestore_fake_collections = true;//atoi(args[++i]);
- else if (strcmp(args[i], "--filestore_btrfs_trans") == 0 && isarg)
- g_conf.filestore_btrfs_trans = atoi(args[++i]);
-
- else if (strcmp(args[i], "--osd_balance_reads") == 0 && isarg)
- g_conf.osd_balance_reads = atoi(args[++i]);
- else if (strcmp(args[i], "--osd_flash_crowd_iat_threshold") == 0 && isarg)
- g_conf.osd_flash_crowd_iat_threshold = atoi(args[++i]);
- else if (strcmp(args[i], "--osd_flash_crowd_iat_alpha") == 0 && isarg)
- g_conf.osd_flash_crowd_iat_alpha = atoi(args[++i]);
-
- else if (strcmp(args[i], "--osd_shed_reads") == 0 && isarg)
- g_conf.osd_shed_reads = atoi(args[++i]);
- else if (strcmp(args[i], "--osd_shed_reads_min_latency") == 0 && isarg)
- g_conf.osd_shed_reads_min_latency = atof(args[++i]);
- else if (strcmp(args[i], "--osd_shed_reads_min_latency_diff") == 0 && isarg)
- g_conf.osd_shed_reads_min_latency_diff = atof(args[++i]);
- else if (strcmp(args[i], "--osd_shed_reads_min_latency_ratio") == 0 && isarg)
- g_conf.osd_shed_reads_min_latency_ratio = atof(args[++i]);
-
- else if ( strcmp(args[i],"--osd_immediate_read_from_cache" ) == 0 && isarg)
- g_conf.osd_immediate_read_from_cache = atoi(args[++i]);
- else if ( strcmp(args[i],"--osd_exclusive_caching" ) == 0 && isarg)
- g_conf.osd_exclusive_caching = atoi(args[++i]);
-
- else if ( strcmp(args[i],"--osd_stat_refresh_interval" ) == 0 && isarg)
- g_conf.osd_stat_refresh_interval = atof(args[++i]);
-
- else if (strcmp(args[i], "--osd_heartbeat_interval") == 0 && isarg)
- g_conf.osd_heartbeat_interval = atoi(args[++i]);
- else if (strcmp(args[i], "--osd_heartbeat_grace") == 0 && isarg)
- g_conf.osd_heartbeat_grace = atoi(args[++i]);
-
- else if (strcmp(args[i], "--osd_age") == 0 && isarg)
- g_conf.osd_age = atof(args[++i]);
- else if (strcmp(args[i], "--osd_age_time") == 0 && isarg)
- g_conf.osd_age_time = atoi(args[++i]);
- else if (strcmp(args[i], "--osd_pg_bits") == 0 && isarg)
- g_conf.osd_pg_bits = atoi(args[++i]);
- else if (strcmp(args[i], "--osd_max_rep") == 0 && isarg)
- g_conf.osd_max_rep = atoi(args[++i]);
- else if (strcmp(args[i], "--osd_maxthreads") == 0 && isarg)
- g_conf.osd_maxthreads = atoi(args[++i]);
- else if (strcmp(args[i], "--osd_max_pull") == 0 && isarg)
- g_conf.osd_max_pull = atoi(args[++i]);
- else if (strcmp(args[i], "--osd_preserve_trimmed_log") == 0 && isarg)
- g_conf.osd_preserve_trimmed_log = atoi(args[++i]);
-
- else if (strcmp(args[i], "--osd_recovery_delay_start") == 0 && isarg)
- g_conf.osd_recovery_delay_start = atof(args[++i]);
- else if (strcmp(args[i], "--osd_recovery_max_active") == 0 && isarg)
- g_conf.osd_recovery_max_active = atoi(args[++i]);
-
- else if (strcmp(args[i], "--osd_auto_weight") == 0 && isarg)
- g_conf.osd_auto_weight = atoi(args[++i]);
-
- else if (strcmp(args[i], "--bdev_lock") == 0 && isarg)
- g_conf.bdev_lock = atoi(args[++i]);
- else if (strcmp(args[i], "--bdev_el_bidir") == 0 && isarg)
- g_conf.bdev_el_bidir = atoi(args[++i]);
- else if (strcmp(args[i], "--bdev_iothreads") == 0 && isarg)
- g_conf.bdev_iothreads = atoi(args[++i]);
- else if (strcmp(args[i], "--bdev_idle_kick_after_ms") == 0 && isarg)
- g_conf.bdev_idle_kick_after_ms = atoi(args[++i]);
- else if (strcmp(args[i], "--bdev_fake_mb") == 0 && isarg)
- g_conf.bdev_fake_mb = atoi(args[++i]);
- else if (strcmp(args[i], "--bdev_fake_max_mb") == 0 && isarg)
- g_conf.bdev_fake_max_mb = atoi(args[++i]);
-
- else if (strcmp(args[i], "--osd_object_layout") == 0 && isarg) {
- i++;
- if (strcmp(args[i], "linear") == 0) g_conf.osd_object_layout = CEPH_OBJECT_LAYOUT_LINEAR;
- else if (strcmp(args[i], "hashino") == 0) g_conf.osd_object_layout = CEPH_OBJECT_LAYOUT_HASHINO;
- else if (strcmp(args[i], "hash") == 0) g_conf.osd_object_layout = CEPH_OBJECT_LAYOUT_HASH;
- else {
- assert_warn(0);
- exit(1);
- }
- }
-
- else if (strcmp(args[i], "--osd_pg_layout") == 0 && isarg) {
- i++;
- if (strcmp(args[i], "linear") == 0) g_conf.osd_pg_layout = CEPH_PG_LAYOUT_LINEAR;
- else if (strcmp(args[i], "hash") == 0) g_conf.osd_pg_layout = CEPH_PG_LAYOUT_HASH;
- else if (strcmp(args[i], "hybrid") == 0) g_conf.osd_pg_layout = CEPH_PG_LAYOUT_HYBRID;
- else if (strcmp(args[i], "crush") == 0) g_conf.osd_pg_layout = CEPH_PG_LAYOUT_CRUSH;
- else {
- assert_warn(0);
- exit(1);
- }
- }
-
- else if (strcmp(args[i], "--kill_after") == 0 && isarg)
- g_conf.kill_after = atoi(args[++i]);
-
- else if (strcmp(args[i], "--file_layout_unit") == 0 && isarg)
- g_default_file_layout.fl_stripe_unit = atoi(args[++i]);
- else if (strcmp(args[i], "--file_layout_count") == 0 && isarg)
- g_default_file_layout.fl_stripe_count = atoi(args[++i]);
- else if (strcmp(args[i], "--file_layout_osize") == 0 && isarg)
- g_default_file_layout.fl_object_size = atoi(args[++i]);
- else if (strcmp(args[i], "--file_layout_pg_type") == 0 && isarg)
- g_default_file_layout.fl_pg_type = atoi(args[++i]);
- else if (strcmp(args[i], "--file_layout_pg_size") == 0 && isarg)
- g_default_file_layout.fl_pg_size = atoi(args[++i]);
-
- else if (strcmp(args[i], "--meta_dir_layout_unit") == 0 && isarg)
- g_default_mds_dir_layout.fl_stripe_unit = atoi(args[++i]);
- else if (strcmp(args[i], "--meta_dir_layout_scount") == 0 && isarg)
- g_default_mds_dir_layout.fl_stripe_count = atoi(args[++i]);
- else if (strcmp(args[i], "--meta_dir_layout_osize") == 0 && isarg)
- g_default_mds_dir_layout.fl_object_size = atoi(args[++i]);
- else if (strcmp(args[i], "--meta_dir_layout_pg_type") == 0 && isarg)
- g_default_mds_dir_layout.fl_pg_type = atoi(args[++i]);
- else if (strcmp(args[i], "--meta_dir_layout_pg_size") == 0 && isarg)
- g_default_mds_dir_layout.fl_pg_size = atoi(args[++i]);
-
- else if (strcmp(args[i], "--meta_log_layout_unit") == 0 && isarg)
- g_default_mds_log_layout.fl_stripe_unit = atoi(args[++i]);
- else if (strcmp(args[i], "--meta_log_layout_scount") == 0 && isarg)
- g_default_mds_log_layout.fl_stripe_count = atoi(args[++i]);
- else if (strcmp(args[i], "--meta_log_layout_osize") == 0 && isarg)
- g_default_mds_log_layout.fl_object_size = atoi(args[++i]);
- else if (strcmp(args[i], "--meta_log_layout_pg_type") == 0 && isarg)
- g_default_mds_log_layout.fl_pg_type = atoi(args[++i]);
- else if (strcmp(args[i], "--meta_log_layout_pg_size") == 0 && isarg) {
- g_default_mds_log_layout.fl_pg_size = atoi(args[++i]);
- if (!g_default_mds_log_layout.fl_pg_size)
- g_conf.mds_log = false;
- }
-
-#ifdef USE_OSBDB
- else if (strcmp(args[i], "--bdbstore") == 0) {
- g_conf.bdbstore = true;
- g_conf.ebofs = 0;
- }
- else if (strcmp(args[i], "--bdbstore-btree") == 0) {
- g_conf.bdbstore_btree = true;
- }
- else if (strcmp(args[i], "--bdbstore-hash-ffactor") == 0 && isarg) {
- g_conf.bdbstore_ffactor = atoi(args[++i]);
- }
- else if (strcmp(args[i], "--bdbstore-hash-nelem") == 0 && isarg) {
- g_conf.bdbstore_nelem = atoi(args[++i]);
- }
- else if (strcmp(args[i], "--bdbstore-hash-pagesize") == 0 && isarg) {
- g_conf.bdbstore_pagesize = atoi(args[++i]);
- }
- else if (strcmp(args[i], "--bdbstore-cachesize") == 0 && isarg) {
- g_conf.bdbstore_cachesize = atoi(args[++i]);
- }
- else if (strcmp(args[i], "--bdbstore-transactional") == 0) {
- g_conf.bdbstore_transactional = true;
- }
- else if (strcmp(args[i], "--debug-bdbstore") == 0 && isarg) {
- g_conf.debug_bdbstore = atoi(args[++i]);
- }
-#endif // USE_OSBDB
-
- else {
- nargs.push_back(args[i]);
- }
- }
-
- // open log file?
- if (open)
- _dout_open_log();
-
- signal(SIGHUP, sighup_handler);
-
- args = nargs;
-}
-#endif
-
#define STRINGIFY(x) #x
typedef enum {