[Ocfs2-tools-devel] [PATCH 2/2] o2hbmonitor: add lockfile

Tristan Ye tristan.ye at oracle.com
Sun Nov 14 18:32:45 PST 2010


Joel Becker wrote:
> On Fri, Nov 12, 2010 at 04:29:10PM -0800, Srinivas Eeda wrote:
>> Tristan Ye wrote:
>>> 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.
>>>
>> agreed. I made the changes and resent the patches.
>
> 	Lockfiles are a standard system daemon mechanism.  Sure, you can
> run two of them if you rm the file, but who cares?  That's not a normal
> case.
> 	Certainly a semaphore works.  But it doesn't store the pid for
> the startup scripts ;-)

Make sense, lockfile storing pid could be better for start/stop a daemon.

>
> Joel
>




More information about the Ocfs2-tools-devel mailing list