From: Noah Watkins Date: Sun, 22 Sep 2013 18:02:34 +0000 (-0700) Subject: compat: define replacement TEMP_FAILURE_RETRY X-Git-Tag: v0.74~17^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F917%2Fhead;p=ceph.git compat: define replacement TEMP_FAILURE_RETRY Not all platforms have it. Signed-off-by: Noah Watkins --- diff --git a/src/common/safe_io.c b/src/common/safe_io.c index 16cc7293d9c..0b31157cd51 100644 --- a/src/common/safe_io.c +++ b/src/common/safe_io.c @@ -22,6 +22,7 @@ #include #include "common/safe_io.h" +#include "include/compat.h" ssize_t safe_read(int fd, void *buf, size_t count) { diff --git a/src/include/compat.h b/src/include/compat.h index a410acb35f6..f9fd9a6f1f0 100644 --- a/src/include/compat.h +++ b/src/include/compat.h @@ -15,8 +15,16 @@ #if defined(__FreeBSD__) #define lseek64(fd, offset, whence) lseek(fd, offset, whence) #define ENODATA 61 -#define TEMP_FAILURE_RETRY #define MSG_MORE 0 #endif /* !__FreeBSD__ */ +#ifndef TEMP_FAILURE_RETRY +#define TEMP_FAILURE_RETRY(expression) ({ \ + typeof(expression) __result; \ + do { \ + __result = (expression); \ + } while (__result == -1 && errno == EINTR); \ + __result; }) +#endif + #endif /* !CEPH_COMPAT_H */ diff --git a/src/log/Log.cc b/src/log/Log.cc index afeb1208002..f500e3ebf0a 100644 --- a/src/log/Log.cc +++ b/src/log/Log.cc @@ -13,6 +13,7 @@ #include "common/safe_io.h" #include "common/Clock.h" #include "include/assert.h" +#include "include/compat.h" #define DEFAULT_MAX_NEW 100 #define DEFAULT_MAX_RECENT 10000 diff --git a/src/mon/LogMonitor.cc b/src/mon/LogMonitor.cc index a545242577d..b60656f5f92 100644 --- a/src/mon/LogMonitor.cc +++ b/src/mon/LogMonitor.cc @@ -30,6 +30,7 @@ #include "common/config.h" #include "include/assert.h" #include "include/str_list.h" +#include "include/compat.h" #define dout_subsys ceph_subsys_mon #undef dout_prefix diff --git a/src/tools/rados/rados.cc b/src/tools/rados/rados.cc index ad8eaa3e1a4..6c349ad87e1 100644 --- a/src/tools/rados/rados.cc +++ b/src/tools/rados/rados.cc @@ -42,6 +42,7 @@ using namespace librados; #include #include "cls/lock/cls_lock_client.h" +#include "include/compat.h" int rados_tool_sync(const std::map < std::string, std::string > &opts, std::vector &args);