From ea30225fdb2a1c2c78f0a11d06da27009e0262a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=BD=D0=B0=D0=B1?= Date: Fri, 2 Apr 2021 21:31:23 +0200 Subject: [PATCH] zed: replace zed_file_write_n() with write(2), purge it MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We set SA_RESTART early on, which will prevent EINTRs (indeed, to the point of needing to clear it in the reaper, since it interferes with pause(2)), which is the only error zed_file_write_n() actually handled (plus, the pid write is no bigger than 12 bytes anyway) Reviewed-by: Brian Behlendorf Signed-off-by: Ahelenia ZiemiaƄska Closes #11834 --- cmd/zed/zed_conf.c | 2 +- cmd/zed/zed_file.c | 27 --------------------------- cmd/zed/zed_file.h | 2 -- 3 files changed, 1 insertion(+), 30 deletions(-) diff --git a/cmd/zed/zed_conf.c b/cmd/zed/zed_conf.c index f11d8b3985..1dbbb3b65b 100644 --- a/cmd/zed/zed_conf.c +++ b/cmd/zed/zed_conf.c @@ -515,7 +515,7 @@ zed_conf_write_pid(struct zed_conf *zcp) errno = ERANGE; zed_log_msg(LOG_ERR, "Failed to write PID file \"%s\": %s", zcp->pid_file, strerror(errno)); - } else if (zed_file_write_n(zcp->pid_fd, buf, n) != n) { + } else if (write(zcp->pid_fd, buf, n) != n) { zed_log_msg(LOG_ERR, "Failed to write PID file \"%s\": %s", zcp->pid_file, strerror(errno)); } else if (fdatasync(zcp->pid_fd) < 0) { diff --git a/cmd/zed/zed_file.c b/cmd/zed/zed_file.c index aeaa7a014c..401ab89eb4 100644 --- a/cmd/zed/zed_file.c +++ b/cmd/zed/zed_file.c @@ -24,33 +24,6 @@ #include "zed_file.h" #include "zed_log.h" -/* - * Write [n] bytes from [buf] out to [fd]. - * Return the number of bytes written, or -1 on error. - */ -ssize_t -zed_file_write_n(int fd, void *buf, size_t n) -{ - const unsigned char *p; - size_t n_left; - ssize_t n_written; - - p = buf; - n_left = n; - while (n_left > 0) { - if ((n_written = write(fd, p, n_left)) < 0) { - if (errno == EINTR) - continue; - else - return (-1); - - } - n_left -= n_written; - p += n_written; - } - return (n); -} - /* * Set an exclusive advisory lock on the open file descriptor [fd]. * Return 0 on success, 1 if a conflicting lock is held by another process, diff --git a/cmd/zed/zed_file.h b/cmd/zed/zed_file.h index 28473a545b..5cb5e88047 100644 --- a/cmd/zed/zed_file.h +++ b/cmd/zed/zed_file.h @@ -18,8 +18,6 @@ #include #include -ssize_t zed_file_write_n(int fd, void *buf, size_t n); - int zed_file_lock(int fd); int zed_file_unlock(int fd);