<< " --convert-filestore\n"
<< " run any pending upgrade operations\n"
<< " --flush-journal flush all data out of journal\n"
+ << " --osdspec-affinity\n"
+ << " set affinity to an osdspec\n"
<< " --dump-journal dump all data of journal\n"
<< " --mkjournal initialize a new journal\n"
<< " --check-wants-journal\n"
bool get_device_fsid = false;
string device_path;
std::string dump_pg_log;
+ std::string osdspec_affinity;
std::string val;
for (std::vector<const char*>::iterator i = args.begin(); i != args.end(); ) {
break;
} else if (ceph_argparse_flag(args, i, "--mkfs", (char*)NULL)) {
mkfs = true;
+ } else if (ceph_argparse_witharg(args, i, &val, "--osdspec-affinity", (char*)NULL)) {
+ osdspec_affinity = val;
} else if (ceph_argparse_flag(args, i, "--mkjournal", (char*)NULL)) {
mkjournal = true;
} else if (ceph_argparse_flag(args, i, "--check-allows-journal", (char*)NULL)) {
derr << "created new key in keyring " << keyring_path << dendl;
}
}
+
if (mkfs) {
common_init_finish(g_ceph_context);
}
int err = OSD::mkfs(g_ceph_context, store, g_conf().get_val<uuid_d>("fsid"),
- whoami);
+ whoami, osdspec_affinity);
if (err < 0) {
derr << TEXT_RED << " ** ERROR: error creating empty object store in "
<< data_path << ": " << cpp_strerror(-err) << TEXT_NORMAL << dendl;
forker.exit(0);
}
-
if (convertfilestore) {
int err = store->mount();
if (err < 0) {
}} // namespace ceph::osd_cmds
-int OSD::mkfs(CephContext *cct, ObjectStore *store, uuid_d fsid, int whoami)
+int OSD::mkfs(CephContext *cct, ObjectStore *store, uuid_d fsid, int whoami, string osdspec_affinity)
{
int ret;
}
}
- ret = write_meta(cct, store, sb.cluster_fsid, sb.osd_fsid, whoami);
+ ret = write_meta(cct, store, sb.cluster_fsid, sb.osd_fsid, whoami, osdspec_affinity);
if (ret) {
derr << "OSD::mkfs: failed to write fsid file: error "
<< cpp_strerror(ret) << dendl;
return ret;
}
-int OSD::write_meta(CephContext *cct, ObjectStore *store, uuid_d& cluster_fsid, uuid_d& osd_fsid, int whoami)
+int OSD::write_meta(CephContext *cct, ObjectStore *store, uuid_d& cluster_fsid, uuid_d& osd_fsid, int whoami, string& osdspec_affinity)
{
char val[80];
int r;
return r;
}
}
+ if (!osdspec_affinity.empty()) {
+ r = store->write_meta("osdspec_affinity", osdspec_affinity.c_str());
+ if (r < 0)
+ return r;
+ }
r = store->write_meta("ready", "ready");
if (r < 0)
~OSD() override;
// static bits
- static int mkfs(CephContext *cct, ObjectStore *store, uuid_d fsid, int whoami);
+ static int mkfs(CephContext *cct, ObjectStore *store, uuid_d fsid, int whoami, std::string osdspec_affinity);
/* remove any non-user xattrs from a std::map of them */
void filter_xattrs(std::map<std::string, ceph::buffer::ptr>& attrs) {
static int write_meta(CephContext *cct,
ObjectStore *store,
- uuid_d& cluster_fsid, uuid_d& osd_fsid, int whoami);
+ uuid_d& cluster_fsid, uuid_d& osd_fsid, int whoami, std::string& osdspec_affinity);
void handle_scrub(class MOSDScrub *m);
void handle_fast_scrub(class MOSDScrub2 *m);