summaryrefslogtreecommitdiffstats
path: root/cmd/zed/zed.c
diff options
context:
space:
mode:
authorChris Dunlap <[email protected]>2014-10-01 14:56:07 -0700
committerBrian Behlendorf <[email protected]>2014-10-06 13:17:40 -0700
commit56697c42646f002c4f52f9569a8cb75b45f704d8 (patch)
treec1fe2889a109c7879b6686d900ae5cfb63fb3543 /cmd/zed/zed.c
parent057485504e3a4502c265813ab58e9ec8ffc2a3be (diff)
Obtain advisory lock on ZED PID file
ZED uses an advisory lock on its state file to protect against multiple instances running concurrently. However, work is planned to move this state information into the kernel, and ZED will still need to protect against starting multiple instances. This commit adds an advisory lock on the PID file to protect against starting multiple instances. A lock failure can be overridden with the "-f" (force) command-line option. The advisory lock on the state file is being retained for as long as the state information is stored in the state file. Signed-off-by: Chris Dunlap <[email protected]> Signed-off-by: Brian Behlendorf <[email protected]> Issue #2756
Diffstat (limited to 'cmd/zed/zed.c')
-rw-r--r--cmd/zed/zed.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/cmd/zed/zed.c b/cmd/zed/zed.c
index b8dbc442c..2205f7367 100644
--- a/cmd/zed/zed.c
+++ b/cmd/zed/zed.c
@@ -259,7 +259,8 @@ main(int argc, char *argv[])
if (zcp->do_memlock)
_lock_memory();
- (void) zed_conf_write_pid(zcp);
+ if ((zed_conf_write_pid(zcp) < 0) && (!zcp->do_force))
+ exit(EXIT_FAILURE);
if (!zcp->do_foreground)
_finish_daemonize();