From 8961ce631890bb379a2519cdca899c14d26c2a78 Mon Sep 17 00:00:00 2001 From: Colin Patrick McCabe Date: Thu, 3 Feb 2011 04:10:58 -0800 Subject: [PATCH] librados: print out errs in do_import, check EINTR Signed-off-by: Colin McCabe --- src/rbd.cc | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/rbd.cc b/src/rbd.cc index 0ccc76db3c515..e93d1916246b0 100644 --- a/src/rbd.cc +++ b/src/rbd.cc @@ -15,6 +15,7 @@ #define __STDC_FORMAT_MACROS #include "config.h" +#include "common/errno.h" #include "common/common_init.h" #include "include/librados.hpp" using namespace librados; @@ -882,13 +883,14 @@ static int do_import(pool_t pool, const char *imgname, int order, const char *pa 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); -- 2.39.5