Monitor: fix writing autorebuild.pid

If /var/run/mdadm doesn't exist we can never succeed writing
so we should try to create it first. When we make sure it is there we
write pid file as before.

Signed-off-by: Anna Czarnowska <anna.czarnowska@intel.com>
Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
Anna Czarnowska 2010-11-26 14:29:53 +01:00 committed by NeilBrown
parent 24baa548c4
commit a1bb206520
1 changed files with 16 additions and 10 deletions

View File

@ -296,21 +296,27 @@ static int check_one_sharer(int scan)
} else {
fprintf(stderr, Name ": Warning: One"
" autorebuild process already"
" running.");
" running.\n");
}
}
fclose(fp);
}
if (scan) {
fp = fopen("/var/run/mdadm/autorebuild.pid", "w");
if (!fp)
fprintf(stderr, Name ": Cannot create"
" autorebuild.pid "
"file\n");
else {
pid = getpid();
fprintf(fp, "%d\n", pid);
fclose(fp);
if (mkdir("/var/run/mdadm", S_IRWXU) < 0 &&
errno != EEXIST) {
fprintf(stderr, Name ": Can't create "
"autorebuild.pid file\n");
} else {
fp = fopen("/var/run/mdadm/autorebuild.pid", "w");
if (!fp)
fprintf(stderr, Name ": Cannot create"
" autorebuild.pid"
"file\n");
else {
pid = getpid();
fprintf(fp, "%d\n", pid);
fclose(fp);
}
}
}
return 0;