#AC_FUNC_UTIME_NULL
#AC_CHECK_FUNCS([bzero fchdir fdatasync floor ftruncate getcwd gethostbyname gethostname gettimeofday inet_ntoa localtime_r memmove memset mkdir munmap pow rmdir select socket sqrt strcasecmp strchr strerror strstr utime])
+# check for return type (and presence) if strerror_r in C++ mode
+AC_LANG_PUSH([C++])
+AC_FUNC_STRERROR_R
+AC_LANG_POP([C++])
+
AM_CONDITIONAL(WITH_BUILD_TESTS, test "$WITH_BUILD_TESTS" = "1")
AM_PATH_PYTHON([2.4],
if (errno == ENOENT) {
*r = false;
} else {
- cerr << "stat(" << mon_data << ") " << strerror(errno) << std::endl;
+ cerr << "stat(" << mon_data << ") " << cpp_strerror(errno) << std::endl;
return -errno;
}
} else {
DIR *dir = ::opendir(mon_data.c_str());
if (!dir) {
- cerr << "opendir(" << mon_data << ") " << strerror(errno) << std::endl;
+ cerr << "opendir(" << mon_data << ") " << cpp_strerror(errno) << std::endl;
return -errno;
}
char buf[offsetof(struct dirent, d_name) + PATH_MAX + 1];
while (!::readdir_r(dir, reinterpret_cast<struct dirent*>(buf), &de)) {
if (!de) {
if (errno) {
- cerr << "readdir(" << mon_data << ") " << strerror(errno) << std::endl;
+ cerr << "readdir(" << mon_data << ") " << cpp_strerror(errno) << std::endl;
code = -errno;
}
break;
if (!exists) {
if (::mkdir(g_conf->mon_data.c_str(), 0755)) {
cerr << "mkdir(" << g_conf->mon_data << ") : "
- << strerror(errno) << std::endl;
+ << cpp_strerror(errno) << std::endl;
exit(1);
}
}
memset(&layout, 0, sizeof(layout));
err = ioctl(fd, CEPH_IOC_GET_LAYOUT, (unsigned long)&layout);
if (err) {
- cerr << "Error getting layout: "
- << (err == -1 ? strerror(errno) : strerror(-err)) << endl;
+ cerr << "Error getting layout: " << cpp_strerror(errno) << endl;
return 1;
}
if (layout.stripe_unit == 0) {
location.file_offset = file_offset;
err = ioctl(fd, CEPH_IOC_GET_DATALOC, (unsigned long)&location);
if (err) {
- cerr << "Error getting location: "
- << (err == -1 ? strerror(errno) : strerror(-err)) << endl;
+ cerr << "Error getting location: " << cpp_strerror(err) << endl;
return 1;
}
cout << "location.file_offset: " << location.file_offset << endl;
layout.unused = -1; /* used to be preferred_osd */
err = ioctl(fd, ioctl_num, (unsigned long)&layout);
if (err) {
- cerr << "Error setting layout: "
- << (err == -1 ? strerror(errno) : strerror(-err)) << endl;
+ cerr << "Error setting layout: " << cpp_strerror(errno) << endl;
return 1;
}
} else if (CMD_MAP == cmd) {
struct stat st;
err = ::fstat(fd, &st);
if (err < 0) {
- cerr << "error statting file: "
- << (err == -1 ? strerror(errno) : strerror(-err)) << endl;
+ cerr << "error statting file: " << cpp_strerror(errno) << endl;
return 1;
}
memset(&layout, 0, sizeof(layout));
err = ioctl(fd, CEPH_IOC_GET_LAYOUT, (unsigned long)&layout);
if (err) {
- cerr << "Error getting layout: "
- << (err == -1 ? strerror(errno) : strerror(-err)) << endl;
+ cerr << "Error getting layout: " << cpp_strerror(errno) << endl;
return 1;
}
location.file_offset = off;
err = ioctl(fd, CEPH_IOC_GET_DATALOC, (unsigned long)&location);
if (err) {
- cerr << "Error getting location: "
- << (err == -1 ? strerror(errno) : strerror(-err)) << endl;
+ cerr << "Error getting location: " << cpp_strerror(errno) << endl;
return 1;
}
printf("%15lld %24s %12lld %12lld %d\n",
*fd = open(argv[1], O_RDONLY);
if (*fd < 0) {
- cerr << "error opening path: " << strerror(*fd) << endl;
+ cerr << "error opening path: " << cpp_strerror(*fd) << endl;
return 1;
}
#include <math.h>
#include <sys/statvfs.h>
+#include "common/errno.h"
#include "include/assert.h"
#define dout_subsys ceph_subsys_client
dout(15) << "initing" << dendl;
int err = client->init();
if (err < 0) {
- char buf[80];
- dout(0) << "failed to initialize: " << strerror_r(-err, buf, sizeof(buf)) << dendl;
+ dout(0) << "failed to initialize: " << cpp_strerror(err) << dendl;
return -1;
}
dout(15) << "mounting" << dendl;
err = client->mount("");
if (err < 0) {
- char buf[80];
- dout(0) << "failed to mount: " << strerror_r(-err, buf, sizeof(buf)) << dendl;
+ dout(0) << "failed to mount: " << cpp_strerror(err) << dendl;
client->shutdown();
return -1;
}
#include "include/utime.h"
#include "objclass/objclass.h"
+#include "common/errno.h"
#include "common/Clock.h"
#include "cls/lock/cls_lock_types.h"
// see if there's already a locker
int r = read_lock(hctx, name, &linfo);
if (r < 0 && r != -ENOENT) {
- CLS_ERR("Could not read lock info: %s", strerror(r));
+ CLS_ERR("Could not read lock info: %s", cpp_strerror(r).c_str());
return r;
}
map<locker_id_t, locker_info_t>& lockers = linfo.lockers;
lock_info_t linfo;
int r = read_lock(hctx, name, &linfo);
if (r < 0) {
- CLS_ERR("Could not read list of current lockers off disk: %s", strerror(r));
+ CLS_ERR("Could not read list of current lockers off disk: %s", cpp_strerror(r).c_str());
return r;
}
lock_info_t linfo;
int r = read_lock(hctx, op.name, &linfo);
if (r < 0) {
- CLS_ERR("Could not read lock info: %s", strerror(r));
+ CLS_ERR("Could not read lock info: %s", cpp_strerror(r).c_str());
return r;
}
#include <sstream>
#include <vector>
+#include "common/errno.h"
#include "objclass/objclass.h"
#include "include/rbd_types.h"
if (snap_id == CEPH_NOSNAP) {
int r = read_key(hctx, "features", &features);
if (r < 0) {
- CLS_ERR("failed to read features off disk: %s", strerror(r));
+ CLS_ERR("failed to read features off disk: %s", cpp_strerror(r).c_str());
return r;
}
} else {
int r = read_key(hctx, "order", &order);
if (r < 0) {
- CLS_ERR("failed to read the order off of disk: %s", strerror(r));
+ CLS_ERR("failed to read the order off of disk: %s", cpp_strerror(r).c_str());
return r;
}
if (snap_id == CEPH_NOSNAP) {
r = read_key(hctx, "size", &size);
if (r < 0) {
- CLS_ERR("failed to read the image's size off of disk: %s", strerror(r));
+ CLS_ERR("failed to read the image's size off of disk: %s", cpp_strerror(r).c_str());
return r;
}
} else {
uint64_t orig_size;
int r = read_key(hctx, "size", &orig_size);
if (r < 0) {
- CLS_ERR("Could not read image's size off disk: %s", strerror(r));
+ CLS_ERR("Could not read image's size off disk: %s", cpp_strerror(r).c_str());
return r;
}
uint8_t order;
r = read_key(hctx, "order", &order);
if (r < 0) {
- CLS_ERR("failed to read the order off of disk: %s", strerror(r));
+ CLS_ERR("failed to read the order off of disk: %s", cpp_strerror(r).c_str());
return -EIO;
}
stripe_unit = 1ull << order;
uint8_t order;
r = read_key(hctx, "order", &order);
if (r < 0) {
- CLS_ERR("failed to read the order off of disk: %s", strerror(r));
+ CLS_ERR("failed to read the order off of disk: %s", cpp_strerror(r).c_str());
return r;
}
if ((1ull << order) % stripe_unit || stripe_unit > (1ull << order)) {
uint64_t snap_seq;
r = read_key(hctx, "snap_seq", &snap_seq);
if (r < 0) {
- CLS_ERR("could not read the image's snap_seq off disk: %s", strerror(r));
+ CLS_ERR("could not read the image's snap_seq off disk: %s", cpp_strerror(r).c_str());
return r;
}
int r = read_key(hctx, "object_prefix", &object_prefix);
if (r < 0) {
CLS_ERR("failed to read the image's object prefix off of disk: %s",
- strerror(r));
+ cpp_strerror(r).c_str());
return r;
}
uint64_t cur_snap_seq;
int r = read_key(hctx, "snap_seq", &cur_snap_seq);
if (r < 0) {
- CLS_ERR("Could not read image's snap_seq off disk: %s", strerror(r));
+ CLS_ERR("Could not read image's snap_seq off disk: %s", cpp_strerror(r).c_str());
return r;
}
r = read_key(hctx, "size", &snap_meta.image_size);
if (r < 0) {
- CLS_ERR("Could not read image's size off disk: %s", strerror(r));
+ CLS_ERR("Could not read image's size off disk: %s", cpp_strerror(r).c_str());
return r;
}
r = read_key(hctx, "features", &snap_meta.features);
if (r < 0) {
- CLS_ERR("Could not read image's features off disk: %s", strerror(r));
+ CLS_ERR("Could not read image's features off disk: %s", cpp_strerror(r).c_str());
return r;
}
#include <errno.h>
#include <unistd.h>
#include "common/safe_io.h"
+#include "common/errno.h"
/**
* pre-fork fork/daemonize helper class
::close(2);
r = 0;
} else if (err) {
- cerr << "[" << getpid() << "]: " << cpp_strerror(-err) << std::endl;
+ cerr << "[" << getpid() << "]: " << cpp_strerror(err) << std::endl;
} else {
// wait for child to exit
waitpid(childpid, NULL, 0);
#include "include/stringify.h"
#include "msg/msg_types.h"
#include "osd/osd_types.h"
+#include "common/errno.h"
#include "include/assert.h"
show_config_value_arg << "': option not found" << std::endl;
else
std::cerr << "failed to get config option '" <<
- show_config_value_arg << "': " << strerror(-r) << std::endl;
+ show_config_value_arg << "': " << cpp_strerror(r) << std::endl;
_exit(1);
}
string s = buf;
#include "common/errno.h"
+#include "acconfig.h"
#include <sstream>
#include <string>
+
#include <string.h>
std::string cpp_strerror(int err)
{
char buf[128];
+ char *errmsg;
if (err < 0)
err = -err;
std::ostringstream oss;
- oss << "(" << err << ") " << strerror_r(err, buf, sizeof(buf));
+ buf[0] = '\0';
+
+ // strerror_r returns char * on Linux, and does not always fill buf
+#ifdef STRERROR_R_CHAR_P
+ errmsg = strerror_r(err, buf, sizeof(buf));
+#else
+ strerror_r(err, buf, sizeof(buf));
+ errmsg = buf;
+#endif
+
+ oss << "(" << err << ") " << errmsg;
return oss.str();
}
#include <cctype>
#include <typeinfo>
+#include "common/errno.h"
// -------------
if (r == -EEXIST)
err << "Duplicate bucket id " << id << std::endl;
else
- err << "add_bucket failed " << strerror(-r) << std::endl;
+ err << "add_bucket failed " << cpp_strerror(r) << std::endl;
return r;
}
r = crush.set_item_name(id, name.c_str());
#include "common/debug.h"
#include "common/Formatter.h"
+#include "common/errno.h"
#include "CrushWrapper.h"
int empty = 0, newid;
int r = add_bucket(0, CRUSH_BUCKET_STRAW, CRUSH_HASH_DEFAULT, p->first, 1, &cur, &empty, &newid);
if (r < 0) {
- char buf[128];
- ldout(cct, 1) << "add_bucket failure error: " << strerror_r(-r, buf, sizeof(buf)) << dendl;
+ ldout(cct, 1) << "add_bucket failure error: " << cpp_strerror(r) << dendl;
return r;
}
set_item_name(newid, q->second);
#include <dlfcn.h>
#include "ErasureCodePlugin.h"
+#include "common/errno.h"
#define PLUGIN_PREFIX "libec_"
#define PLUGIN_SUFFIX ".so"
int r = erasure_code_init(name.c_str());
if (r != 0) {
ss << "erasure_code_init(" << plugin_name
- << "): " << strerror(-r);
+ << "): " << cpp_strerror(r);
dlclose(library);
return r;
}
#include "events/ECommitted.h"
#include "include/filepath.h"
+#include "common/errno.h"
#include "common/Timer.h"
#include "common/perf_counters.h"
#include "include/compat.h"
// that have projected linkages from getting new replica.
mds->locker->set_xlocks_done(mdr.get(), mdr->client_request->get_op() == CEPH_MDS_OP_RENAME);
- char buf[80];
dout(10) << "early_reply " << reply->get_result()
- << " (" << strerror_r(-reply->get_result(), buf, sizeof(buf))
+ << " (" << cpp_strerror(reply->get_result())
<< ") " << *req << dendl;
if (tracei || tracedn) {
assert(mdr.get());
MClientRequest *req = mdr->client_request;
- char buf[80];
dout(10) << "reply_request " << reply->get_result()
- << " (" << strerror_r(-reply->get_result(), buf, sizeof(buf))
+ << " (" << cpp_strerror(reply->get_result())
<< ") " << *req << dendl;
// note successful request in session map?
#define CEPH_MAUTHREPLY_H
#include "msg/Message.h"
+#include "common/errno.h"
struct MAuthReply : public Message {
__u32 protocol;
public:
const char *get_type_name() const { return "auth_reply"; }
void print(ostream& o) const {
- char buf[80];
- o << "auth_reply(proto " << protocol << " " << result << " " << strerror_r(-result, buf, sizeof(buf));
+ o << "auth_reply(proto " << protocol << " " << result << " " << cpp_strerror(result);
if (result_msg.length())
o << ": " << result_msg;
o << ")";
#include "msg/Message.h"
#include "include/ceph_features.h"
+#include "common/errno.h"
#include <vector>
using namespace std;
o << "client_reply(???:" << get_tid();
o << " = " << get_result();
if (get_result() <= 0) {
- char buf[80];
- o << " " << strerror_r(-get_result(), buf, sizeof(buf));
+ o << " " << cpp_strerror(get_result());
}
if (head.op & CEPH_MDS_OP_WRITE) {
if (head.safe)
#include "MOSDOp.h"
#include "os/ObjectStore.h"
+#include "common/errno.h"
/*
* OSD op reply
out << " ack";
out << " = " << get_result();
if (get_result() < 0) {
- char buf[80];
- out << " (" << strerror_r(-get_result(), buf, sizeof(buf)) << ")";
+ out << " (" << cpp_strerror(get_result()) << ")";
}
if (is_redirect_reply()) {
out << " redirect: { " << redirect << " }";
#include "common/config.h"
#include "common/cmdparse.h"
+#include "common/errno.h"
#define dout_subsys ceph_subsys_mon
#undef dout_prefix
#include "include/Context.h"
#include "include/assert.h"
#include "common/Formatter.h"
+#include "common/errno.h"
#include "mon/Monitor.h"
#include "mon/QuorumService.h"
struct stat st;
int r = ::stat(fn, &st);
//char buf[80];
- //dout(15) << "exists_bl stat " << fn << " r=" << r << " errno " << errno << " " << strerror_r(errno, buf, sizeof(buf)) << dendl;
+ //dout(15) << "exists_bl stat " << fn << " r=" << r << " " << cpp_strerror(errno) << dendl;
if (r) {
assert (errno == ENOENT);
}
int fd = ::open(fn, O_RDONLY);
if (fd < 0) {
- char buf[80];
if (b) {
- dout(15) << "get_bl " << a << "/" << b << " " << strerror_r(errno, buf, sizeof(buf)) << dendl;
+ dout(15) << "get_bl " << a << "/" << b << " " << cpp_strerror(errno) << dendl;
} else {
- dout(15) << "get_bl " << a << " " << strerror_r(errno, buf, sizeof(buf)) << dendl;
+ dout(15) << "get_bl " << a << " " << cpp_strerror(errno) << dendl;
}
return -errno;
}
while (off < len) {
dout(20) << "reading at off " << off << " of " << len << dendl;
int r = ::read(fd, bp.c_str()+off, len-off);
- if (r < 0) {
- char buf[80];
- dout(0) << "errno on read " << strerror_r(errno, buf, sizeof(buf)) << dendl;
- }
+ if (r < 0)
+ dout(0) << "errno on read " << cpp_strerror(errno) << dendl;
assert(r>0);
off += r;
}
#include "common/Timer.h"
#include "common/ceph_argparse.h"
+#include "common/errno.h"
#include "mon/MDSMonitor.h"
#include "mon/OSDMonitor.h"
#include "mon/PGMonitor.h"
CRUSH_HASH_DEFAULT, type, 0, NULL,
NULL, &bucketno);
if (err < 0) {
- char buf[128];
- ss << "add_bucket error: '" << strerror_r(-err, buf, sizeof(buf)) << "'";
+ ss << "add_bucket error: '" << cpp_strerror(err) << "'";
goto reply;
}
err = newcrush.set_item_name(bucketno, name);
/* socket creation */
listen_sd = ::socket(family, SOCK_STREAM, 0);
if (listen_sd < 0) {
- char buf[80];
lderr(msgr->cct) << "accepter.bind unable to create socket: "
- << strerror_r(errno, buf, sizeof(buf)) << dendl;
+ << cpp_strerror(errno) << dendl;
return -errno;
}
rc = ::bind(listen_sd, (struct sockaddr *) &listen_addr.ss_addr(), listen_addr.addr_size());
if (rc < 0) {
- char buf[80];
lderr(msgr->cct) << "accepter.bind unable to bind to " << listen_addr.ss_addr()
- << ": " << strerror_r(errno, buf, sizeof(buf)) << dendl;
+ << ": " << cpp_strerror(errno) << dendl;
return -errno;
}
} else {
break;
}
if (rc < 0) {
- char buf[80];
lderr(msgr->cct) << "accepter.bind unable to bind to " << listen_addr.ss_addr()
<< " on any port in range " << msgr->cct->_conf->ms_bind_port_min
<< "-" << msgr->cct->_conf->ms_bind_port_max
- << ": " << strerror_r(errno, buf, sizeof(buf))
+ << ": " << cpp_strerror(errno)
<< dendl;
return -errno;
}
int errors = 0;
- char buf[80];
-
struct pollfd pfd;
pfd.fd = listen_sd;
pfd.events = POLLIN | POLLERR | POLLNVAL | POLLHUP;
msgr->add_accept_pipe(sd);
} else {
ldout(msgr->cct,0) << "accepter no incoming connection? sd = " << sd
- << " errno " << errno << " " << strerror_r(errno, buf, sizeof(buf)) << dendl;
+ << " errno " << errno << " " << cpp_strerror(errno) << dendl;
if (++errors > 4)
break;
}
len = sizeof(socket_addr.ss_addr());
r = ::getpeername(sd, (sockaddr*)&socket_addr.ss_addr(), &len);
if (r < 0) {
- char buf[80];
- ldout(msgr->cct,0) << "accept failed to getpeername " << errno << " " << strerror_r(errno, buf, sizeof(buf)) << dendl;
+ ldout(msgr->cct,0) << "accept failed to getpeername " << cpp_strerror(errno) << dendl;
goto fail_unlocked;
}
::encode(socket_addr, addrs);
if (sd >= 0)
::close(sd);
- char buf[80];
-
// create socket?
sd = ::socket(peer_addr.get_family(), SOCK_STREAM, 0);
if (sd < 0) {
- lderr(msgr->cct) << "connect couldn't created socket " << strerror_r(errno, buf, sizeof(buf)) << dendl;
+ lderr(msgr->cct) << "connect couldn't created socket " << cpp_strerror(errno) << dendl;
goto fail;
}
rc = ::connect(sd, (sockaddr*)&peer_addr.addr, peer_addr.addr_size());
if (rc < 0) {
ldout(msgr->cct,2) << "connect error " << peer_addr
- << ", " << errno << ": " << strerror_r(errno, buf, sizeof(buf)) << dendl;
+ << ", " << cpp_strerror(errno) << dendl;
goto fail;
}
// verify banner
// FIXME: this should be non-blocking, or in some other way verify the banner as we get it.
if (tcp_read((char*)&banner, strlen(CEPH_BANNER)) < 0) {
- ldout(msgr->cct,2) << "connect couldn't read banner, " << strerror_r(errno, buf, sizeof(buf)) << dendl;
+ ldout(msgr->cct,2) << "connect couldn't read banner, " << cpp_strerror(errno) << dendl;
goto fail;
}
if (memcmp(banner, CEPH_BANNER, strlen(CEPH_BANNER))) {
msg.msg_iovlen = 1;
msglen = msgvec[0].iov_len;
if (do_sendmsg(&msg, msglen)) {
- ldout(msgr->cct,2) << "connect couldn't write my banner, " << strerror_r(errno, buf, sizeof(buf)) << dendl;
+ ldout(msgr->cct,2) << "connect couldn't write my banner, " << cpp_strerror(errno) << dendl;
goto fail;
}
addrbl.push_back(p);
}
if (tcp_read(addrbl.c_str(), addrbl.length()) < 0) {
- ldout(msgr->cct,2) << "connect couldn't read peer addrs, " << strerror_r(errno, buf, sizeof(buf)) << dendl;
+ ldout(msgr->cct,2) << "connect couldn't read peer addrs, " << cpp_strerror(errno) << dendl;
goto fail;
}
{
msg.msg_iovlen = 1;
msglen = msgvec[0].iov_len;
if (do_sendmsg(&msg, msglen)) {
- ldout(msgr->cct,2) << "connect couldn't write my addr, " << strerror_r(errno, buf, sizeof(buf)) << dendl;
+ ldout(msgr->cct,2) << "connect couldn't write my addr, " << cpp_strerror(errno) << dendl;
goto fail;
}
ldout(msgr->cct,10) << "connect sent my addr " << msgr->my_inst.addr << dendl;
ldout(msgr->cct,10) << "connect sending gseq=" << gseq << " cseq=" << cseq
<< " proto=" << connect.protocol_version << dendl;
if (do_sendmsg(&msg, msglen)) {
- ldout(msgr->cct,2) << "connect couldn't write gseq, cseq, " << strerror_r(errno, buf, sizeof(buf)) << dendl;
+ ldout(msgr->cct,2) << "connect couldn't write gseq, cseq, " << cpp_strerror(errno) << dendl;
goto fail;
}
ldout(msgr->cct,20) << "connect wrote (self +) cseq, waiting for reply" << dendl;
ceph_msg_connect_reply reply;
if (tcp_read((char*)&reply, sizeof(reply)) < 0) {
- ldout(msgr->cct,2) << "connect read reply " << strerror_r(errno, buf, sizeof(buf)) << dendl;
+ ldout(msgr->cct,2) << "connect read reply " << cpp_strerror(errno) << dendl;
goto fail;
}
return;
}
- char buf[80];
- ldout(msgr->cct,2) << "fault " << errno << ": " << strerror_r(errno, buf, sizeof(buf)) << dendl;
+ ldout(msgr->cct,2) << "fault " << cpp_strerror(errno) << dendl;
if (state == STATE_CLOSED ||
state == STATE_CLOSING) {
pipe_lock.Unlock();
- char buf[80];
char tag = -1;
ldout(msgr->cct,20) << "reader reading tag..." << dendl;
if (tcp_read((char*)&tag, 1) < 0) {
pipe_lock.Lock();
- ldout(msgr->cct,2) << "reader couldn't read tag, " << strerror_r(errno, buf, sizeof(buf)) << dendl;
+ ldout(msgr->cct,2) << "reader couldn't read tag, " << cpp_strerror(errno) << dendl;
fault(true);
continue;
}
int rc = tcp_read((char*)&seq, sizeof(seq));
pipe_lock.Lock();
if (rc < 0) {
- ldout(msgr->cct,2) << "reader couldn't read ack seq, " << strerror_r(errno, buf, sizeof(buf)) << dendl;
+ ldout(msgr->cct,2) << "reader couldn't read ack seq, " << cpp_strerror(errno) << dendl;
fault(true);
} else if (state != STATE_CLOSED) {
handle_ack(seq);
*/
void Pipe::writer()
{
- char buf[80];
-
pipe_lock.Lock();
while (state != STATE_CLOSED) {// && state != STATE_WAIT) {
ldout(msgr->cct,10) << "writer: state = " << get_state_name()
pipe_lock.Lock();
if (rc < 0) {
ldout(msgr->cct,2) << "writer couldn't write keepalive[2], "
- << strerror_r(errno, buf, sizeof(buf)) << dendl;
+ << cpp_strerror(errno) << dendl;
fault();
continue;
}
int rc = write_keepalive2(CEPH_MSGR_TAG_KEEPALIVE2_ACK, t);
pipe_lock.Lock();
if (rc < 0) {
- ldout(msgr->cct,2) << "writer couldn't write keepalive_ack, " << strerror_r(errno, buf, sizeof(buf)) << dendl;
+ ldout(msgr->cct,2) << "writer couldn't write keepalive_ack, " << cpp_strerror(errno) << dendl;
fault();
continue;
}
int rc = write_ack(send_seq);
pipe_lock.Lock();
if (rc < 0) {
- ldout(msgr->cct,2) << "writer couldn't write ack, " << strerror_r(errno, buf, sizeof(buf)) << dendl;
+ ldout(msgr->cct,2) << "writer couldn't write ack, " << cpp_strerror(errno) << dendl;
fault();
continue;
}
pipe_lock.Lock();
if (rc < 0) {
ldout(msgr->cct,1) << "writer error sending " << m << ", "
- << errno << ": " << strerror_r(errno, buf, sizeof(buf)) << dendl;
+ << cpp_strerror(errno) << dendl;
fault();
}
m->put();
int Pipe::do_sendmsg(struct msghdr *msg, int len, bool more)
{
- char buf[80];
-
while (len > 0) {
if (0) { // sanity
int l = 0;
if (r == 0)
ldout(msgr->cct,10) << "do_sendmsg hmm do_sendmsg got r==0!" << dendl;
if (r < 0) {
- ldout(msgr->cct,1) << "do_sendmsg error " << strerror_r(errno, buf, sizeof(buf)) << dendl;
+ ldout(msgr->cct,1) << "do_sendmsg error " << cpp_strerror(errno) << dendl;
return -1;
}
if (state == STATE_CLOSED) {
goto again;
} else {
ldout(msgr->cct, 10) << "tcp_read_nonblocking socket " << sd << " returned "
- << got << " errno " << errno << " " << cpp_strerror(errno) << dendl;
+ << got << " " << cpp_strerror(errno) << dendl;
return -1;
}
} else if (got == 0) {
while (len > 0) {
int did = ::send( sd, buf, len, MSG_NOSIGNAL );
if (did < 0) {
- //lgeneric_dout(cct, 1) << "tcp_write error did = " << did << " errno " << errno << " " << strerror(errno) << dendl;
- //lgeneric_derr(cct, 1) << "tcp_write error did = " << did << " errno " << errno << " " << strerror(errno) << dendl;
+ //lgeneric_dout(cct, 1) << "tcp_write error did = " << did << " " << cpp_strerror(errno) << dendl;
+ //lgeneric_derr(cct, 1) << "tcp_write error did = " << did << " " << cpp_strerror(errno) << dendl;
return did;
}
len -= did;
#include "JournalingObjectStore.h"
+#include "common/errno.h"
#include "common/debug.h"
#define dout_subsys ceph_subsys_journal
int err = journal->open(op_seq);
if (err < 0) {
- char buf[80];
dout(3) << "journal_replay open failed with "
- << strerror_r(-err, buf, sizeof(buf)) << dendl;
+ << cpp_strerror(err) << dendl;
delete journal;
journal = 0;
return err;
#include "common/config.h"
#include "common/perf_counters.h"
#include "include/str_list.h"
+#include "common/errno.h"
#define dout_subsys ceph_subsys_objecter
"show in-progress osd requests");
if (ret < 0) {
lderr(cct) << "error registering admin socket command: "
- << cpp_strerror(-ret) << dendl;
+ << cpp_strerror(ret) << dendl;
}
}
int fd = 0;
string message;
message = asoct.bind_and_listen(path, &fd);
+ std::cout << "message: " << message << std::endl;
EXPECT_NE(std::string::npos, message.find("File exists"));
ASSERT_TRUE(asoct.shutdown());
}
$ monmaptool --print nonexistent
monmaptool: monmap file nonexistent
- monmaptool: couldn't open nonexistent: No such file or directory
+ monmaptool: couldn't open nonexistent: (2) No such file or directory
[255]
#include "mon/Paxos.h"
#include "common/Formatter.h"
#include "include/stringify.h"
+#include "common/errno.h"
namespace po = boost::program_options;
using namespace std;
#include "os/LevelDBStore.h"
#include "mon/MonitorDBStore.h"
#include "os/DBObjectMap.h"
+#include "common/errno.h"
namespace po = boost::program_options;
using namespace std;
int id;
int r = crush_add_bucket(crush.crush, 0, b, &id);
if (r < 0) {
- dout(2) << "Couldn't add bucket: " << strerror(-r) << dendl;
+ dout(2) << "Couldn't add bucket: " << cpp_strerror(r) << dendl;
}
char format[20];
crush.encode(bl);
int r = bl.write_file(outfn.c_str());
if (r < 0) {
- char buf[80];
- cerr << me << ": error writing '" << outfn << "': " << strerror_r(-r, buf, sizeof(buf)) << std::endl;
+ cerr << me << ": error writing '" << outfn << "': " << cpp_strerror(r) << std::endl;
exit(1);
}
if (verbose)
#include "common/config.h"
#include "common/ceph_argparse.h"
+#include "common/errno.h"
#include "global/global_init.h"
#include "mon/MonMap.h"
#include "include/str_list.h"
}
}
- char buf[80];
if (!create && r < 0) {
- cerr << me << ": couldn't open " << fn << ": " << strerror_r(-r, buf, sizeof(buf)) << std::endl;
+ cerr << me << ": couldn't open " << fn << ": " << cpp_strerror(r) << std::endl;
return -1;
}
else if (create && !clobber && r == 0) {
<< std::endl;
int r = monmap.write(fn.c_str());
if (r < 0) {
- cerr << "monmaptool: error writing to '" << fn << "': " << strerror_r(-r, buf, sizeof(buf)) << std::endl;
+ cerr << "monmaptool: error writing to '" << fn << "': " << cpp_strerror(r) << std::endl;
return 1;
}
}
target_ctx.locator_set_key(locator);
ret = do_copy(src_ctx, oid.c_str(), target_ctx, oid.c_str());
if (ret < 0) {
- char buf[64];
- cerr << "error copying object: " << strerror_r(errno, buf, sizeof(buf)) << std::endl;
+ cerr << "error copying object: " << cpp_strerror(errno) << std::endl;
return ret;
}
}
if (!stdio)
fd = open(infile, O_RDONLY);
if (fd < 0) {
- char buf[80];
- cerr << "error reading input file " << infile << ": " << strerror_r(errno, buf, sizeof(buf)) << std::endl;
+ cerr << "error reading input file " << infile << ": " << cpp_strerror(errno) << std::endl;
return 1;
}
char *buf = new char[op_size];
{
int ret = get_random_bytes(dest, size);
if (ret < 0) {
- cerr << "cannot get random bytes: " << cpp_strerror(-ret) << std::endl;
+ cerr << "cannot get random bytes: " << cpp_strerror(ret) << std::endl;
return -1;
}
int ret = rados->ioctx_create(pool, io_ctx);
if (ret < 0) {
- cerr << "error opening pool " << pool << ": " << strerror_r(-ret, buf, sizeof(buf)) << std::endl;
+ cerr << "error opening pool " << pool << ": " << cpp_strerror(ret) << std::endl;
return ret;
}
IoCtx *ioctx,
Formatter *formatter)
{
- char buf[128];
-
if (nargs.size() < 3)
usage_exit();
list<string> locks;
int ret = rados::cls::lock::list_locks(ioctx, oid, &locks);
if (ret < 0) {
- cerr << "ERROR: rados_list_locks(): " << strerror_r(-ret, buf, sizeof(buf)) << std::endl;
+ cerr << "ERROR: rados_list_locks(): " << cpp_strerror(ret) << std::endl;
return ret;
}
string tag;
int ret = rados::cls::lock::get_lock_info(ioctx, oid, lock_name, &lockers, &type, &tag);
if (ret < 0) {
- cerr << "ERROR: rados_lock_get_lock_info(): " << strerror_r(-ret, buf, sizeof(buf)) << std::endl;
+ cerr << "ERROR: rados_lock_get_lock_info(): " << cpp_strerror(ret) << std::endl;
return ret;
}
ret = l.lock_exclusive(ioctx, oid);
}
if (ret < 0) {
- cerr << "ERROR: failed locking: " << strerror_r(-ret, buf, sizeof(buf)) << std::endl;
+ cerr << "ERROR: failed locking: " << cpp_strerror(ret) << std::endl;
return ret;
}
}
int ret = l.break_lock(ioctx, oid, name);
if (ret < 0) {
- cerr << "ERROR: failed breaking lock: " << strerror_r(-ret, buf, sizeof(buf)) << std::endl;
+ cerr << "ERROR: failed breaking lock: " << cpp_strerror(ret) << std::endl;
return ret;
}
} else {
ret = -1;
goto out;
}
- char buf[80];
if (create_pool && !pool_name) {
cerr << "--create-pool requested but pool_name was not specified!" << std::endl;
ret = rados.pool_create(pool_name, 0, 0);
if (ret < 0) {
cerr << "error creating pool " << pool_name << ": "
- << strerror_r(-ret, buf, sizeof(buf)) << std::endl;
+ << cpp_strerror(ret) << std::endl;
goto out;
}
}
ret = rados.ioctx_create(pool_name, io_ctx);
if (ret < 0) {
cerr << "error opening pool " << pool_name << ": "
- << strerror_r(-ret, buf, sizeof(buf)) << std::endl;
+ << cpp_strerror(ret) << std::endl;
goto out;
}
}
if (snapname) {
ret = io_ctx.snap_lookup(snapname, &snapid);
if (ret < 0) {
- cerr << "error looking up snap '" << snapname << "': " << strerror_r(-ret, buf, sizeof(buf)) << std::endl;
+ cerr << "error looking up snap '" << snapname << "': " << cpp_strerror(ret) << std::endl;
goto out;
}
}
ret = io_ctx.set_auid(new_auid);
if (ret < 0) {
cerr << "error changing auid on pool " << io_ctx.get_pool_name() << ':'
- << strerror_r(-ret, buf, sizeof(buf)) << std::endl;
+ << cpp_strerror(ret) << std::endl;
} else cerr << "changed auid on pool " << io_ctx.get_pool_name()
<< " to " << new_auid << std::endl;
}
ret = io_ctx.stat(oid, &size, &mtime);
if (ret < 0) {
cerr << " error stat-ing " << pool_name << "/" << oid << ": "
- << strerror_r(-ret, buf, sizeof(buf)) << std::endl;
+ << cpp_strerror(ret) << std::endl;
goto out;
} else {
cout << pool_name << "/" << oid
usage_exit();
ret = do_get(io_ctx, nargs[1], nargs[2], op_size);
if (ret < 0) {
- cerr << "error getting " << pool_name << "/" << nargs[1] << ": " << strerror_r(-ret, buf, sizeof(buf)) << std::endl;
+ cerr << "error getting " << pool_name << "/" << nargs[1] << ": " << cpp_strerror(ret) << std::endl;
goto out;
}
}
usage_exit();
ret = do_put(io_ctx, nargs[1], nargs[2], op_size);
if (ret < 0) {
- cerr << "error putting " << pool_name << "/" << nargs[1] << ": " << strerror_r(-ret, buf, sizeof(buf)) << std::endl;
+ cerr << "error putting " << pool_name << "/" << nargs[1] << ": " << cpp_strerror(ret) << std::endl;
goto out;
}
}
if (ret < 0) {
cerr << "error truncating oid "
<< oid << " to " << size << ": "
- << strerror_r(-ret, buf, sizeof(buf)) << std::endl;
+ << cpp_strerror(ret) << std::endl;
} else {
ret = 0;
}
ret = io_ctx.setxattr(oid, attr_name.c_str(), bl);
if (ret < 0) {
- cerr << "error setting xattr " << pool_name << "/" << oid << "/" << attr_name << ": " << strerror_r(-ret, buf, sizeof(buf)) << std::endl;
+ cerr << "error setting xattr " << pool_name << "/" << oid << "/" << attr_name << ": " << cpp_strerror(ret) << std::endl;
goto out;
}
else
bufferlist bl;
ret = io_ctx.getxattr(oid, attr_name.c_str(), bl);
if (ret < 0) {
- cerr << "error getting xattr " << pool_name << "/" << oid << "/" << attr_name << ": " << strerror_r(-ret, buf, sizeof(buf)) << std::endl;
+ cerr << "error getting xattr " << pool_name << "/" << oid << "/" << attr_name << ": " << cpp_strerror(ret) << std::endl;
goto out;
}
else
ret = io_ctx.rmxattr(oid, attr_name.c_str());
if (ret < 0) {
- cerr << "error removing xattr " << pool_name << "/" << oid << "/" << attr_name << ": " << strerror_r(-ret, buf, sizeof(buf)) << std::endl;
+ cerr << "error removing xattr " << pool_name << "/" << oid << "/" << attr_name << ": " << cpp_strerror(ret) << std::endl;
goto out;
}
} else if (strcmp(nargs[0], "listxattr") == 0) {
bufferlist bl;
ret = io_ctx.getxattrs(oid, attrset);
if (ret < 0) {
- cerr << "error getting xattr set " << pool_name << "/" << oid << ": " << strerror_r(-ret, buf, sizeof(buf)) << std::endl;
+ cerr << "error getting xattr set " << pool_name << "/" << oid << ": " << cpp_strerror(ret) << std::endl;
goto out;
}
ret = rados.ioctx_create(target, target_ctx);
if (ret < 0) {
cerr << "error opening target pool " << target << ": "
- << strerror_r(-ret, buf, sizeof(buf)) << std::endl;
+ << cpp_strerror(ret) << std::endl;
goto out;
}
if (target_oloc.size()) {
ret = do_copy(io_ctx, nargs[1], target_ctx, target_obj);
if (ret < 0) {
- cerr << "error copying " << pool_name << "/" << nargs[1] << " => " << target << "/" << target_obj << ": " << strerror_r(-ret, buf, sizeof(buf)) << std::endl;
+ cerr << "error copying " << pool_name << "/" << nargs[1] << " => " << target << "/" << target_obj << ": " << cpp_strerror(ret) << std::endl;
goto out;
}
}
ret = rados.ioctx_create(target, target_ctx);
if (ret < 0) {
cerr << "error opening target pool " << target << ": "
- << strerror_r(-ret, buf, sizeof(buf)) << std::endl;
+ << cpp_strerror(ret) << std::endl;
goto out;
}
if (oloc.size()) {
ret = do_clone_data(io_ctx, nargs[1], target_ctx, target_obj);
if (ret < 0) {
- cerr << "error cloning " << pool_name << "/" << nargs[1] << " => " << target << "/" << target_obj << ": " << strerror_r(-ret, buf, sizeof(buf)) << std::endl;
+ cerr << "error cloning " << pool_name << "/" << nargs[1] << " => " << target << "/" << target_obj << ": " << cpp_strerror(ret) << std::endl;
goto out;
}
} else if (strcmp(nargs[0], "rm") == 0) {
const string & oid = *iter;
ret = io_ctx.remove(oid);
if (ret < 0) {
- cerr << "error removing " << pool_name << "/" << oid << ": " << strerror_r(-ret, buf, sizeof(buf)) << std::endl;
+ cerr << "error removing " << pool_name << "/" << oid << ": " << cpp_strerror(ret) << std::endl;
goto out;
}
}
ret = io_ctx.create(oid, true);
}
if (ret < 0) {
- cerr << "error creating " << pool_name << "/" << oid << ": " << strerror_r(-ret, buf, sizeof(buf)) << std::endl;
+ cerr << "error creating " << pool_name << "/" << oid << ": " << cpp_strerror(ret) << std::endl;
goto out;
}
}
string oid(nargs[2]);
ret = io_ctx.read(oid, outdata, 0, 0);
if (ret < 0) {
- cerr << "error reading " << pool_name << "/" << oid << ": " << strerror_r(-ret, buf, sizeof(buf)) << std::endl;
+ cerr << "error reading " << pool_name << "/" << oid << ": " << cpp_strerror(ret) << std::endl;
goto out;
}
bufferlist::iterator p = outdata.begin();
ret = rados.pool_create(nargs[1], auid, crush_rule);
if (ret < 0) {
cerr << "error creating pool " << nargs[1] << ": "
- << strerror_r(-ret, buf, sizeof(buf)) << std::endl;
+ << cpp_strerror(ret) << std::endl;
goto out;
}
cout << "successfully created pool " << nargs[1] << std::endl;
ret = do_copy_pool(rados, src_pool, target_pool);
if (ret < 0) {
cerr << "error copying pool " << src_pool << " => " << target_pool << ": "
- << strerror_r(-ret, buf, sizeof(buf)) << std::endl;
+ << cpp_strerror(ret) << std::endl;
goto out;
}
cout << "successfully copied pool " << nargs[1] << std::endl;
ret = io_ctx.snap_create(nargs[1]);
if (ret < 0) {
cerr << "error creating pool " << pool_name << " snapshot " << nargs[1]
- << ": " << strerror_r(-ret, buf, sizeof(buf)) << std::endl;
+ << ": " << cpp_strerror(ret) << std::endl;
goto out;
}
cout << "created pool " << pool_name << " snap " << nargs[1] << std::endl;
ret = io_ctx.snap_remove(nargs[1]);
if (ret < 0) {
cerr << "error removing pool " << pool_name << " snapshot " << nargs[1]
- << ": " << strerror_r(-ret, buf, sizeof(buf)) << std::endl;
+ << ": " << cpp_strerror(ret) << std::endl;
goto out;
}
cout << "removed pool " << pool_name << " snap " << nargs[1] << std::endl;
ret = io_ctx.rollback(nargs[1], nargs[2]);
if (ret < 0) {
cerr << "error rolling back pool " << pool_name << " to snapshot " << nargs[1]
- << strerror_r(-ret, buf, sizeof(buf)) << std::endl;
+ << cpp_strerror(ret) << std::endl;
goto out;
}
cout << "rolled back pool " << pool_name
ret = io_ctx.set_alloc_hint(oid, expected_object_size, expected_write_size);
if (ret < 0) {
cerr << "error setting alloc-hint " << pool_name << "/" << oid << ": "
- << strerror_r(-ret, buf, sizeof(buf)) << std::endl;
+ << cpp_strerror(ret) << std::endl;
goto out;
}
} else if (strcmp(nargs[0], "load-gen") == 0) {
ret = io_ctx.list_watchers(oid, &lw);
if (ret < 0) {
- cerr << "error listing watchers " << pool_name << "/" << oid << ": " << strerror_r(-ret, buf, sizeof(buf)) << std::endl;
+ cerr << "error listing watchers " << pool_name << "/" << oid << ": " << cpp_strerror(ret) << std::endl;
goto out;
}
else
io_ctx.snap_set_read(LIBRADOS_SNAP_DIR);
ret = io_ctx.list_snaps(oid, &ls);
if (ret < 0) {
- cerr << "error listing snap shots " << pool_name << "/" << oid << ": " << strerror_r(-ret, buf, sizeof(buf)) << std::endl;
+ cerr << "error listing snap shots " << pool_name << "/" << oid << ": " << cpp_strerror(ret) << std::endl;
goto out;
}
else