From: Yan, Zheng Date: Tue, 10 Apr 2018 08:02:18 +0000 (+0800) Subject: tools/cephfs: instantiate MDSUtility after global_init() X-Git-Tag: v13.1.0~335^2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=a7db43b5f7d787562c94db00a2bb31b59af9fc7a;p=ceph.git tools/cephfs: instantiate MDSUtility after global_init() cephfs-foo-tool from current master crashes immediately it starts. Introduced by commit 6972273d53d "global: output usage on -h, --help, or no args before contacting mons" Signed-off-by: "Yan, Zheng" Fixes: http://tracker.ceph.com/issues/23624 --- diff --git a/src/tools/cephfs/DataScan.h b/src/tools/cephfs/DataScan.h index 839da1610fe1a..e44d9a50795b4 100644 --- a/src/tools/cephfs/DataScan.h +++ b/src/tools/cephfs/DataScan.h @@ -316,7 +316,7 @@ class DataScan : public MDSUtility, public MetadataTool std::function handler); public: - void usage(); + static void usage(); int main(const std::vector &args); DataScan() diff --git a/src/tools/cephfs/JournalTool.h b/src/tools/cephfs/JournalTool.h index c31203f7369e4..3d1188222cb77 100644 --- a/src/tools/cephfs/JournalTool.h +++ b/src/tools/cephfs/JournalTool.h @@ -83,7 +83,7 @@ class JournalTool : public MDSUtility //validate type int validate_type(const std::string &type); public: - void usage(); + static void usage(); JournalTool() : rank(0), other_pool(false) {} int main(std::vector &argv); diff --git a/src/tools/cephfs/TableTool.h b/src/tools/cephfs/TableTool.h index bcd3167b29e4f..bf9b95c12938c 100644 --- a/src/tools/cephfs/TableTool.h +++ b/src/tools/cephfs/TableTool.h @@ -33,7 +33,7 @@ class TableTool : public MDSUtility int apply_role_fn(std::function fptr, Formatter *f); public: - void usage(); + static void usage(); int main(std::vector &argv); }; diff --git a/src/tools/cephfs/cephfs-data-scan.cc b/src/tools/cephfs/cephfs-data-scan.cc index 9de8384ab6a31..e6efff66c370b 100644 --- a/src/tools/cephfs/cephfs-data-scan.cc +++ b/src/tools/cephfs/cephfs-data-scan.cc @@ -13,13 +13,12 @@ int main(int argc, const char **argv) vector args; argv_to_vec(argc, argv, args); - DataScan data_scan; if (args.empty()) { cerr << argv[0] << ": -h or --help for usage" << std::endl; exit(1); } if (ceph_argparse_need_usage(args)) { - data_scan.usage(); + DataScan::usage(); exit(0); } @@ -27,6 +26,8 @@ int main(int argc, const char **argv) CODE_ENVIRONMENT_UTILITY, 0); common_init_finish(g_ceph_context); + DataScan data_scan; + // Connect to mon cluster, download MDS map etc int rc = data_scan.init(); if (rc != 0) { diff --git a/src/tools/cephfs/cephfs-journal-tool.cc b/src/tools/cephfs/cephfs-journal-tool.cc index b8b22f664824f..290cb305ba527 100644 --- a/src/tools/cephfs/cephfs-journal-tool.cc +++ b/src/tools/cephfs/cephfs-journal-tool.cc @@ -25,13 +25,12 @@ int main(int argc, const char **argv) { vector args; argv_to_vec(argc, argv, args); - JournalTool jt; if (args.empty()) { cerr << argv[0] << ": -h or --help for usage" << std::endl; exit(1); } if (ceph_argparse_need_usage(args)) { - jt.usage(); + JournalTool::usage(); exit(0); } @@ -39,6 +38,7 @@ int main(int argc, const char **argv) CODE_ENVIRONMENT_UTILITY, 0); common_init_finish(g_ceph_context); + JournalTool jt; // Connect to mon cluster, download MDS map etc int rc = jt.init(); diff --git a/src/tools/cephfs/cephfs-table-tool.cc b/src/tools/cephfs/cephfs-table-tool.cc index d2b5c5253c536..47b475dd0f89b 100644 --- a/src/tools/cephfs/cephfs-table-tool.cc +++ b/src/tools/cephfs/cephfs-table-tool.cc @@ -13,13 +13,12 @@ int main(int argc, const char **argv) vector args; argv_to_vec(argc, argv, args); - TableTool tt; if (args.empty()) { cerr << argv[0] << ": -h or --help for usage" << std::endl; exit(1); } if (ceph_argparse_need_usage(args)) { - tt.usage(); + TableTool::usage(); exit(0); } @@ -27,6 +26,7 @@ int main(int argc, const char **argv) CODE_ENVIRONMENT_UTILITY, 0); common_init_finish(g_ceph_context); + TableTool tt; // Connect to mon cluster, download MDS map etc int rc = tt.init();