#include "common/common_init.h"
#include "include/color.h"
+#include "common/errno.h"
void usage()
{
- cerr << "usage: cosd -i osdid [--osd-data=path] [--osd-journal=path] [--mkfs] [--mkjournal]" << std::endl;
- cerr << " --debug_osd N set debug level (e.g. 10)" << std::endl;
+ derr << "usage: cosd -i osdid [--osd-data=path] [--osd-journal=path] "
+ << "[--mkfs] [--mkjournal]" << dendl;
+ derr << " --debug_osd N set debug level (e.g. 10)" << dendl;
generic_server_usage();
}
} else if (CONF_ARG_EQ("dump-pg-log", '\0')) {
CONF_SAFE_SET_ARG_VAL(&dump_pg_log, OPT_STR);
} else {
- cerr << "unrecognized arg " << args[i] << std::endl;
+ derr << "unrecognized arg " << args[i] << dendl;
ARGS_USAGE();
}
}
::decode(e, p);
}
catch (const buffer::error &e) {
- cerr << "failed to decode LogEntry at offset " << pos << std::endl;
+ derr << "failed to decode LogEntry at offset " << pos << dendl;
return 1;
}
- cout << pos << ":\t" << e << std::endl;
+ derr << pos << ":\t" << e << dendl;
}
- } else
- cerr << "unable to open " << dump_pg_log << ": " << strerror(r) << std::endl;
+ } else {
+ derr << "unable to open " << dump_pg_log << ": " << cpp_strerror(r) << dendl;
+ }
return 0;
}
char *end;
int whoami = strtol(g_conf.id, &end, 10);
if (*end || end == g_conf.id || whoami < 0) {
- cerr << "must specify '-i #' where # is the osd number" << std::endl;
+ derr << "must specify '-i #' where # is the osd number" << dendl;
usage();
}
if (!g_conf.osd_data) {
- cerr << "must specify '--osd-data=foo' data path" << std::endl;
+ derr << "must specify '--osd-data=foo' data path" << dendl;
usage();
}
if (mc.build_initial_monmap() < 0)
return -1;
- char buf[80];
if (mkfs) {
if (mc.get_monmap_privately() < 0)
return -1;
int err = OSD::mkfs(g_conf.osd_data, g_conf.osd_journal, mc.monmap.fsid, whoami);
if (err < 0) {
- cerr << TEXT_RED << " ** ERROR: error creating empty object store in " << g_conf.osd_data
- << ": " << strerror_r(-err, buf, sizeof(buf)) << TEXT_NORMAL << std::endl;
+ derr << TEXT_RED << " ** ERROR: error creating empty object store in "
+ << g_conf.osd_data << ": " << cpp_strerror(-err) << TEXT_NORMAL << dendl;
exit(1);
}
- cout << "created object store " << g_conf.osd_data;
+ derr << "created object store " << g_conf.osd_data;
if (g_conf.osd_journal)
- cout << " journal " << g_conf.osd_journal;
- cout << " for osd" << whoami << " fsid " << mc.monmap.fsid << std::endl;
+ *_dout << " journal " << g_conf.osd_journal;
+ *_dout << " for osd" << whoami << " fsid " << mc.monmap.fsid << dendl;
exit(0);
}
if (mkjournal) {
int err = OSD::mkjournal(g_conf.osd_data, g_conf.osd_journal);
if (err < 0) {
- cerr << TEXT_RED << " ** ERROR: error creating fresh journal " << g_conf.osd_journal
+ derr << TEXT_RED << " ** ERROR: error creating fresh journal " << g_conf.osd_journal
<< " for object store " << g_conf.osd_data
- << ": " << strerror_r(-err, buf, sizeof(buf)) << std::endl;
+ << ": " << cpp_strerror(-err) << dendl;
exit(1);
}
- cout << "created new journal " << g_conf.osd_journal
- << " for object store " << g_conf.osd_data
- << std::endl;
+ derr << "created new journal " << g_conf.osd_journal
+ << " for object store " << g_conf.osd_data << dendl;
exit(0);
}
if (flushjournal) {
int err = OSD::flushjournal(g_conf.osd_data, g_conf.osd_journal);
if (err < 0) {
- cerr << TEXT_RED << " ** ERROR: error flushing journal " << g_conf.osd_journal
+ derr << TEXT_RED << " ** ERROR: error flushing journal " << g_conf.osd_journal
<< " for object store " << g_conf.osd_data
- << ": " << strerror_r(-err, buf, sizeof(buf)) << std::endl;
+ << ": " << cpp_strerror(-err) << dendl;
exit(1);
}
- cout << "flushed journal " << g_conf.osd_journal
+ derr << "flushed journal " << g_conf.osd_journal
<< " for object store " << g_conf.osd_data
- << std::endl;
+ << dendl;
exit(0);
}
int w;
int r = OSD::peek_meta(g_conf.osd_data, magic, fsid, w);
if (r < 0) {
- cerr << TEXT_RED << " ** ERROR: unable to open OSD superblock on " << g_conf.osd_data << ": " << strerror_r(-r, buf, sizeof(buf)) << TEXT_NORMAL << std::endl;
- if (r == -ENOTSUP)
- cerr << TEXT_RED << " ** please verify that underlying storage supports xattrs" << TEXT_NORMAL << std::endl;
- dout(0) << "unable to open OSD superblock on " << g_conf.osd_data << ": " << strerror_r(-r, buf, sizeof(buf)) << dendl;
+ derr << TEXT_RED << " ** ERROR: unable to open OSD superblock on "
+ << g_conf.osd_data << ": " << cpp_strerror(-r)
+ << TEXT_NORMAL << dendl;
+ if (r == -ENOTSUP) {
+ derr << TEXT_RED << " ** please verify that underlying storage "
+ << "supports xattrs" << TEXT_NORMAL << dendl;
+ }
exit(1);
}
if (w != whoami) {
- cerr << "OSD id " << w << " != my id " << whoami << std::endl;
+ derr << "OSD id " << w << " != my id " << whoami << dendl;
exit(1);
}
if (strcmp(magic.c_str(), CEPH_OSD_ONDISK_MAGIC)) {
- cerr << "OSD magic " << magic << " != my " << CEPH_OSD_ONDISK_MAGIC << std::endl;
+ derr << "OSD magic " << magic << " != my " << CEPH_OSD_ONDISK_MAGIC
+ << dendl;
exit(1);
}
bool cluster_addr_set = !g_conf.cluster_addr.is_blank_addr();
if (cluster_addr_set && !client_addr_set) {
- cerr << TEXT_RED << " ** "
+ derr << TEXT_RED << " ** "
<< "WARNING: set cluster address but not client address!" << " **\n"
- << "using cluster address for clients" << TEXT_NORMAL << std::endl;
+ << "using cluster address for clients" << TEXT_NORMAL << dendl;
g_conf.public_addr = g_conf.cluster_addr;
client_addr_set = true;
cluster_addr_set = false;
messenger_hb->bind(hb_addr);
- cout << "starting osd" << whoami
+ derr << "starting osd" << whoami
<< " at " << client_messenger->get_ms_addr()
<< " osd_data " << g_conf.osd_data
<< " " << ((g_conf.osd_journal && g_conf.osd_journal[0]) ? g_conf.osd_journal:"(no journal)")
- << std::endl;
+ << dendl;
client_messenger->register_entity(entity_name_t::OSD(whoami));
cluster_messenger->register_entity(entity_name_t::OSD(whoami));
int err = osd->pre_init();
if (err < 0) {
- char buf[80];
- cerr << TEXT_RED << " ** ERROR: initializing osd failed: " << strerror_r(-err, buf, sizeof(buf)) << TEXT_NORMAL << std::endl;
+ derr << TEXT_RED << " ** ERROR: initializing osd failed: " << cpp_strerror(-err)
+ << TEXT_NORMAL << dendl;
return 1;
}
// start osd
if (osd->init() < 0) {
- cerr << TEXT_RED << " ** ERROR: initializing osd failed: " << strerror_r(-err, buf, sizeof(buf)) << TEXT_NORMAL << std::endl;
+ derr << TEXT_RED << " ** ERROR: initializing osd failed: " << cpp_strerror(-err)
+ << TEXT_NORMAL << dendl;
return 1;
}
return 0;
}
-
#include "auth/AuthAuthorizeHandler.h"
+#include "common/errno.h"
+
#include <iostream>
#include <errno.h>
#include <sys/stat.h>
assert(!store);
store = create_object_store(dev_path, journal_path);
if (!store) {
- dout(0) << " unable to create object store" << dendl;
+ derr << __PRETTY_FUNCTION__ << ": unable to create object store" << dendl;
return -ENODEV;
}
if (store->test_mount_in_use()) {
- dout(0) << "object store " << dev_path << " is currently in use" << dendl;
- cout << "object store " << dev_path << " is currently in use (cosd already running?)" << std::endl;
+ derr << __PRETTY_FUNCTION__ << ": object store '" << dev_path << "' is "
+ << "currently in use. (Is cosd already running?)" << dendl;
return -EBUSY;
}
return 0;
int r = store->mount();
if (r < 0) {
- dout(0) << " unable to mount object store" << dendl;
+ derr << __PRETTY_FUNCTION__ << ": unable to mount object store" << dendl;
return r;
}
// read superblock
r = read_superblock();
if (r < 0) {
- dout(0) << " unable to read osd superblock" << dendl;
+ derr << __PRETTY_FUNCTION__ << ": unable to read osd superblock" << dendl;
store->umount();
delete store;
return -1;
// load up "current" osdmap
assert_warn(!osdmap);
if (osdmap) {
- dout(0) << " unable to read current osdmap" << dendl;
+ derr << __PRETTY_FUNCTION__ << ": unable to read current osdmap" << dendl;
return -1;
}
osdmap = new OSDMap;
dout(2) << "superblock: i am osd" << superblock.whoami << dendl;
assert_warn(whoami == superblock.whoami);
if (whoami != superblock.whoami) {
- dout(0) << "wtf, superblock says osd" << superblock.whoami << " but i am osd" << whoami << dendl;
+ derr << __PRETTY_FUNCTION__ << ": logic error: superblock says osd"
+ << superblock.whoami << " but i am osd" << whoami << dendl;
return -EINVAL;
}
g_conf.debug_ebofs = 100;
g_conf.debug_ms = 100;
- dout(1) << "shutdown." << dendl;
+ derr << __PRETTY_FUNCTION__ << dendl;
state = STATE_STOPPING;
write_superblock(t);
int r = store->apply_transaction(t);
if (r) {
- char buf[80];
- dout(0) << "error writing superblock " << r << " " << strerror_r(-r, buf, sizeof(buf)) << dendl;
+ derr << __PRETTY_FUNCTION__ << ": error writing superblock: "
+ << cpp_strerror(r) << dendl;
}
// flush data to disk
dout(10) << "read_superblock " << superblock << dendl;
if (osd_compat.compare(superblock.compat_features) < 0) {
- dout(0) << "The disk uses features unsupported by the executable." << dendl;
- dout(0) << " ondisk features " << superblock.compat_features << dendl;
- dout(0) << " daemon features " << osd_compat << dendl;
+ derr << "The disk uses features unsupported by the executable." << dendl;
+ derr << " ondisk features " << superblock.compat_features << dendl;
+ derr << " daemon features " << osd_compat << dendl;
if (osd_compat.writeable(superblock.compat_features)) {
- dout(0) << "it is still writeable, though. Missing features:" << dendl;
+ derr << "it is still writeable, though. Missing features:" << dendl;
CompatSet diff = osd_compat.unsupported(superblock.compat_features);
return -EOPNOTSUPP;
}
else {
- dout(0) << "Cannot write to disk! Missing features:" << dendl;
+ derr << "Cannot write to disk! Missing features:" << dendl;
CompatSet diff = osd_compat.unsupported(superblock.compat_features);
return -EOPNOTSUPP;
}
}
if (whoami != superblock.whoami) {
- dout(0) << "read_superblock superblock says osd" << superblock.whoami
- << ", but i (think i) am osd" << whoami << dendl;
+ derr << "read_superblock superblock says osd" << superblock.whoami
+ << ", but i (think i) am osd" << whoami << dendl;
return -1;
}
p++) {
if (heartbeat_from_stamp.count(p->first) &&
heartbeat_from_stamp[p->first] < grace) {
- dout(0) << "heartbeat_check: no heartbeat from osd" << p->first
- << " since " << heartbeat_from_stamp[p->first]
- << " (cutoff " << grace << ")" << dendl;
+ derr << "heartbeat_check: no heartbeat from osd" << p->first
+ << " since " << heartbeat_from_stamp[p->first]
+ << " (cutoff " << grace << ")" << dendl;
queue_failure(p->first);
}
utime_t now = g_clock.now();
if (got_sigterm) {
- dout(0) << "got SIGTERM, shutting down" << dendl;
+ derr << "got SIGTERM, shutting down" << dendl;
Message *m = new MGenericMessage(CEPH_MSG_SHUTDOWN);
m->set_priority(CEPH_MSG_PRIO_HIGHEST);
cluster_messenger->send_message(m, cluster_messenger->get_myinst());
logger->fset(l_osd_loadavg, oneminavg);
in.close();
}
+ else {
+ derr << "heartbeat: failed to open /proc/loadavg" << dendl;
+ }
}
catch (const ios::failure &f) {
- dout(0) << "heartbeat: failed to read /proc/loadavg" << dendl;
+ derr << "heartbeat: failed to read /proc/loadavg" << dendl;
}
// calc my stats
logger->set(l_osd_buf, buffer_total_alloc.read());
if (got_sigterm) {
- dout(0) << "got SIGTERM, shutting down" << dendl;
+ derr << "got SIGTERM, shutting down" << dendl;
cluster_messenger->send_message(new MGenericMessage(CEPH_MSG_SHUTDOWN),
cluster_messenger->get_myinst());
return;
int r = store->apply_transaction(t, fin);
if (r) {
map_lock.put_write();
- char buf[80];
- dout(0) << "error writing map: " << r << " " << strerror_r(-r, buf, sizeof(buf)) << dendl;
+ derr << "error writing map: " << cpp_strerror(-r) << dendl;
m->put();
shutdown();
return;
int from = m->get_source().num();
if (!osdmap->have_inst(from) ||
osdmap->get_cluster_addr(from) != m->get_source_inst().addr) {
- dout(-7) << "from dead osd" << from << ", dropping, sharing map" << dendl;
+ dout(0) << "from dead osd" << from << ", dropping, sharing map" << dendl;
send_incremental_map(epoch, m->get_source_inst(), true);
m->put();
return false;