<< " run any pending upgrade operations\n"
<< " --flush-journal flush all data out of journal\n"
<< " --mkjournal initialize a new journal\n"
+ << " --check-wants-journal\n"
+ << " check whether a journal is desired\n"
+ << " --check-allows-journal\n"
+ << " check whether a journal is allowed\n"
+ << " --check-needs-journal\n"
+ << " check whether a journal is required\n"
<< " --debug_osd N set debug level (e.g. 10)"
<< std::endl;
generic_server_usage();
// osd specific args
bool mkfs = false;
bool mkjournal = false;
+ bool check_wants_journal = false;
+ bool check_allows_journal = false;
+ bool check_needs_journal = false;
bool mkkey = false;
bool flushjournal = false;
bool dump_journal = false;
bool get_journal_fsid = false;
bool get_osd_fsid = false;
bool get_cluster_fsid = false;
- bool check_need_journal = false;
std::string dump_pg_log;
std::string val;
mkfs = true;
} else if (ceph_argparse_flag(args, i, "--mkjournal", (char*)NULL)) {
mkjournal = true;
+ } else if (ceph_argparse_flag(args, i, "--check-allows-journal", (char*)NULL)) {
+ check_allows_journal = true;
+ } else if (ceph_argparse_flag(args, i, "--check-wants-journal", (char*)NULL)) {
+ check_wants_journal = true;
+ } else if (ceph_argparse_flag(args, i, "--check-needs-journal", (char*)NULL)) {
+ check_needs_journal = true;
} else if (ceph_argparse_flag(args, i, "--mkkey", (char*)NULL)) {
mkkey = true;
} else if (ceph_argparse_flag(args, i, "--flush-journal", (char*)NULL)) {
get_osd_fsid = true;
} else if (ceph_argparse_flag(args, i, "--get-journal-fsid", "--get-journal-uuid", (char*)NULL)) {
get_journal_fsid = true;
- } else if (ceph_argparse_flag(args, i, "--check-needs-journal", (char*)NULL)) {
- check_need_journal = true;
} else {
++i;
}
<< " for object store " << g_conf->osd_data << dendl;
exit(0);
}
+ if (check_wants_journal) {
+ if (store->wants_journal()) {
+ cout << "yes" << std::endl;
+ exit(0);
+ } else {
+ cout << "no" << std::endl;
+ exit(1);
+ }
+ }
+ if (check_allows_journal) {
+ if (store->allows_journal()) {
+ cout << "yes" << std::endl;
+ exit(0);
+ } else {
+ cout << "no" << std::endl;
+ exit(1);
+ }
+ }
+ if (check_needs_journal) {
+ if (store->needs_journal()) {
+ cout << "yes" << std::endl;
+ exit(0);
+ } else {
+ cout << "no" << std::endl;
+ exit(1);
+ }
+ }
if (flushjournal) {
common_init_finish(g_ceph_context);
int err = store->mount();
exit(r);
}
- if (check_need_journal) {
- if (store->need_journal())
- cout << "yes" << std::endl;
- else
- cout << "no" << std::endl;
- exit(0);
- }
-
string magic;
uuid_d cluster_fsid, osd_fsid;
int w;
virtual unsigned get_max_attr_name_length() = 0;
virtual int mkfs() = 0; // wipe
virtual int mkjournal() = 0; // journal only
+ virtual bool needs_journal() = 0; //< requires a journal
+ virtual bool wants_journal() = 0; //< prefers a journal
+ virtual bool allows_journal() = 0; //< allows a journal
virtual void set_allow_sharded_objects() = 0;
virtual bool get_allow_sharded_objects() = 0;
virtual void collect_metadata(map<string,string> *pm) { }
- /**
- * check whether need journal device
- *
- * It's not constant for backend store. FileStore could have journaless mode
- * and KeyValueStore could have journal device for special backend.
- */
- virtual bool need_journal() = 0;
-
/**
* check the journal uuid/fsid, without opening
*/