diff --git a/src/tools/RadosDump.cc b/src/tools/RadosDump.cc index 542915e40e458..43ae78ff1c1f4 100644 --- a/src/tools/RadosDump.cc +++ b/src/tools/RadosDump.cc @@ -62,7 +62,7 @@ int RadosDump::get_footer(footer *f) bytes = ebl.read_fd(file_fd, sh.footer_size); if ((size_t)bytes != sh.footer_size) { cerr << "Unexpected EOF" << std::endl; - return EFAULT; + return -EFAULT; } f->decode(ebliter); diff --git a/src/tools/rados/rados.cc b/src/tools/rados/rados.cc index a317ab88f05b6..53287c7d9b8c4 100644 --- a/src/tools/rados/rados.cc +++ b/src/tools/rados/rados.cc @@ -454,7 +454,8 @@ static int do_put(IoCtx& io_ctx, RadosStriper& striper, } ret = 0; out: - VOID_TEMP_FAILURE_RETRY(close(fd)); + if (fd != STDOUT_FILENO) + VOID_TEMP_FAILURE_RETRY(close(fd)); delete[] buf; return ret; } @@ -3348,6 +3349,11 @@ static int rados_tool_common(const std::map < std::string, std::string > &opts, } ret = PoolDump(file_fd).dump(&io_ctx); + + if (file_fd != STDIN_FILENO) { + VOID_TEMP_FAILURE_RETRY(::close(file_fd)); + } + if (ret < 0) { cerr << "error from export: " << cpp_strerror(ret) << std::endl; @@ -3393,6 +3399,11 @@ static int rados_tool_common(const std::map < std::string, std::string > &opts, } ret = RadosImport(file_fd, 0, dry_run).import(io_ctx, no_overwrite); + + if (file_fd != STDIN_FILENO) { + VOID_TEMP_FAILURE_RETRY(::close(file_fd)); + } + if (ret < 0) { cerr << "error from import: " << cpp_strerror(ret) << std::endl; diff --git a/src/tools/radosacl.cc b/src/tools/radosacl.cc index 1c482ed7edd24..89989f21418e6 100644 --- a/src/tools/radosacl.cc +++ b/src/tools/radosacl.cc @@ -52,7 +52,7 @@ typedef __u32 ACLFlags; inline bool operator<(const ACLID& l, const ACLID& r) { - return (memcmp(&l, &r, ID_SIZE) > 0); + return (memcmp(&l, &r, ID_SIZE) < 0); } struct ACLPair { @@ -176,26 +176,6 @@ int main(int argc, const char **argv) cout << "read result=" << bl2.c_str() << std::endl; cout << "size=" << size << std::endl; -#if 0 - Rados::ListCtx ctx; - int entries; - do { - list vec; - r = rados.list(io_ctx, 2, vec, ctx); - entries = vec.size(); - cout << "list result=" << r << " entries=" << entries << std::endl; - list::iterator iter; - for (iter = vec.begin(); iter != vec.end(); ++iter) { - cout << *iter << std::endl; - } - } while (entries); -#endif -#if 0 - r = rados.remove(io_ctx, oid); - cout << "remove result=" << r << std::endl; - rados.close_io_ctx(io_ctx); -#endif - return 0; }