From: Christian Brauner Date: Mon, 19 Oct 2020 09:46:08 +0000 (+0200) Subject: sync: switch to new error helpers X-Git-Tag: lxc-5.0.0~353^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=35f0c46e0da931d32c297d203831ea5da9bef72c;p=thirdparty%2Flxc.git sync: switch to new error helpers Signed-off-by: Christian Brauner --- diff --git a/src/lxc/sync.c b/src/lxc/sync.c index c98357cb6..52c065f53 100644 --- a/src/lxc/sync.c +++ b/src/lxc/sync.c @@ -23,30 +23,21 @@ static int __sync_wait(int fd, int sequence) ssize_t ret; ret = lxc_read_nointr(fd, &sync, sizeof(sync)); - if (ret < 0) { - SYSERROR("Sync wait failure"); - return -1; - } + if (ret < 0) + return log_error_errno(-1, errno, "Sync wait failure"); if (!ret) return 0; - if ((size_t)ret != sizeof(sync)) { - ERROR("Unexpected sync size: %zu expected %zu", (size_t)ret, sizeof(sync)); - return -1; - } + if ((size_t)ret != sizeof(sync)) + return log_error(-1, "Unexpected sync size: %zu expected %zu", (size_t)ret, sizeof(sync)); - if (sync == LXC_SYNC_ERROR) { - ERROR("An error occurred in another process " - "(expected sequence number %d)", sequence); - return -1; - } + if (sync == LXC_SYNC_ERROR) + return log_error(-1, "An error occurred in another process (expected sequence number %d)", sequence); + + if (sync != sequence) + return log_error(-1, "Invalid sequence number %d. Expected sequence number %d", sync, sequence); - if (sync != sequence) { - ERROR("Invalid sequence number %d. Expected sequence number %d", - sync, sequence); - return -1; - } return 0; } @@ -54,10 +45,9 @@ static int __sync_wake(int fd, int sequence) { int sync = sequence; - if (lxc_write_nointr(fd, &sync, sizeof(sync)) < 0) { - SYSERROR("Sync wake failure"); - return -1; - } + if (lxc_write_nointr(fd, &sync, sizeof(sync)) < 0) + return log_error_errno(-1, errno, "Sync wake failure"); + return 0; } @@ -65,6 +55,7 @@ static int __sync_barrier(int fd, int sequence) { if (__sync_wake(fd, sequence)) return -1; + return __sync_wait(fd, sequence+1); } @@ -103,31 +94,25 @@ int lxc_sync_init(struct lxc_handler *handler) int ret; ret = socketpair(AF_LOCAL, SOCK_STREAM, 0, handler->sync_sock); - if (ret) { - SYSERROR("failed to create synchronization socketpair"); - return -1; - } + if (ret) + return log_error_errno(-1, errno, "failed to create synchronization socketpair"); /* Be sure we don't inherit this after the exec */ - fcntl(handler->sync_sock[0], F_SETFD, FD_CLOEXEC); + ret = fcntl(handler->sync_sock[0], F_SETFD, FD_CLOEXEC); + if (ret < 0) + return log_error_errno(-1, errno, "Failed to make socket close-on-exec"); return 0; } void lxc_sync_fini_child(struct lxc_handler *handler) { - if (handler->sync_sock[0] != -1) { - close(handler->sync_sock[0]); - handler->sync_sock[0] = -1; - } + close_prot_errno_disarm(handler->sync_sock[0]); } void lxc_sync_fini_parent(struct lxc_handler *handler) { - if (handler->sync_sock[1] != -1) { - close(handler->sync_sock[1]); - handler->sync_sock[1] = -1; - } + close_prot_errno_disarm(handler->sync_sock[1]); } void lxc_sync_fini(struct lxc_handler *handler)