bool mkfs = false;
const char *osdmapfn = 0;
- const char *classfn = 0;
- const char *classinfo = 0;
vector<const char*> args;
argv_to_vec(argc, argv, args);
mkfs = true;
} else if (CONF_ARG_EQ("osdmap", '\0')) {
CONF_SAFE_SET_ARG_VAL(&osdmapfn, OPT_STR);
- } else if (CONF_ARG_EQ("class-info", '\0')) {
- CONF_SAFE_SET_ARG_VAL(&classinfo, OPT_STR);
- } else if (CONF_ARG_EQ("class-file", '\0')) {
- CONF_SAFE_SET_ARG_VAL(&classfn, OPT_STR);
} else
usage();
}
*/
// load monmap
- bufferlist monmapbl, osdmapbl, classbl;
+ bufferlist monmapbl, osdmapbl;
int err = monmapbl.read_file(g_conf.monmap);
if (err < 0)
exit(1);
if (err < 0)
exit(1);
- // class?
- if ((classfn != NULL) ^ (classinfo != NULL)) {
- cerr << "bad class arguments" << std::endl;
- exit(1);
- }
-
- if (classfn && classinfo) {
- bufferlist classbin;
- string str;
- int err = classbin.read_file(classfn);
- if (err < 0) {
- cerr << "error reading " << classfn << std::endl;
- exit(1);
- }
- str = classinfo;
- ::encode(str, classbl);
- ::encode(classbin, classbl);
- }
-
// go
MonitorStore store(g_conf.mon_data);
Monitor mon(whoami, &store, 0, &monmap);
- mon.mkfs(osdmapbl, classbl);
+ mon.mkfs(osdmapbl);
cout << argv[0] << ": created monfs at " << g_conf.mon_data
<< " for mon" << whoami
<< std::endl;
::encode(l, inc.info);
inc.op = CLASS_INC_NOP;
pending_class.insert(pair<utime_t,ClassLibraryIncremental>(i.stamp, inc));
-
- bufferlist::iterator iter = bl.begin();
- while (!iter.end()) {
- ClassImpl impl;
- ClassInfo info;
- ClassLibraryIncremental incr;
-
- string str;
- ::decode(str, iter);
- ::decode(impl.binary, iter);
-
- char ver[str.length() + 1];
- char *name;
- char *ver_min;
- char *ver_maj;
- char *arch;
-
- char classinfo[str.length() + 1];
- strcpy(classinfo, str.c_str());
-
- name = strtok(classinfo, ".");
- ver_maj = strtok(NULL, ".");
- ver_min = strtok(NULL, ".");
- sprintf(ver, "%s.%s", ver_maj, ver_min);
- arch = strtok(NULL, ".");
-
- ClassVersion cv(ver, arch);
-
- info.name = name;
- info.version = cv;
-
- impl.stamp = g_clock.now();
-
- ::encode(impl, incr.impl);
- ::encode(info, incr.info);
- incr.op = CLASS_INC_ADD;
-
- pending_class.insert(pair<utime_t,ClassLibraryIncremental>(impl.stamp, incr));
- }
}
bool ClassMonitor::store_impl(ClassInfo& info, ClassImpl& impl)
assert(success);
bufferlist::iterator p = bl.begin();
-
__u8 v;
::decode(v, p);
-
- while (!p.end()) {
- ClassLibraryIncremental inc;
- ::decode(inc, p);
- ClassImpl impl;
- ClassInfo info;
- inc.decode_info(info);
- switch (inc.op) {
- case CLASS_INC_ADD:
- inc.decode_impl(impl);
- if (impl.binary.length() > 0) {
- store_impl(info, impl);
- list.add(info.name, info.version);
- }
- break;
- case CLASS_INC_DEL:
- list.remove(info.name, info.version);
- break;
- case CLASS_INC_ACTIVATE:
- {
- map<string, ClassVersionMap>::iterator mapiter = list.library_map.find(info.name);
- if (mapiter == list.library_map.end()) {
- } else {
- ClassVersionMap& map = mapiter->second;
- map.set_default(info.version.str());
- }
+ ClassLibraryIncremental inc;
+ ::decode(inc, p);
+ ClassImpl impl;
+ ClassInfo info;
+ inc.decode_info(info);
+ switch (inc.op) {
+ case CLASS_INC_ADD:
+ inc.decode_impl(impl);
+ if (impl.binary.length() > 0) {
+ store_impl(info, impl);
+ list.add(info.name, info.version);
+ }
+ break;
+ case CLASS_INC_DEL:
+ list.remove(info.name, info.version);
+ break;
+ case CLASS_INC_ACTIVATE:
+ {
+ map<string, ClassVersionMap>::iterator mapiter = list.library_map.find(info.name);
+ if (mapiter == list.library_map.end()) {
+ } else {
+ ClassVersionMap& map = mapiter->second;
+ map.set_default(info.version.str());
}
- break;
- case CLASS_INC_NOP:
- break;
- default:
- assert(0);
}
+ break;
+ case CLASS_INC_NOP:
+ break;
+ default:
+ assert(0);
}
list.version++;
* this is the closest thing to a traditional 'mkfs' for ceph.
* initialize the monitor state machines to their initial values.
*/
-int Monitor::mkfs(bufferlist& osdmapbl, bufferlist& classbl)
+int Monitor::mkfs(bufferlist& osdmapbl)
{
// create it
int err = store->mkfs();
svc->create_initial(osdmapbl);
else if (svc->paxos->machine_id == PAXOS_MONMAP)
svc->create_initial(monmapbl);
- else if (svc->paxos->machine_id == PAXOS_CLASS)
- svc->create_initial(classbl);
else
svc->create_initial(bl);
// commit to paxos