From: Colin Patrick McCabe Date: Mon, 23 May 2011 23:29:49 +0000 (-0700) Subject: Split common_init_daemonize from common_init_finish X-Git-Tag: v0.29~42^2~6 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=1c7b98212d6c0b498f9410ba7ed8daadb4c577ae;p=ceph.git Split common_init_daemonize from common_init_finish Split off common_init_daemonize from common_init_finish. cfuse is a daemon that calls common_init_finish, but handles daemonization itself. This fixes cfuse. Signed-off-by: Colin McCabe --- diff --git a/src/cauthtool.cc b/src/cauthtool.cc index cefe95d5b49..33718a280ea 100644 --- a/src/cauthtool.cc +++ b/src/cauthtool.cc @@ -55,7 +55,7 @@ int main(int argc, const char **argv) common_init(args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, CINIT_FLAG_NO_DEFAULT_CONFIG_FILE); - common_init_finish(&g_conf, 0); + common_init_finish(&g_conf); EntityName ename(g_conf.name); const char *me = argv[0]; diff --git a/src/cconf.cc b/src/cconf.cc index 2c9325ef2ea..424ea146028 100644 --- a/src/cconf.cc +++ b/src/cconf.cc @@ -122,7 +122,7 @@ int main(int argc, const char **argv) argv_to_vec(argc, argv, args); env_to_vec(args); common_init(args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); - common_init_finish(&g_conf, 0); + common_init_finish(&g_conf); std::string val; for (std::vector::iterator i = args.begin(); i != args.end(); ) { diff --git a/src/cfuse.cc b/src/cfuse.cc index 0a8adb9208a..30e7c3b19eb 100644 --- a/src/cfuse.cc +++ b/src/cfuse.cc @@ -111,7 +111,7 @@ int main(int argc, const char **argv, const char *envp[]) { childpid = fork(); } - common_init_finish(&g_conf, 0); + common_init_finish(&g_conf); if (childpid == 0) { //cout << "child, mounting" << std::endl; diff --git a/src/cmds.cc b/src/cmds.cc index 0b807ad076d..e683753d9fd 100644 --- a/src/cmds.cc +++ b/src/cmds.cc @@ -164,7 +164,8 @@ int main(int argc, const char **argv) if (shadow == MDSMap::STATE_ONESHOT_REPLAY) g_conf.daemonize = false; - common_init_finish(&g_conf, 0); + common_init_daemonize(&g_conf, 0); + common_init_finish(&g_conf); messenger->start(); // start mds diff --git a/src/cmon.cc b/src/cmon.cc index 9d1a59b145d..74608c43326 100644 --- a/src/cmon.cc +++ b/src/cmon.cc @@ -83,7 +83,7 @@ int main(int argc, const char **argv) // -- mkfs -- if (mkfs) { g_conf.daemonize = false; - common_init_finish(&g_conf, 0); + common_init_finish(&g_conf); if (g_conf.monmap.empty() || !osdmapfn) usage(); @@ -260,7 +260,8 @@ int main(int argc, const char **argv) messenger->set_default_send_priority(CEPH_MSG_PRIO_HIGH); Monitor *mon = new Monitor(g_conf.name.get_id(), &store, messenger, &monmap); - common_init_finish(&g_conf, 0); + common_init_daemonize(&g_conf, 0); + common_init_finish(&g_conf); messenger->start(); uint64_t supported = diff --git a/src/common/common_init.cc b/src/common/common_init.cc index debcf93460a..52b2efeb718 100644 --- a/src/common/common_init.cc +++ b/src/common/common_init.cc @@ -215,8 +215,12 @@ int common_init_shutdown_stderr(const md_config_t *conf) return 0; } -static void common_init_daemonize(const md_config_t *conf, int flags) +void common_init_daemonize(const md_config_t *conf, int flags) { + if (g_code_env != CODE_ENVIRONMENT_DAEMON) + return; + if (!conf->daemonize) + return; int num_threads = Thread::get_num_threads(); if (num_threads > 1) { derr << "common_init_daemonize: BUG: there are " << num_threads - 1 @@ -285,12 +289,8 @@ static void common_init_daemonize(const md_config_t *conf, int flags) dout(1) << "finished common_init_daemonize" << dendl; } -void common_init_finish(const md_config_t *conf, int flags) +void common_init_finish(const md_config_t *conf) { - if ((g_code_env == CODE_ENVIRONMENT_DAEMON) && (g_conf.daemonize)) { - common_init_daemonize(conf, flags); - } ceph::crypto::init(); keyring_init(&g_conf); } - diff --git a/src/common/common_init.h b/src/common/common_init.h index d16233057ae..07e24e96dbb 100644 --- a/src/common/common_init.h +++ b/src/common/common_init.h @@ -30,6 +30,7 @@ void common_init(std::vector < const char* >& args, uint32_t module_type, code_environment_t code_env, int flags); void output_ceph_version(); int common_init_shutdown_stderr(const md_config_t *conf); -void common_init_finish(const md_config_t *conf, int flags); +void common_init_daemonize(const md_config_t *conf, int flags); +void common_init_finish(const md_config_t *conf); #endif diff --git a/src/cosd.cc b/src/cosd.cc index 8a6da9ad730..3183d6f72d7 100644 --- a/src/cosd.cc +++ b/src/cosd.cc @@ -84,8 +84,7 @@ int main(int argc, const char **argv) } if (dump_pg_log) { - g_conf.daemonize = false; - common_init_finish(&g_conf, 0); + common_init_finish(&g_conf); bufferlist bl; int r = bl.read_file(dump_pg_log); if (r >= 0) { @@ -123,8 +122,7 @@ int main(int argc, const char **argv) } if (mkfs) { - g_conf.daemonize = false; - common_init_finish(&g_conf, 0); + common_init_finish(&g_conf); RotatingKeyRing rkeys(CEPH_ENTITY_TYPE_OSD, &g_keyring); MonClient mc(&rkeys); if (mc.build_initial_monmap() < 0) @@ -144,8 +142,7 @@ int main(int argc, const char **argv) *_dout << " for osd" << whoami << " fsid " << mc.monmap.fsid << dendl; } if (mkkey) { - g_conf.daemonize = false; - common_init_finish(&g_conf, 0); + common_init_finish(&g_conf); EntityName ename(g_conf.name); EntityAuth eauth; eauth.key.create(CEPH_CRYPTO_AES); @@ -162,8 +159,7 @@ int main(int argc, const char **argv) if (mkfs || mkkey) exit(0); if (mkjournal) { - g_conf.daemonize = false; - common_init_finish(&g_conf, 0); + common_init_finish(&g_conf); int err = OSD::mkjournal(g_conf.osd_data, g_conf.osd_journal); if (err < 0) { derr << TEXT_RED << " ** ERROR: error creating fresh journal " << g_conf.osd_journal @@ -176,8 +172,7 @@ int main(int argc, const char **argv) exit(0); } if (flushjournal) { - g_conf.daemonize = false; - common_init_finish(&g_conf, 0); + common_init_finish(&g_conf); int err = OSD::flushjournal(g_conf.osd_data, g_conf.osd_journal); if (err < 0) { derr << TEXT_RED << " ** ERROR: error flushing journal " << g_conf.osd_journal @@ -277,7 +272,8 @@ int main(int argc, const char **argv) // Set up crypto, daemonize, etc. // Leave stderr open in case we need to report errors. - common_init_finish(&g_conf, CINIT_FLAG_NO_CLOSE_STDERR); + common_init_daemonize(&g_conf, CINIT_FLAG_NO_CLOSE_STDERR); + common_init_finish(&g_conf); RotatingKeyRing rkeys(CEPH_ENTITY_TYPE_OSD, &g_keyring); MonClient mc(&rkeys); if (mc.build_initial_monmap() < 0) diff --git a/src/csyn.cc b/src/csyn.cc index 782c0a79b73..8940b46d88a 100644 --- a/src/csyn.cc +++ b/src/csyn.cc @@ -47,7 +47,7 @@ int main(int argc, const char **argv, char *envp[]) argv_to_vec(argc, argv, args); common_init(args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); - common_init_finish(&g_conf, 0); + common_init_finish(&g_conf); parse_syn_options(args); // for SyntheticClient diff --git a/src/dumpjournal.cc b/src/dumpjournal.cc index 6496a3da30d..b01389615cd 100644 --- a/src/dumpjournal.cc +++ b/src/dumpjournal.cc @@ -82,7 +82,7 @@ int main(int argc, const char **argv, const char *envp[]) env_to_vec(args); common_init(args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); - common_init_finish(&g_conf, 0); + common_init_finish(&g_conf); vec_to_argv(args, argc, argv); diff --git a/src/dupstore.cc b/src/dupstore.cc index 654e3bbb382..72efc895bd4 100644 --- a/src/dupstore.cc +++ b/src/dupstore.cc @@ -88,7 +88,7 @@ int main(int argc, const char **argv) env_to_vec(args); common_init(args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); - common_init_finish(&g_conf, 0); + common_init_finish(&g_conf); // args if (args.size() != 4) diff --git a/src/librados-config.cc b/src/librados-config.cc index 8b9aa7615ff..0c38ac2c962 100644 --- a/src/librados-config.cc +++ b/src/librados-config.cc @@ -58,7 +58,7 @@ int main(int argc, const char **argv) } common_init(args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); - common_init_finish(&g_conf, 0); + common_init_finish(&g_conf); FOR_EACH_ARG(args) { usage_exit(); diff --git a/src/monmaptool.cc b/src/monmaptool.cc index 00854e38afa..3204dd4711e 100644 --- a/src/monmaptool.cc +++ b/src/monmaptool.cc @@ -51,7 +51,7 @@ int main(int argc, const char **argv) common_init(args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, CINIT_FLAG_NO_DEFAULT_CONFIG_FILE); - common_init_finish(&g_conf, 0); + common_init_finish(&g_conf); FOR_EACH_ARG(args) { if (CEPH_ARGPARSE_EQ("print", '\0')) { CEPH_ARGPARSE_SET_ARG_VAL(&print, OPT_BOOL); diff --git a/src/osdmaptool.cc b/src/osdmaptool.cc index a0d0b42a760..211fde39684 100644 --- a/src/osdmaptool.cc +++ b/src/osdmaptool.cc @@ -51,7 +51,7 @@ int main(int argc, const char **argv) common_init(args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, CINIT_FLAG_NO_DEFAULT_CONFIG_FILE); - common_init_finish(&g_conf, 0); + common_init_finish(&g_conf); const char *me = argv[0]; diff --git a/src/rados.cc b/src/rados.cc index a9591a3160f..1915173edcb 100644 --- a/src/rados.cc +++ b/src/rados.cc @@ -659,7 +659,7 @@ int main(int argc, const char **argv) env_to_vec(args); common_init(args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); - common_init_finish(&g_conf, 0); + common_init_finish(&g_conf); std::map < std::string, std::string > opts; std::vector::iterator i; diff --git a/src/rbd.cc b/src/rbd.cc index 855dd023c76..1c05527cbf5 100644 --- a/src/rbd.cc +++ b/src/rbd.cc @@ -825,7 +825,7 @@ int main(int argc, const char **argv) int opt_cmd = OPT_NO_CMD; common_init(args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); - common_init_finish(&g_conf, 0); + common_init_finish(&g_conf); const char *poolname = NULL; uint64_t size = 0; diff --git a/src/rgw/rgw_admin.cc b/src/rgw/rgw_admin.cc index 1944c2f83af..655a4162108 100644 --- a/src/rgw/rgw_admin.cc +++ b/src/rgw/rgw_admin.cc @@ -176,7 +176,7 @@ int main(int argc, char **argv) env_to_vec(args); common_init(args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); - common_init_finish(&g_conf, 0); + common_init_finish(&g_conf); const char *user_id = 0; const char *access_key = 0; diff --git a/src/rgw/rgw_main.cc b/src/rgw/rgw_main.cc index e3948e58dde..1246df892c9 100644 --- a/src/rgw/rgw_main.cc +++ b/src/rgw/rgw_main.cc @@ -75,7 +75,7 @@ int main(int argc, const char **argv) argv_to_vec(argc, argv, args); env_to_vec(args); common_init(args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); - common_init_finish(&g_conf, 0); + common_init_finish(&g_conf); if (!RGWAccess::init_storage_provider("rados", &g_conf)) { derr << "Couldn't init storage provider (RADOS)" << dendl; diff --git a/src/streamtest.cc b/src/streamtest.cc index 08c8ab957ae..99371b3015f 100644 --- a/src/streamtest.cc +++ b/src/streamtest.cc @@ -97,7 +97,7 @@ int main(int argc, const char **argv) env_to_vec(args); common_init(args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); - common_init_finish(&g_conf, 0); + common_init_finish(&g_conf); // args if (args.size() < 3) return -1; diff --git a/src/test/TestDoutStreambuf.cc b/src/test/TestDoutStreambuf.cc index 01a8a6f18b8..184cc94eab3 100644 --- a/src/test/TestDoutStreambuf.cc +++ b/src/test/TestDoutStreambuf.cc @@ -38,7 +38,7 @@ int main(int argc, const char **argv) env_to_vec(args); common_init(args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); - common_init_finish(&g_conf, 0); + common_init_finish(&g_conf); DoutStreambuf *dos = new DoutStreambuf(); diff --git a/src/test/TestSignalHandlers.cc b/src/test/TestSignalHandlers.cc index c117b00a570..4e4ccce05dc 100644 --- a/src/test/TestSignalHandlers.cc +++ b/src/test/TestSignalHandlers.cc @@ -95,7 +95,7 @@ int main(int argc, const char **argv) env_to_vec(args); common_init(args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); - common_init_finish(&g_conf, 0); + common_init_finish(&g_conf); DEFINE_CONF_VARS(usage); FOR_EACH_ARG(args) { diff --git a/src/test/TestTimers.cc b/src/test/TestTimers.cc index 63006ff3f3c..e804a4a0225 100644 --- a/src/test/TestTimers.cc +++ b/src/test/TestTimers.cc @@ -256,7 +256,7 @@ int main(int argc, const char **argv) env_to_vec(args); common_init(args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); - common_init_finish(&g_conf, 0); + common_init_finish(&g_conf); int ret; Mutex safe_timer_lock("safe_timer_lock"); diff --git a/src/test/test_mutate.cc b/src/test/test_mutate.cc index aeec5416c86..26fb1e6b871 100644 --- a/src/test/test_mutate.cc +++ b/src/test/test_mutate.cc @@ -44,7 +44,7 @@ int main(int argc, const char **argv) argv_to_vec(argc, argv, args); env_to_vec(args); common_init(args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); - common_init_finish(&g_conf, 0); + common_init_finish(&g_conf); string val; string oid("test_object"); diff --git a/src/test_trans.cc b/src/test_trans.cc index 205d2d424be..601aedf2862 100644 --- a/src/test_trans.cc +++ b/src/test_trans.cc @@ -36,7 +36,7 @@ int main(int argc, const char **argv) env_to_vec(args); common_init(args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); - common_init_finish(&g_conf, 0); + common_init_finish(&g_conf); // args if (args.size() < 2) return -1; diff --git a/src/testmsgr.cc b/src/testmsgr.cc index 5e722a5b492..9906c5bed01 100644 --- a/src/testmsgr.cc +++ b/src/testmsgr.cc @@ -71,7 +71,7 @@ int main(int argc, const char **argv, const char *envp[]) { env_to_vec(args); common_init(args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); - common_init_finish(&g_conf, 0); + common_init_finish(&g_conf); vec_to_argv(args, argc, argv); diff --git a/src/tools/ceph.cc b/src/tools/ceph.cc index ed1758a10a9..947c8ce9531 100644 --- a/src/tools/ceph.cc +++ b/src/tools/ceph.cc @@ -116,7 +116,7 @@ int main(int argc, const char **argv) env_to_vec(args); common_init(args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); - common_init_finish(&g_conf, 0); + common_init_finish(&g_conf); vec_to_argv(args, argc, argv); diff --git a/src/tools/gceph.cc b/src/tools/gceph.cc index 5cc249cb703..c4df25a5d78 100644 --- a/src/tools/gceph.cc +++ b/src/tools/gceph.cc @@ -76,7 +76,7 @@ int main(int argc, const char **argv) env_to_vec(args); common_init(args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); - common_init_finish(&g_conf, 0); + common_init_finish(&g_conf); vec_to_argv(args, argc, argv);