From 67bc3e0a03b8d8fae5875a7603ad06fb58d94a71 Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Sat, 29 Jun 2019 22:37:02 +0800 Subject: [PATCH] crimson/osd: add "--help-seastar" command line option so we can * have access to the available command line options offered by Seastar. * tell if the executable we are playing around is ceph-osd or crimson-osd. Signed-off-by: Kefu Chai --- src/crimson/osd/main.cc | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/src/crimson/osd/main.cc b/src/crimson/osd/main.cc index 1bdb734f9d44b..3c0a6fb012687 100644 --- a/src/crimson/osd/main.cc +++ b/src/crimson/osd/main.cc @@ -24,7 +24,8 @@ using config_t = ceph::common::ConfigProxy; namespace fs = seastar::compat::filesystem; void usage(const char* prog) { - std::cout << "usage: " << prog << " -i " << std::endl; + std::cout << "usage: " << prog << " -i \n" + << " --help-seastar show Seastar help messages\n"; generic_server_usage(); } @@ -51,18 +52,22 @@ auto partition_args(seastar::app_template& app, char** argv_begin, char** argv_e return argv; }; auto unknown = unknown_args.begin(); - auto consume_ceph_arg = [&](char** argv) { - while (unknown != unknown_args.end() && argv != argv_end && - *unknown == *argv) { - ++unknown; - ceph_args.push_back(*argv++); + auto consume_unknown_arg = [&](char** argv) { + for (; unknown != unknown_args.end() && + argv != argv_end && + *unknown == *argv; ++argv, ++unknown) { + if (std::strcmp(*argv, "--help-seastar") == 0) { + app_args.push_back("--help"); + } else { + ceph_args.push_back(*argv); + } } return argv; }; for (auto argv = argv_begin; argv != argv_end;) { if (auto next_arg = consume_conf_arg(argv); next_arg != argv) { argv = next_arg; - } else if (auto next_arg = consume_ceph_arg(argv); next_arg != argv) { + } else if (auto next_arg = consume_unknown_arg(argv); next_arg != argv) { argv = next_arg; } else { app_args.push_back(*argv++); @@ -110,7 +115,8 @@ int main(int argc, char* argv[]) ("debug", "enable debug output on all loggers"); auto [ceph_args, app_args] = partition_args(app, argv, argv + argc); - if (ceph_argparse_need_usage(ceph_args)) { + if (ceph_argparse_need_usage(ceph_args) && + std::find(app_args.begin(), app_args.end(), "--help") == app_args.end()) { usage(argv[0]); return EXIT_SUCCESS; } -- 2.39.5