[PATCH 3/4] Monitor: fix writing autorebuild.pid

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



>From b51326776e526d301d0efb92151a9ee73c1419b9 Mon Sep 17 00:00:00 2001
From: Anna Czarnowska <anna.czarnowska@xxxxxxxxx>
Date: Fri, 26 Nov 2010 15:29:53 +0100
Subject: [PATCH 3/4] Monitor: fix writing autorebuild.pid
Cc: linux-raid@xxxxxxxxxxxxxxx, Williams, Dan J <dan.j.williams@xxxxxxxxx>, Ciechanowski, Ed <ed.ciechanowski@xxxxxxxxx>

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@xxxxxxxxx>
---
 Monitor.c |   26 ++++++++++++++++----------
 1 files changed, 16 insertions(+), 10 deletions(-)

diff --git a/Monitor.c b/Monitor.c
index cacd2fe..b78a66b 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;
-- 
1.7.1

--
To unsubscribe from this list: send the line "unsubscribe linux-raid" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux RAID Wiki]     [ATA RAID]     [Linux SCSI Target Infrastructure]     [Linux Block]     [Linux IDE]     [Linux SCSI]     [Linux Hams]     [Device Mapper]     [Device Mapper Cryptographics]     [Kernel]     [Linux Admin]     [Linux Net]     [GFS]     [RPM]     [git]     [Yosemite Forum]


  Powered by Linux