From 3dcae53e38021a61c10de1414195926c339d1c89 Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Tue, 5 Nov 2013 21:56:01 +1100 Subject: [PATCH] Return ETIMEDOUT regardless if we fail in cgsem_mswait since we may be waiting on it on shutdown and the return response is harmless. --- util.c | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/util.c b/util.c index f5472c30..d7d37002 100644 --- a/util.c +++ b/util.c @@ -2579,11 +2579,14 @@ int _cgsem_mswait(cgsem_t *cgsem, int ms, const char *file, const char *func, co ret = read(fd, &buf, 1); return 0; } - if (likely(!ret)) - return ETIMEDOUT; - quitfrom(1, file, func, line, "Failed to sem_timedwait errno=%d cgsem=0x%p", errno, cgsem); - /* We don't reach here */ - return 0; + + /* Harmless to time out regardless here since we may be waiting on sems + * during shutdown. */ + if (unlikely(ret)) { + applog(LOG_WARNING, "Failed to sem_timedwait %s %s %d errno=%d cgsem=0x%p", + file, func, line, errno, cgsem); + } + return ETIMEDOUT; } #else void _cgsem_init(cgsem_t *cgsem, const char *file, const char *func, const int line) @@ -2617,12 +2620,13 @@ int _cgsem_mswait(cgsem_t *cgsem, int ms, const char *file, const char *func, co timeraddspec(&abs_timeout, &ts_now); ret = sem_timedwait(cgsem, &abs_timeout); - if (ret) { - if (likely(sock_timeout())) - return ETIMEDOUT; - quitfrom(1, file, func, line, "Failed to sem_timedwait errno=%d cgsem=0x%p", errno, cgsem); + /* Harmless to time out regardless here since we may be waiting on sems + * during shutdown. */ + if (unlikely(ret && !sock_timeout())) { + applog(LOG_WARNING, "Failed to sem_timedwait %s %s %d errno=%d cgsem=0x%p", + file, func, line, errno, cgsem); } - return 0; + return ETIMEDOUT; } void cgsem_destroy(cgsem_t *cgsem)