#define __STDC_FORMAT_MACROS
#include "config.h"
+#include "common/errno.h"
#include "common/common_init.h"
#include "include/librados.hpp"
using namespace librados;
uint64_t len = seg_left;
bufferptr p(len);
cerr << "reading " << len << " bytes at offset " << file_pos << std::endl;
- ssize_t ret = pread(fd, p.c_str(), len, file_pos);
- if (ret < 0) {
- r = -errno;
- cerr << "error reading file\n" << std::endl;
- goto done;
- } else {
- len = ret;
+ {
+ ssize_t rval = TEMP_FAILURE_RETRY(::pread(fd, p.c_str(), len, file_pos));
+ if (rval < 0) {
+ r = -errno;
+ cerr << "failed to read file: " << cpp_strerror(r) << std::endl;
+ goto done;
+ }
+ len = rval;
}
bufferlist bl;
bl.append(p);