From a1bb206520f3fc58acc4ebde36c51d99c509b94b Mon Sep 17 00:00:00 2001 From: Anna Czarnowska Date: Fri, 26 Nov 2010 14:29:53 +0100 Subject: [PATCH] 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 Signed-off-by: NeilBrown --- Monitor.c | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/Monitor.c b/Monitor.c index 8d397bc0..0e916884 100644 --- a/Monitor.c +++ b/Monitor.c @@ -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; -- 2.39.2