X-Git-Url: https://granicus.if.org/sourcecode?a=blobdiff_plain;f=cmd%2Fzed%2Fzed_conf.c;h=86671369c19ef08ecac6fd40c78270b210af475e;hb=HEAD;hp=3f38945c03d437d67c1cb45275a440f59e10db74;hpb=56697c42646f002c4f52f9569a8cb75b45f704d8;p=zfs diff --git a/cmd/zed/zed_conf.c b/cmd/zed/zed_conf.c index 3f38945c0..86671369c 100644 --- a/cmd/zed/zed_conf.c +++ b/cmd/zed/zed_conf.c @@ -1,27 +1,15 @@ /* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license from the top-level - * OPENSOLARIS.LICENSE or . - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each file - * and include the License file from the top-level OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* + * This file is part of the ZFS Event Daemon (ZED) + * for ZFS on Linux (ZoL) . * Developed at Lawrence Livermore National Laboratory (LLNL-CODE-403049). * Copyright (C) 2013-2014 Lawrence Livermore National Security, LLC. + * Refer to the ZoL git commit log for authoritative copyright attribution. + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License Version 1.0 (CDDL-1.0). + * You can obtain a copy of the license from the top-level file + * "OPENSOLARIS.LICENSE" or at . + * You may not use this file except in compliance with the license. */ #include @@ -99,6 +87,7 @@ zed_conf_destroy(struct zed_conf *zcp) zed_log_msg(LOG_WARNING, "Failed to close state file \"%s\": %s", zcp->state_file, strerror(errno)); + zcp->state_fd = -1; } if (zcp->pid_file) { if ((unlink(zcp->pid_file) < 0) && (errno != ENOENT)) @@ -113,21 +102,26 @@ zed_conf_destroy(struct zed_conf *zcp) zcp->pid_file, strerror(errno)); zcp->pid_fd = -1; } - if (zcp->conf_file) + if (zcp->conf_file) { free(zcp->conf_file); - - if (zcp->pid_file) + zcp->conf_file = NULL; + } + if (zcp->pid_file) { free(zcp->pid_file); - - if (zcp->zedlet_dir) + zcp->pid_file = NULL; + } + if (zcp->zedlet_dir) { free(zcp->zedlet_dir); - - if (zcp->state_file) + zcp->zedlet_dir = NULL; + } + if (zcp->state_file) { free(zcp->state_file); - - if (zcp->zedlets) + zcp->state_file = NULL; + } + if (zcp->zedlets) { zed_strings_destroy(zcp->zedlets); - + zcp->zedlets = NULL; + } free(zcp); } @@ -161,6 +155,8 @@ _zed_conf_display_help(const char *prog, int got_err) "Run daemon in the foreground."); fprintf(fp, "%*c%*s %s\n", w1, 0x20, -w2, "-M", "Lock all pages in memory."); + fprintf(fp, "%*c%*s %s\n", w1, 0x20, -w2, "-P", + "$PATH for ZED to use (only used by ZTS)."); fprintf(fp, "%*c%*s %s\n", w1, 0x20, -w2, "-Z", "Zero state file."); fprintf(fp, "\n"); @@ -190,10 +186,9 @@ _zed_conf_display_license(void) "The ZFS Event Daemon (ZED) is distributed under the terms of the", " Common Development and Distribution License (CDDL-1.0)", " .", + "", "Developed at Lawrence Livermore National Laboratory" " (LLNL-CODE-403049).", - "Copyright (C) 2013-2014" - " Lawrence Livermore National Security, LLC.", "", NULL }; @@ -254,7 +249,7 @@ _zed_conf_parse_path(char **resultp, const char *path) void zed_conf_parse_opts(struct zed_conf *zcp, int argc, char **argv) { - const char * const opts = ":hLVc:d:p:s:vfFMZ"; + const char * const opts = ":hLVc:d:p:P:s:vfFMZ"; int opt; if (!zcp || !argv || !argv[0]) @@ -282,6 +277,9 @@ zed_conf_parse_opts(struct zed_conf *zcp, int argc, char **argv) case 'p': _zed_conf_parse_path(&zcp->pid_file, optarg); break; + case 'P': + _zed_conf_parse_path(&zcp->path, optarg); + break; case 's': _zed_conf_parse_path(&zcp->state_file, optarg); break; @@ -401,19 +399,19 @@ zed_conf_scan_dir(struct zed_conf *zcp) direntp->d_name); continue; } - if ((st.st_mode & S_IWGRP) & !zcp->do_force) { + if ((st.st_mode & S_IWGRP) && !zcp->do_force) { zed_log_msg(LOG_NOTICE, "Ignoring \"%s\": writable by group", direntp->d_name); continue; } - if ((st.st_mode & S_IWOTH) & !zcp->do_force) { + if ((st.st_mode & S_IWOTH) && !zcp->do_force) { zed_log_msg(LOG_NOTICE, "Ignoring \"%s\": writable by other", direntp->d_name); continue; } - if (zed_strings_add(zedlets, direntp->d_name) < 0) { + if (zed_strings_add(zedlets, NULL, direntp->d_name) < 0) { zed_log_msg(LOG_WARNING, "Failed to register \"%s\": %s", direntp->d_name, strerror(errno)); @@ -520,7 +518,7 @@ zed_conf_write_pid(struct zed_conf *zcp) /* * Write PID file. */ - n = snprintf(buf, sizeof (buf), "%d\n", (int) getpid()); + n = snprintf(buf, sizeof (buf), "%d\n", (int)getpid()); if ((n < 0) || (n >= sizeof (buf))) { errno = ERANGE; zed_log_msg(LOG_ERR, "Failed to write PID file \"%s\": %s", @@ -644,7 +642,7 @@ zed_conf_read_state(struct zed_conf *zcp, uint64_t *eidp, int64_t etime[]) "Failed to read state file: %s", strerror(errno)); return (-1); } - if (lseek(zcp->state_fd, 0, SEEK_SET) == (off_t) -1) { + if (lseek(zcp->state_fd, 0, SEEK_SET) == (off_t)-1) { zed_log_msg(LOG_WARNING, "Failed to reposition state file offset: %s", strerror(errno)); @@ -694,7 +692,7 @@ zed_conf_write_state(struct zed_conf *zcp, uint64_t eid, int64_t etime[]) "Failed to write state file: %s", strerror(errno)); return (-1); } - if (lseek(zcp->state_fd, 0, SEEK_SET) == (off_t) -1) { + if (lseek(zcp->state_fd, 0, SEEK_SET) == (off_t)-1) { zed_log_msg(LOG_WARNING, "Failed to reposition state file offset: %s", strerror(errno));