diff options
author | Chris Dunlap <[email protected]> | 2014-10-01 14:56:07 -0700 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2014-10-06 13:17:40 -0700 |
commit | 56697c42646f002c4f52f9569a8cb75b45f704d8 (patch) | |
tree | c1fe2889a109c7879b6686d900ae5cfb63fb3543 /cmd/zed/zed.c | |
parent | 057485504e3a4502c265813ab58e9ec8ffc2a3be (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.c | 3 |
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(); |