From c79c7bddc817cc556be494897bb53224ca892b00 Mon Sep 17 00:00:00 2001 From: Andreas Schneider Date: Sat, 28 Jun 2008 15:36:30 +0200 Subject: [PATCH] Implement a safe write on local file system. This means that we try again if we got interrupted. --- src/vio/csync_vio_local.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/vio/csync_vio_local.c b/src/vio/csync_vio_local.c index 6299ed130c..2f3777dfca 100644 --- a/src/vio/csync_vio_local.c +++ b/src/vio/csync_vio_local.c @@ -100,6 +100,7 @@ ssize_t csync_vio_local_read(csync_vio_method_handle_t *fhandle, void *buf, size } ssize_t csync_vio_local_write(csync_vio_method_handle_t *fhandle, const void *buf, size_t count) { + ssize_t n = 0; fhandle_t *handle = NULL; if (fhandle == NULL) { @@ -109,7 +110,12 @@ ssize_t csync_vio_local_write(csync_vio_method_handle_t *fhandle, const void *bu handle = (fhandle_t *) fhandle; - return write(handle->fd, (char *) buf, count); + /* safe_write */ + do { + n = write(handle->fd, buf, count); + } while (n < 0 && errno == EINTR); + + return n; } off_t csync_vio_local_lseek(csync_vio_method_handle_t *fhandle, off_t offset, int whence) {