diff --git a/cmd/zed/zed_exec.c b/cmd/zed/zed_exec.c old mode 100644 new mode 100755 index 1d040ccd56..1a3b76d076 --- a/cmd/zed/zed_exec.c +++ b/cmd/zed/zed_exec.c @@ -106,10 +106,11 @@ _zed_exec_fork_child(uint64_t eid, const char *dir, const char *prog, return; } else if (pid == 0) { (void) umask(022); - fd = open("/dev/null", O_RDWR); - (void) dup2(fd, STDIN_FILENO); - (void) dup2(fd, STDOUT_FILENO); - (void) dup2(fd, STDERR_FILENO); + if ((fd = open("/dev/null", O_RDWR)) != -1) { + (void) dup2(fd, STDIN_FILENO); + (void) dup2(fd, STDOUT_FILENO); + (void) dup2(fd, STDERR_FILENO); + } (void) dup2(zfd, ZEVENT_FILENO); zed_file_close_from(ZEVENT_FILENO + 1); execle(path, prog, NULL, env); diff --git a/tests/zfs-tests/cmd/dir_rd_update/dir_rd_update.c b/tests/zfs-tests/cmd/dir_rd_update/dir_rd_update.c old mode 100644 new mode 100755 index 4a2fa65f5d..3e075e3d70 --- a/tests/zfs-tests/cmd/dir_rd_update/dir_rd_update.c +++ b/tests/zfs-tests/cmd/dir_rd_update/dir_rd_update.c @@ -94,6 +94,12 @@ main(int argc, char **argv) int rdret; int j = 0; + if (fd < 0) { + (void) printf("%s: open <%s> again failed:" + " errno = %d\n", argv[0], dirpath, errno); + exit(-1); + } + while (j < op_num) { (void) sleep(1); rdret = read(fd, buf, 16); @@ -107,6 +113,12 @@ main(int argc, char **argv) int chownret; int k = 0; + if (fd < 0) { + (void) printf("%s: open(<%s>, O_RDONLY) again failed:" + " errno (decimal)=%d\n", argv[0], dirpath, errno); + exit(-1); + } + while (k < op_num) { (void) sleep(1); chownret = fchown(fd, 0, 0); diff --git a/tests/zfs-tests/cmd/rm_lnkcnt_zero_file/rm_lnkcnt_zero_file.c b/tests/zfs-tests/cmd/rm_lnkcnt_zero_file/rm_lnkcnt_zero_file.c old mode 100644 new mode 100755 index ee85a207d3..7986851efa --- a/tests/zfs-tests/cmd/rm_lnkcnt_zero_file/rm_lnkcnt_zero_file.c +++ b/tests/zfs-tests/cmd/rm_lnkcnt_zero_file/rm_lnkcnt_zero_file.c @@ -103,10 +103,15 @@ writer(void *a) int ret; while (TRUE) { - (void) close (*fd); + if (*fd != -1) + (void) close (*fd); + *fd = open(filebase, O_APPEND | O_RDWR | O_CREAT, 0644); - if (*fd < 0) - perror("refreshing file"); + if (*fd == -1) { + perror("fail to open test file, refreshing it"); + continue; + } + ret = write(*fd, "test\n", 5); if (ret != 5) perror("writing file");