diff options
author | Petr Rockai <prockai@redhat.com> | 2010-10-20 15:12:12 +0000 |
---|---|---|
committer | Petr Rockai <prockai@redhat.com> | 2010-10-20 15:12:12 +0000 |
commit | d95a85ca360767fa41ede89545a70b2aebcad111 (patch) | |
tree | d417f8c88cb648ed6fa319b7de320074c1a307d4 /libdm/libdm-file.c | |
parent | f7311db64f8a0986a3829436894359d0918e1053 (diff) | |
download | lvm2-d95a85ca360767fa41ede89545a70b2aebcad111.tar.gz lvm2-d95a85ca360767fa41ede89545a70b2aebcad111.tar.xz lvm2-d95a85ca360767fa41ede89545a70b2aebcad111.zip |
Implement dmeventd -R, allowing dmeventd to be restarted without losing
monitoring state.
Diffstat (limited to 'libdm/libdm-file.c')
-rw-r--r-- | libdm/libdm-file.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/libdm/libdm-file.c b/libdm/libdm-file.c index b72b2abe..82fae342 100644 --- a/libdm/libdm-file.c +++ b/libdm/libdm-file.c @@ -92,6 +92,7 @@ int dm_create_lockfile(const char *lockfile) ssize_t write_out; struct flock lock; char buffer[50]; + int retries = 0; if((fd = open(lockfile, O_CREAT | O_WRONLY, (S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH))) < 0) { @@ -112,9 +113,15 @@ retry_fcntl: break; case EACCES: case EAGAIN: - log_error("Cannot lock lockfile [%s], error was [%s]", - lockfile, strerror(errno)); - break; + if (retries == 20) { + log_error("Cannot lock lockfile [%s], error was [%s]", + lockfile, strerror(errno)); + break; + } else { + ++ retries; + usleep(1000); + goto retry_fcntl; + } default: log_error("process is already running"); } |