zed: replace zed_file_write_n() with write(2), purge it
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 <behlendorf1@llnl.gov> Signed-off-by: Ahelenia Ziemiańska <nabijaczleweli@nabijaczleweli.xyz> Closes #11834
This commit is contained in:
parent
3d62acf0ad
commit
54f6daea7a
|
@ -515,7 +515,7 @@ zed_conf_write_pid(struct zed_conf *zcp)
|
||||||
errno = ERANGE;
|
errno = ERANGE;
|
||||||
zed_log_msg(LOG_ERR, "Failed to write PID file \"%s\": %s",
|
zed_log_msg(LOG_ERR, "Failed to write PID file \"%s\": %s",
|
||||||
zcp->pid_file, strerror(errno));
|
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",
|
zed_log_msg(LOG_ERR, "Failed to write PID file \"%s\": %s",
|
||||||
zcp->pid_file, strerror(errno));
|
zcp->pid_file, strerror(errno));
|
||||||
} else if (fdatasync(zcp->pid_fd) < 0) {
|
} else if (fdatasync(zcp->pid_fd) < 0) {
|
||||||
|
|
|
@ -24,33 +24,6 @@
|
||||||
#include "zed_file.h"
|
#include "zed_file.h"
|
||||||
#include "zed_log.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].
|
* 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,
|
* Return 0 on success, 1 if a conflicting lock is held by another process,
|
||||||
|
|
|
@ -18,8 +18,6 @@
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
ssize_t zed_file_write_n(int fd, void *buf, size_t n);
|
|
||||||
|
|
||||||
int zed_file_lock(int fd);
|
int zed_file_lock(int fd);
|
||||||
|
|
||||||
int zed_file_unlock(int fd);
|
int zed_file_unlock(int fd);
|
||||||
|
|
Loading…
Reference in New Issue