[Ocfs2-tools-devel] [PATCH 2/2] o2hbmonitor: add lockfile
Tristan Ye
tristan.ye at oracle.com
Wed Nov 10 19:20:27 PST 2010
Srinivas Eeda wrote:
>
>> #define O2HB_SEM_MAGIC_KEY 0x4A32594B
>>
>> int main()
>> {
>> ...
>> daemon();
>> semid = semget(O2HB_SEM_MAGIC_KEY, 1, IPC_CREAT|IPC_EXCL);
>> if (semid < 0) {
>> if (errno = EEXIST)
>> syslog(LOG_INFO "o2hbmonitor is already running.\n");
>> else
>> fprintf(stderr, "failed to get semaphore.\n");
>> exit(semid);
>> }
>> openlog();
>> monitor();
>> sem_close();
>> }
> Tristan,
> thanks for the review and the suggestions :)
>
> If a user kills the process with SIGKILL, then he will be prevented
> from spawning another process until he explicitly removes the
> semaphore. I think it adds big inconvenience. If user explicitly
> removes the lock file and starts another process, then it doesn't
> cause much problems. The likely hood of user sending SIGKILL signal is
> much larger than removing the file.
There is a known solution for the cleanup of shared semaphore resources
when process gets terminated abnoramlly.
Simply using 'SEM_UNDO' in semop() should work, kernel takes over the
cleanup when process was SIGKILLed.
More information about the Ocfs2-tools-devel
mailing list