45
45
derr << "usage: cosd -i osdid [--osd-data=path] [--osd-journal=path] "
46
<< "[--mkfs] [--mkjournal]" << dendl;
46
<< "[--mkfs] [--mkjournal] [--convert-filestore]" << dendl;
47
47
derr << " --debug_osd N set debug level (e.g. 10)" << dendl;
48
48
generic_server_usage();
51
51
int main(int argc, const char **argv)
53
DEFINE_CONF_VARS(usage);
54
53
vector<const char*> args;
55
54
argv_to_vec(argc, argv, args);
64
63
bool mkjournal = false;
65
64
bool mkkey = false;
66
65
bool flushjournal = false;
67
char *dump_pg_log = 0;
69
if (CEPH_ARGPARSE_EQ("mkfs", '\0')) {
66
bool convertfilestore = false;
67
std::string dump_pg_log;
70
for (std::vector<const char*>::iterator i = args.begin(); i != args.end(); ) {
71
if (ceph_argparse_double_dash(args, i)) {
73
} else if (ceph_argparse_flag(args, i, "-h", "--help", (char*)NULL)) {
76
} else if (ceph_argparse_flag(args, i, "--mkfs", (char*)NULL)) {
71
} else if (CEPH_ARGPARSE_EQ("mkjournal", '\0')) {
78
} else if (ceph_argparse_flag(args, i, "--mkjournal", (char*)NULL)) {
73
} else if (CEPH_ARGPARSE_EQ("mkkey", '\0')) {
80
} else if (ceph_argparse_flag(args, i, "--mkkey", (char*)NULL)) {
75
} else if (CEPH_ARGPARSE_EQ("flush-journal", '\0')) {
82
} else if (ceph_argparse_flag(args, i, "--flush-journal", (char*)NULL)) {
76
83
flushjournal = true;
77
} else if (CEPH_ARGPARSE_EQ("dump-pg-log", '\0')) {
78
CEPH_ARGPARSE_SET_ARG_VAL(&dump_pg_log, OPT_STR);
84
} else if (ceph_argparse_flag(args, i, "--convert-filestore", (char*)NULL)) {
85
convertfilestore = true;
86
} else if (ceph_argparse_witharg(args, i, &val, "--dump-pg-log", (char*)NULL)) {
80
derr << "unrecognized arg " << args[i] << dendl;
93
derr << "unrecognized arg " << args[0] << dendl;
97
if (!dump_pg_log.empty()) {
86
98
common_init_finish(g_ceph_context);
88
100
std::string error;
89
int r = bl.read_file(dump_pg_log, &error);
101
int r = bl.read_file(dump_pg_log.c_str(), &error);
92
104
bufferlist::iterator p = bl.begin();
259
281
client_messenger->set_policy_throttler(entity_name_t::TYPE_CLIENT, &client_throttler);
260
282
client_messenger->set_policy(entity_name_t::TYPE_MON,
261
283
SimpleMessenger::Policy::client(supported,
285
CEPH_FEATURE_PGID64));
263
286
//try to poison pill any OSD connections on the wrong address
264
287
client_messenger->set_policy(entity_name_t::TYPE_OSD,
265
288
SimpleMessenger::Policy::stateless_server(0,0));
267
290
cluster_messenger->set_default_policy(SimpleMessenger::Policy::stateless_server(0, 0));
268
291
cluster_messenger->set_policy(entity_name_t::TYPE_MON, SimpleMessenger::Policy::client(0,0));
269
292
cluster_messenger->set_policy(entity_name_t::TYPE_OSD,
270
SimpleMessenger::Policy::lossless_peer(supported, CEPH_FEATURE_UID));
293
SimpleMessenger::Policy::lossless_peer(supported,
295
CEPH_FEATURE_PGID64));
271
296
cluster_messenger->set_policy(entity_name_t::TYPE_CLIENT,
272
297
SimpleMessenger::Policy::stateless_server(0, 0));
275
300
// Leave stderr open in case we need to report errors.
276
301
global_init_daemonize(g_ceph_context, CINIT_FLAG_NO_CLOSE_STDERR);
277
302
common_init_finish(g_ceph_context);
304
int err = OSD::convertfs(g_conf->osd_data, g_conf->osd_journal);
306
derr << TEXT_RED << " ** ERROR: error converting store " << g_conf->osd_data
307
<< ": " << cpp_strerror(-err) << TEXT_NORMAL << dendl;
278
311
MonClient mc(g_ceph_context);
279
312
if (mc.build_initial_monmap() < 0)
284
317
messenger_hbin, messenger_hbout,
286
319
g_conf->osd_data, g_conf->osd_journal);
287
int err = osd->pre_init();
320
err = osd->pre_init();
289
322
derr << TEXT_RED << " ** ERROR: initializing osd failed: " << cpp_strerror(-err)
290
323
<< TEXT_NORMAL << dendl;