if (out.read_file(infile) == 0) {
cout << "read " << out.length() << " from " << infile << std::endl;
} else {
- cerr << "couldn't read from " << infile << ": " << strerror(errno) << std::endl;
+ char buf[80];
+ cerr << "couldn't read from " << infile << ": " << strerror_r(errno, buf, sizeof(buf)) << std::endl;
continue;
}
}
MonitorStore store(g_conf.mon_data);
err = store.mount();
if (err < 0) {
- cerr << "problem opening monitor store in " << g_conf.mon_data << ": " << strerror(-err) << std::endl;
+ char buf[80];
+ cerr << "problem opening monitor store in " << g_conf.mon_data << ": " << strerror_r(-err, buf, sizeof(buf)) << std::endl;
exit(1);
}
struct stat st;
int fd = ::open(fn, O_RDONLY);
if (fd < 0) {
- cerr << "can't open " << fn << ": " << strerror(errno) << std::endl;
+ char buf[80];
+ cerr << "can't open " << fn << ": " << strerror_r(errno, buf, sizeof(buf)) << std::endl;
return -errno;
}
::fstat(fd, &st);
{
int fd = ::open(fn, O_WRONLY|O_CREAT|O_TRUNC, 0644);
if (fd < 0) {
- cerr << "can't write " << fn << ": " << strerror(errno) << std::endl;
+ char buf[80];
+ cerr << "can't write " << fn << ": " << strerror_r(errno, buf, sizeof(buf)) << std::endl;
return -errno;
}
for (std::list<ptr>::const_iterator it = _buffers.begin();
if (mc.get_monmap_privately() < 0)
return -1;
+ char buf[80];
if (mkfs) {
int err = OSD::mkfs(g_conf.osd_data, g_conf.osd_journal, mc.monmap.fsid, whoami);
if (err < 0) {
- cerr << "error creating empty object store in " << g_conf.osd_data << ": " << strerror(-err) << std::endl;
+ cerr << "error creating empty object store in " << g_conf.osd_data << ": " << strerror_r(-err, buf, sizeof(buf)) << std::endl;
exit(1);
}
cout << "created object store for osd" << whoami << " fsid " << mc.monmap.fsid << " on " << g_conf.osd_data << std::endl;
int r = OSD::peek_super(g_conf.osd_data, magic, fsid, w);
if (r < 0) {
cerr << TEXT_RED << " ** " << TEXT_HAZARD << "ERROR: " << TEXT_RED
- << "unable to open OSD superblock on " << g_conf.osd_data << ": " << strerror(-r) << TEXT_NORMAL << std::endl;
+ << "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;
- derr(0) << "unable to open OSD superblock on " << g_conf.osd_data << ": " << strerror(-r) << dendl;
+ derr(0) << "unable to open OSD superblock on " << g_conf.osd_data << ": " << strerror_r(-r, buf, sizeof(buf)) << dendl;
exit(1);
}
if (w != whoami) {
bufferlist bl;
int r = bl.read_file(dinfn);
if (r < 0) {
- cerr << me << ": error reading '" << dinfn << "': " << strerror(-r) << std::endl;
+ char buf[80];
+ cerr << me << ": error reading '" << dinfn << "': " << strerror_r(-r, buf, sizeof(buf)) << std::endl;
exit(1);
}
bufferlist::iterator p = bl.begin();
crush.encode(bl);
int r = bl.write_file(outfn);
if (r < 0) {
- cerr << me << ": error writing '" << outfn << "': " << strerror(-r) << std::endl;
+ char buf[80];
+ cerr << me << ": error writing '" << outfn << "': " << strerror_r(-r, buf, sizeof(buf)) << std::endl;
exit(1);
}
if (verbose)
#endif
} else {
// hmm, try stat!
- dout(10) << "get_num_blocks ioctl(2) failed with " << errno << " " << strerror(errno) << ", using stat(2)" << dendl;
+ char buf[80];
+ dout(10) << "get_num_blocks ioctl(2) failed with " << errno << " " << strerror_r(errno, buf, sizeof(buf)) << ", using stat(2)" << dendl;
struct stat st;
fstat(fd, &st);
uint64_t bytes = st.st_size;
int r = ::writev(fd, iov, n);
if (r < 0) {
+ char buf[80];
dout(1) << "couldn't write bno " << bno << " num " << num
<< " (" << len << " bytes) in " << n << " iovs, r=" << r
- << " errno " << errno << " " << strerror(errno) << dendl;
+ << " errno " << errno << " " << strerror_r(errno, buf, sizeof(buf)) << dendl;
dout(1) << "bl is " << bl << dendl;
assert(0);
} else if (r < (int)len) {
// open?
fd = open_fd();
if (fd < 0) {
- dout(1) << "open failed, r = " << fd << " " << strerror(errno) << dendl;
+ char buf[80];
+ dout(1) << "open failed, r = " << fd << " " << strerror_r(errno, buf, sizeof(buf)) << dendl;
fd = 0;
return -1;
}
// mark xlocks "done", indicating that we are exposing uncommitted changes
mds->locker->set_xlocks_done(mdr);
+ char buf[80];
dout(10) << "early_reply " << reply->get_result()
- << " (" << strerror(-reply->get_result())
+ << " (" << strerror_r(-reply->get_result(), buf, sizeof(buf))
<< ") " << *req << dendl;
if (tracei || tracedn) {
{
MClientRequest *req = mdr->client_request;
+ char buf[80];
dout(10) << "reply_request " << reply->get_result()
- << " (" << strerror(-reply->get_result())
+ << " (" << strerror_r(-reply->get_result(), buf, sizeof(buf))
<< ") " << *req << dendl;
// note result code in session map?
void print(ostream& o) {
o << "client_reply(???:" << head.tid;
o << " = " << get_result();
- if (get_result() <= 0)
- o << " " << strerror(-get_result());
+ if (get_result() <= 0) {
+ char buf[80];
+ o << " " << strerror_r(-get_result(), buf, sizeof(buf));
+ }
if (head.op & CEPH_MDS_OP_WRITE) {
if (head.safe)
o << " safe";
out << " ack";
}
out << " = " << get_result();
- if (get_result() < 0)
- out << " (" << strerror(-get_result()) << ")";
+ if (get_result() < 0) {
+ char buf[80];
+ out << " (" << strerror_r(-get_result(), buf, sizeof(buf)) << ")";
+ }
out << ")";
}
dout(10) << "mount: assigned client" << client << " to " << addr << dendl;
paxos->wait_for_commit(new C_Mounted(this, client, (MClientMount*)m));
- ss << "client" << client << " " << addr << " mounted";
+ ss << "client" << client << " " << addr;
mon->get_logclient()->log(LOG_INFO, ss);
return true;
}
int r = monmap.read(monmap_fn);
if (r >= 0)
return 0;
- cerr << "unable to read monmap from " << monmap_fn << ": " << strerror(errno) << std::endl;
+ char buf[80];
+ cerr << "unable to read monmap from " << monmap_fn << ": " << strerror_r(errno, buf, sizeof(buf)) << std::endl;
}
// -m foo?
// create it
int err = store->mkfs();
if (err < 0) {
- cerr << "error " << err << " " << strerror(err) << std::endl;
+ char buf[80];
+ cerr << "error " << err << " " << strerror_r(err, buf, sizeof(buf)) << std::endl;
exit(1);
}
struct stat st;
int r = ::stat(fn, &st);
- //dout(15) << "exists_bl stat " << fn << " r=" << r << " errno " << errno << " " << strerror(errno) << dendl;
+ //char buf[80];
+ //dout(15) << "exists_bl stat " << fn << " r=" << r << " errno " << errno << " " << strerror_r(errno, buf, sizeof(buf)) << dendl;
return r == 0;
}
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) derr(0) << "errno on read " << strerror(errno) << dendl;
+ if (r < 0) {
+ char buf[80];
+ derr(0) << "errno on read " << strerror_r(errno, buf, sizeof(buf)) << dendl;
+ }
assert(r>0);
off += r;
}
int r = ::write(fd, it->c_str(), it->length());
if (r != (int)it->length())
derr(0) << "put_bl_ss ::write() returned " << r << " not " << it->length() << dendl;
- if (r < 0)
- derr(0) << "put_bl_ss ::write() errored out, errno is " << strerror(errno) << dendl;
+ if (r < 0) {
+ char buf[80];
+ derr(0) << "put_bl_ss ::write() errored out, errno is " << strerror_r(errno, buf, sizeof(buf)) << dendl;
+ }
}
if (sync)
if (!(create && clobber))
r = monmap.read(fn);
+ char buf[80];
if (!create && r < 0) {
- cerr << me << ": couldn't open " << fn << ": " << strerror(errno) << std::endl;
+ cerr << me << ": couldn't open " << fn << ": " << strerror_r(errno, buf, sizeof(buf)) << std::endl;
return -1;
}
else if (create && !clobber && r == 0) {
<< std::endl;
int r = monmap.write(fn);
if (r < 0) {
- cerr << "monmaptool: error writing to '" << fn << "': " << strerror(-r) << std::endl;
+ cerr << "monmaptool: error writing to '" << fn << "': " << strerror_r(-r, buf, sizeof(buf)) << std::endl;
return 1;
}
}
/* socket creation */
listen_sd = ::socket(AF_INET, SOCK_STREAM, 0);
if (listen_sd < 0) {
+ char buf[80];
derr(0) << "accepter.bind unable to create socket: "
- << strerror(errno) << dendl;
+ << strerror_r(errno, buf, sizeof(buf)) << dendl;
return -errno;
}
opened_socket();
// specific port
rc = ::bind(listen_sd, (struct sockaddr *) &listen_addr, sizeof(listen_addr));
if (rc < 0) {
+ char buf[80];
derr(0) << "accepter.bind unable to bind to " << g_my_addr.ipaddr
- << ": " << strerror(errno) << dendl;
+ << ": " << strerror_r(errno, buf, sizeof(buf)) << dendl;
return -errno;
}
} else {
break;
}
if (rc < 0) {
+ char buf[80];
derr(0) << "accepter.bind unable to bind to " << g_my_addr.ipaddr
<< " on any port in range " << CEPH_PORT_START << "-" << CEPH_PORT_LAST
- << ": " << strerror(errno) << dendl;
+ << ": " << strerror_r(errno, buf, sizeof(buf)) << dendl;
return -errno;
}
}
// listen!
rc = ::listen(listen_sd, 128);
if (rc < 0) {
+ char buf[80];
derr(0) << "accepter.bind unable to listen on " << g_my_addr.ipaddr
- << ": " << strerror(errno) << dendl;
+ << ": " << strerror_r(errno, buf, sizeof(buf)) << dendl;
return -errno;
}
// block SIGUSR1
pthread_sigmask(SIG_BLOCK, &sigmask, NULL);
+ char buf[80];
+
while (!done) {
FD_ZERO(&fds);
FD_SET(listen_sd, &fds);
if (g_conf.ms_tcp_nodelay) {
int flag = 1;
int r = ::setsockopt(sd, IPPROTO_TCP, TCP_NODELAY, (char*)&flag, sizeof(flag));
- if (r < 0)
- dout(0) << "accepter could't set TCP_NODELAY: " << strerror(errno) << dendl;
+ if (r < 0)
+ dout(0) << "accepter could't set TCP_NODELAY: " << strerror_r(errno, buf, sizeof(buf)) << dendl;
}
rank->lock.Lock();
}
rank->lock.Unlock();
} else {
- dout(0) << "accepter no incoming connection? sd = " << sd << " errno " << errno << " " << strerror(errno) << dendl;
+ dout(0) << "accepter no incoming connection? sd = " << sd << " errno " << errno << " " << strerror_r(errno, buf, sizeof(buf)) << dendl;
if (++errors > 4)
break;
}
socklen_t len = sizeof(socket_addr.ipaddr);
int r = ::getpeername(sd, (sockaddr*)&socket_addr.ipaddr, &len);
if (r < 0) {
- dout(0) << "accept failed to getpeername " << errno << " " << strerror(errno) << dendl;
+ char buf[80];
+ dout(0) << "accept failed to getpeername " << errno << " " << strerror_r(errno, buf, sizeof(buf)) << dendl;
state = STATE_CLOSED;
return -1;
}
// create socket?
sd = ::socket(AF_INET, SOCK_STREAM, 0);
if (sd < 0) {
- dout(-1) << "connect couldn't created socket " << strerror(errno) << dendl;
+ char buf[80];
+ dout(-1) << "connect couldn't created socket " << strerror_r(errno, buf, sizeof(buf)) << dendl;
assert(0);
goto fail;
}
dout(10) << "binding to " << myAddr << dendl;
rc = ::bind(sd, (struct sockaddr *)&myAddr, sizeof(myAddr));
if (rc < 0) {
+ char buf[80];
dout(2) << "bind error " << myAddr
- << ", " << errno << ": " << strerror(errno) << dendl;
+ << ", " << errno << ": " << strerror_r(errno, buf, sizeof(buf)) << dendl;
goto fail;
}
+ char buf[80];
+
// connect!
dout(10) << "connecting to " << peer_addr.ipaddr << dendl;
rc = ::connect(sd, (sockaddr*)&peer_addr.ipaddr, sizeof(peer_addr.ipaddr));
if (rc < 0) {
dout(2) << "connect error " << peer_addr.ipaddr
- << ", " << errno << ": " << strerror(errno) << dendl;
+ << ", " << errno << ": " << strerror_r(errno, buf, sizeof(buf)) << dendl;
goto fail;
}
int flag = 1;
int r = ::setsockopt(sd, IPPROTO_TCP, TCP_NODELAY, (char*)&flag, sizeof(flag));
if (r < 0)
- dout(0) << "connect couldn't set TCP_NODELAY: " << strerror(errno) << dendl;
+ dout(0) << "connect couldn't set TCP_NODELAY: " << strerror_r(errno, buf, sizeof(buf)) << dendl;
}
// verify banner
// FIXME: this should be non-blocking, or in some other way verify the banner as we get it.
rc = tcp_read(sd, (char*)&banner, strlen(CEPH_BANNER));
if (rc < 0) {
- dout(2) << "connect couldn't read banner, " << strerror(errno) << dendl;
+ dout(2) << "connect couldn't read banner, " << strerror_r(errno, buf, sizeof(buf)) << dendl;
goto fail;
}
if (memcmp(banner, CEPH_BANNER, strlen(CEPH_BANNER))) {
msg.msg_iovlen = 1;
msglen = msgvec[0].iov_len;
if (do_sendmsg(sd, &msg, msglen)) {
- dout(2) << "connect couldn't write my banner, " << strerror(errno) << dendl;
+ dout(2) << "connect couldn't write my banner, " << strerror_r(errno, buf, sizeof(buf)) << dendl;
goto fail;
}
// identify peer
rc = tcp_read(sd, (char*)&paddr, sizeof(paddr));
if (rc < 0) {
- dout(2) << "connect couldn't read peer addr, " << strerror(errno) << dendl;
+ dout(2) << "connect couldn't read peer addr, " << strerror_r(errno, buf, sizeof(buf)) << dendl;
goto fail;
}
dout(20) << "connect read peer addr " << paddr << " on socket " << sd << dendl;
// peer addr for me
rc = tcp_read(sd, (char*)&peer_addr_for_me, sizeof(peer_addr_for_me));
if (rc < 0) {
- dout(2) << "connect couldn't read peer addr for me, " << strerror(errno) << dendl;
+ dout(2) << "connect couldn't read peer addr for me, " << strerror_r(errno, buf, sizeof(buf)) << dendl;
goto fail;
}
dout(20) << "connect peer addr for me is " << peer_addr_for_me << dendl;
msg.msg_iovlen = 1;
msglen = msgvec[0].iov_len;
if (do_sendmsg(sd, &msg, msglen)) {
- dout(2) << "connect couldn't write my addr, " << strerror(errno) << dendl;
+ dout(2) << "connect couldn't write my addr, " << strerror_r(errno, buf, sizeof(buf)) << dendl;
goto fail;
}
dout(10) << "connect sent my addr " << rank->rank_addr << dendl;
dout(10) << "connect sending gseq=" << gseq << " cseq=" << cseq
<< " proto=" << connect.protocol_version << dendl;
if (do_sendmsg(sd, &msg, msglen)) {
- dout(2) << "connect couldn't write gseq, cseq, " << strerror(errno) << dendl;
+ dout(2) << "connect couldn't write gseq, cseq, " << strerror_r(errno, buf, sizeof(buf)) << dendl;
goto fail;
}
dout(20) << "connect wrote (self +) cseq, waiting for reply" << dendl;
ceph_msg_connect_reply reply;
if (tcp_read(sd, (char*)&reply, sizeof(reply)) < 0) {
- dout(2) << "connect read reply " << strerror(errno) << dendl;
+ dout(2) << "connect read reply " << strerror_r(errno, buf, sizeof(buf)) << dendl;
goto fail;
}
dout(20) << "connect got reply tag " << (int)reply.tag
dout(10) << "fault already connecting, reader shutting down" << dendl;
return;
}
-
- if (!onconnect) dout(2) << "fault " << errno << ": " << strerror(errno) << dendl;
+
+ char buf[80];
+ if (!onconnect) dout(2) << "fault " << errno << ": " << strerror_r(errno, buf, sizeof(buf)) << dendl;
if (state == STATE_CLOSED ||
state == STATE_CLOSING) {
lock.Unlock();
+ char buf[80];
char tag = -1;
dout(20) << "reader reading tag..." << dendl;
int rc = tcp_read(sd, (char*)&tag, 1);
if (rc < 0) {
lock.Lock();
- dout(2) << "reader couldn't read tag, " << strerror(errno) << dendl;
+ dout(2) << "reader couldn't read tag, " << strerror_r(errno, buf, sizeof(buf)) << dendl;
fault(false, true);
continue;
}
int rc = tcp_read( sd, (char*)&seq, sizeof(seq));
lock.Lock();
if (rc < 0) {
- dout(2) << "reader couldn't read ack seq, " << strerror(errno) << dendl;
+ dout(2) << "reader couldn't read ack seq, " << strerror_r(errno, buf, sizeof(buf)) << dendl;
fault(false, true);
} else if (state != STATE_CLOSED) {
dout(15) << "reader got ack seq " << seq << dendl;
lock.Lock();
if (!m) {
- derr(2) << "reader read null message, " << strerror(errno) << dendl;
+ derr(2) << "reader read null message, " << strerror_r(errno, buf, sizeof(buf)) << dendl;
fault(false, true);
continue;
}
*/
void SimpleMessenger::Pipe::writer()
{
+ char buf[80];
+
lock.Lock();
while (state != STATE_CLOSED) {// && state != STATE_WAIT) {
int rc = write_keepalive();
lock.Lock();
if (rc < 0) {
- dout(2) << "writer couldn't write keepalive, " << strerror(errno) << dendl;
+ dout(2) << "writer couldn't write keepalive, " << strerror_r(errno, buf, sizeof(buf)) << dendl;
fault();
continue;
}
int rc = write_ack(send_seq);
lock.Lock();
if (rc < 0) {
- dout(2) << "writer couldn't write ack, " << strerror(errno) << dendl;
+ dout(2) << "writer couldn't write ack, " << strerror_r(errno, buf, sizeof(buf)) << dendl;
fault();
continue;
}
lock.Lock();
if (rc < 0) {
derr(1) << "writer error sending " << m << ", "
- << errno << ": " << strerror(errno) << dendl;
+ << errno << ": " << strerror_r(errno, buf, sizeof(buf)) << dendl;
fault();
}
m->put();
int SimpleMessenger::Pipe::do_sendmsg(int sd, struct msghdr *msg, int len, bool more)
{
+ char buf[80];
+
while (len > 0) {
if (0) { // sanity
int l = 0;
if (r == 0)
dout(10) << "do_sendmsg hmm do_sendmsg got r==0!" << dendl;
if (r < 0) {
- dout(1) << "do_sendmsg error " << strerror(errno) << dendl;
+ dout(1) << "do_sendmsg error " << strerror_r(errno, buf, sizeof(buf)) << dendl;
return -1;
}
if (state == STATE_CLOSED) {
int FileJournal::_open(bool forwrite, bool create)
{
+ char buf[80];
int flags;
if (forwrite) {
::close(fd);
fd = ::open(fn.c_str(), flags, 0644);
if (fd < 0) {
- dout(2) << "_open failed " << errno << " " << strerror(errno) << dendl;
+ dout(2) << "_open failed " << errno << " " << strerror_r(errno, buf, sizeof(buf)) << dendl;
return -errno;
}
int FileJournal::create()
{
+ char buf[80];
dout(2) << "create " << fn << dendl;
int err = _open(true, true);
buffer::ptr bp = prepare_header();
int r = ::pwrite(fd, bp.c_str(), bp.length(), 0);
if (r < 0) {
- dout(0) << "create write header error " << errno << " " << strerror(errno) << dendl;
+ dout(0) << "create write header error " << errno << " " << strerror_r(errno, buf, sizeof(buf)) << dendl;
return -errno;
}
memset(&header, 0, sizeof(header)); // zero out (read may fail)
r = ::pread(fd, &header, sizeof(header), 0);
}
- if (r < 0)
- dout(0) << "read_header error " << errno << " " << strerror(errno) << dendl;
+ if (r < 0) {
+ char buf[80];
+ dout(0) << "read_header error " << errno << " " << strerror_r(errno, buf, sizeof(buf)) << dendl;
+ }
print_header();
}
it++) {
if ((*it).length() == 0) continue; // blank buffer.
int r = ::write(fd, (char*)(*it).c_str(), (*it).length());
- if (r < 0)
- derr(0) << "do_write failed with " << errno << " " << strerror(errno)
+ if (r < 0) {
+ char buf[80];
+ derr(0) << "do_write failed with " << errno << " " << strerror_r(errno, buf, sizeof(buf))
<< " with " << (void*)(*it).c_str() << " len " << (*it).length()
<< dendl;
+ }
pos += (*it).length();
}
if (!directio) {
l.l_len = 0;
int r = ::fcntl(fsid_fd, F_SETLK, &l);
if (r < 0) {
- derr(0) << "mount failed to lock " << basedir << "/fsid, is another cosd still running? " << strerror(errno) << dendl;
+ char buf[80];
+ derr(0) << "mount failed to lock " << basedir << "/fsid, is another cosd still running? " << strerror_r(errno, buf, sizeof(buf)) << dendl;
return -errno;
}
return 0;
int FileStore::mount()
{
+ char buf[80];
+
if (g_conf.filestore_dev) {
dout(0) << "mounting" << dendl;
char cmd[100];
struct stat st;
int r = ::stat(basedir.c_str(), &st);
if (r != 0) {
- derr(0) << "unable to stat basedir " << basedir << ", " << strerror(errno) << dendl;
+ derr(0) << "unable to stat basedir " << basedir << ", " << strerror_r(errno, buf, sizeof(buf)) << dendl;
return -errno;
}
<< " " << strerror(errno)
<< dendl;*/
if (x != y) {
- derr(0) << "xattrs don't appear to work (" << strerror(errno) << ") on " << basedir << ", be sure to mount underlying file system with 'user_xattr' option" << dendl;
+ derr(0) << "xattrs don't appear to work (" << strerror_r(errno, buf, sizeof(buf)) << ") on " << basedir << ", be sure to mount underlying file system with 'user_xattr' option" << dendl;
return -errno;
}
}
if (r == -EBADF) {
dout(0) << "mount detected shiny new btrfs" << dendl;
} else {
- dout(0) << "mount detected dingey old btrfs (r=" << r << " " << strerror(-r) << ")" << dendl;
+ dout(0) << "mount detected dingey old btrfs (r=" << r << " " << strerror_r(-r, buf, sizeof(buf)) << ")" << dendl;
btrfs = 1;
}
} else {
- dout(0) << "mount did NOT detect btrfs: " << strerror(-r) << dendl;
+ dout(0) << "mount did NOT detect btrfs: " << strerror_r(-r, buf, sizeof(buf)) << dendl;
btrfs = 0;
}
!g_conf.filestore_btrfs_trans)
return 0;
+ char buf[80];
int fd = ::open(basedir.c_str(), O_RDONLY);
if (fd < 0) {
- derr(0) << "transaction_start got " << strerror(errno)
+ derr(0) << "transaction_start got " << strerror_r(errno, buf, sizeof(buf))
<< " from btrfs open" << dendl;
assert(0);
}
if (::ioctl(fd, BTRFS_IOC_TRANS_START) < 0) {
- derr(0) << "transaction_start got " << strerror(errno)
+ derr(0) << "transaction_start got " << strerror_r(errno, buf, sizeof(buf))
<< " from btrfs ioctl" << dendl;
::close(fd);
return -errno;
if (trans->len) {
r = ::ioctl(fsid_fd, BTRFS_IOC_USERTRANS, (unsigned long)trans);
if (r < 0) {
- derr(0) << "apply_transaction_end got " << strerror(errno)
+ derr(0) << "apply_transaction_end got " << strerror_r(errno, buf, sizeof(buf))
<< " from btrfs usertrans ioctl" << dendl;
r = -errno;
}
int r;
int fd = ::open(fn, O_RDONLY);
if (fd < 0) {
- dout(10) << "read couldn't open " << fn << " errno " << errno << " " << strerror(errno) << dendl;
+ char buf[80];
+ dout(10) << "read couldn't open " << fn << " errno " << errno << " " << strerror_r(errno, buf, sizeof(buf)) << dendl;
r = -errno;
} else {
__u64 actual = ::lseek64(fd, offset, SEEK_SET);
dout(15) << "write " << fn << " " << offset << "~" << len << dendl;
int r;
+ char buf[80];
int flags = O_WRONLY|O_CREAT;
int fd = ::open(fn, flags, 0644);
if (fd < 0) {
- derr(0) << "write couldn't open " << fn << " flags " << flags << " errno " << errno << " " << strerror(errno) << dendl;
+ derr(0) << "write couldn't open " << fn << " flags " << flags << " errno " << errno << " " << strerror_r(errno, buf, sizeof(buf)) << dendl;
r = -errno;
} else {
if (r > 0)
did += r;
else {
- derr(0) << "couldn't write to " << fn << " len " << len << " off " << offset << " errno " << errno << " " << strerror(errno) << dendl;
+ derr(0) << "couldn't write to " << fn << " len " << len << " off " << offset << " errno " << errno << " " << strerror_r(errno, buf, sizeof(buf)) << dendl;
}
}
if (did < 0) {
- derr(0) << "couldn't write to " << fn << " len " << len << " off " << offset << " errno " << errno << " " << strerror(errno) << dendl;
+ derr(0) << "couldn't write to " << fn << " len " << len << " off " << offset << " errno " << errno << " " << strerror_r(errno, buf, sizeof(buf)) << dendl;
}
::close(fd);
val = "";
r = do_setxattr(fn, n, val, p->second.length());
if (r < 0) {
- cerr << "error setxattr " << strerror(errno) << std::endl;
+ char buf[80];
+ cerr << "error setxattr " << strerror_r(errno, buf, sizeof(buf)) << std::endl;
break;
}
}
int err = journal->open(op_seq+1);
if (err < 0) {
+ char buf[80];
dout(3) << "journal_replay open failed with" << err
- << " " << strerror(err) << dendl;
+ << " " << strerror_r(err, buf, sizeof(buf)) << dendl;
delete journal;
journal = 0;
return err;
r = bl.read_file(fn);
osdmap.decode(bl);
}
+ char buf[80];
if (!createsimple && r < 0) {
- cerr << me << ": couldn't open " << fn << ": " << strerror(errno) << std::endl;
+ cerr << me << ": couldn't open " << fn << ": " << strerror_r(errno, buf, sizeof(buf)) << std::endl;
return -1;
}
else if (createsimple && !clobber && r == 0) {
<< std::endl;
int r = bl.write_file(fn);
if (r < 0) {
- cerr << "osdmaptool: error writing to '" << fn << "': " << strerror(-r) << std::endl;
+ cerr << "osdmaptool: error writing to '" << fn << "': " << strerror_r(-r, buf, sizeof(buf)) << std::endl;
return 1;
}
}
}
int ret = 0;
+ char buf[80];
// open pool?
rados_pool_t p;
if (pool) {
ret = rados.open_pool(pool, &p);
if (ret < 0) {
- cerr << "error opening pool " << pool << ": " << strerror(-ret) << std::endl;
+ cerr << "error opening pool " << pool << ": " << strerror_r(-ret, buf, sizeof(buf)) << std::endl;
goto out;
}
}
if (snapname) {
ret = rados.snap_lookup(p, snapname, &snapid);
if (ret < 0) {
- cerr << "error looking up snap '" << snapname << "': " << strerror(-ret) << std::endl;
+ cerr << "error looking up snap '" << snapname << "': " << strerror_r(-ret, buf, sizeof(buf)) << std::endl;
goto out;
}
}
list<object_t> vec;
ret = rados.list(p, 1 << 10, vec, ctx);
if (ret < 0) {
- cerr << "got error: " << strerror(-ret) << std::endl;
+ cerr << "got error: " << strerror_r(-ret, buf, sizeof(buf)) << std::endl;
goto out;
}
if (vec.empty())
object_t oid(nargs[1]);
ret = rados.read(p, oid, 0, outdata, 0);
if (ret < 0) {
- cerr << "error reading " << pool << "/" << oid << ": " << strerror(-ret) << std::endl;
+ cerr << "error reading " << pool << "/" << oid << ": " << strerror_r(-ret, buf, sizeof(buf)) << std::endl;
goto out;
}
} else {
ret = indata.read_file(nargs[2]);
if (ret) {
- cerr << "error reading input file " << nargs[2] << ": " << strerror(-ret) << std::endl;
+ cerr << "error reading input file " << nargs[2] << ": " << strerror_r(-ret, buf, sizeof(buf)) << std::endl;
goto out;
}
}
ret = rados.write_full(p, oid, indata);
if (ret < 0) {
- cerr << "error writing " << pool << "/" << oid << ": " << strerror(-ret) << std::endl;
+ cerr << "error writing " << pool << "/" << oid << ": " << strerror_r(-ret, buf, sizeof(buf)) << std::endl;
goto out;
}
}
object_t oid(nargs[1]);
ret = rados.remove(p, oid);
if (ret < 0) {
- cerr << "error removing " << pool << "/" << oid << ": " << strerror(-ret) << std::endl;
+ cerr << "error removing " << pool << "/" << oid << ": " << strerror_r(-ret, buf, sizeof(buf)) << std::endl;
goto out;
}
}
ret = rados.snap_create(p, nargs[1]);
if (ret < 0) {
cerr << "error creating pool " << pool << " snapshot " << nargs[1]
- << ": " << strerror(-ret) << std::endl;
+ << ": " << strerror_r(-ret, buf, sizeof(buf)) << std::endl;
goto out;
}
cout << "created pool " << pool << " snap " << nargs[1] << std::endl;
ret = rados.snap_remove(p, nargs[1]);
if (ret < 0) {
cerr << "error removing pool " << pool << " snapshot " << nargs[1]
- << ": " << strerror(-ret) << std::endl;
+ << ": " << strerror_r(-ret, buf, sizeof(buf)) << std::endl;
goto out;
}
cout << "removed pool " << pool << " snap " << nargs[1] << std::endl;