linux-raid.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [Patch] mdadm: move mdadm.map file into /dev/md
@ 2009-04-06 14:52 Doug Ledford
  2009-04-06 19:36 ` Luca Berra
  2009-04-07  6:05 ` Goswin von Brederlow
  0 siblings, 2 replies; 14+ messages in thread
From: Doug Ledford @ 2009-04-06 14:52 UTC (permalink / raw)
  To: LinuxRaid RAID; +Cc: Neil Brown


[-- Attachment #1.1: Type: text/plain, Size: 595 bytes --]

Originally, mdadm used /var/run/mdadm/mdadm.map file to store the  
temporary mappings of incrementally added devices to device names.   
Unfortunately, this breaks incremental assembly if used early in the  
booting process.  Specifically, root may still be read only.  Since  
incremental assembly is largely a udev specific feature, and udev  
needs a writable /dev tmpfs mount even when root is still read only,  
it's safer to put our mdadm.map file in /dev/md so that we can write  
to the map file no matter how early in the boot process we are  
attempting to use incremental assembly.


[-- Attachment #1.2: mdadm-3.0-mapfile.patch --]
[-- Type: application/octet-stream, Size: 4203 bytes --]

--- mdadm-3.0-devel3/Incremental.c.dev	2009-03-20 13:19:35.000000000 -0400
+++ mdadm-3.0-devel3/Incremental.c	2009-03-20 13:20:01.000000000 -0400
@@ -52,7 +52,7 @@ int Incremental(char *devname, int verbo
 	 *    a 'foreign' array.
 	 * 4/ Determine device number.
 	 * - If in mdadm.conf with std name, use that
-	 * - UUID in /var/run/mdadm.map  use that
+	 * - UUID in /dev/md/mdadm.map  use that
 	 * - If name is suggestive, use that. unless in use with different uuid.
 	 * - Choose a free, high number.
 	 * - Use a partitioned device unless strong suggestion not to.
@@ -67,7 +67,7 @@ int Incremental(char *devname, int verbo
 	 * - check one drive in array to make sure metadata is a reasonably
 	 *       close match.  Reject if not (e.g. different type)
 	 * - add the device
-	 * 6/ Make sure /var/run/mdadm.map contains this array.
+	 * 6/ Make sure /dev/md/mdadm.map contains this array.
 	 * 7/ Is there enough devices to possibly start the array?
 	 *     For a container, this means running Incremental_container.
 	 * 7a/ if not, finish with success.
@@ -315,7 +315,7 @@ int Incremental(char *devname, int verbo
 		}
 		info.array.working_disks = 1;
 		sysfs_free(sra);
-		/* 6/ Make sure /var/run/mdadm.map contains this array. */
+		/* 6/ Make sure /dev/md/mdadm.map contains this array. */
 		map_update(&map, fd2devnum(mdfd),
 			   info.text_version,
 			   info.uuid, chosen_name);
--- mdadm-3.0-devel3/mapfile.c.dev	2009-03-20 13:16:27.000000000 -0400
+++ mdadm-3.0-devel3/mapfile.c	2009-03-20 13:18:37.000000000 -0400
@@ -1,5 +1,5 @@
 /*
- * mapfile - manage /var/run/mdadm.map. Part of:
+ * mapfile - manage /dev/md/mdadm.map. Part of:
  * mdadm - manage Linux "md" devices aka RAID arrays.
  *
  * Copyright (C) 2006 Neil Brown <neilb@suse.de>
@@ -28,7 +28,7 @@
  *           Australia
  */
 
-/* /var/run/mdadm.map is used to track arrays being created in --incremental
+/* /dev/md/mdadm.map is used to track arrays being created in --incremental
  * more.  It particularly allows lookup from UUID to array device, but
  * also allows the array device name to be easily found.
  *
@@ -50,9 +50,9 @@ int map_write(struct map_ent *mel)
 	int err;
 	int subdir = 1;
 
-	f = fopen("/var/run/mdadm/map.new", "w");
+	f = fopen("/dev/md/mdadm/map.new", "w");
 	if (!f) {
-		f = fopen("/var/run/mdadm.map.new", "w");
+		f = fopen("/dev/md/mdadm.map.new", "w");
 		subdir = 0;
 	}
 	if (!f)
@@ -74,17 +74,17 @@ int map_write(struct map_ent *mel)
 	fclose(f);
 	if (err) {
 		if (subdir)
-			unlink("/var/run/mdadm/map.new");
+			unlink("/dev/md/mdadm/map.new");
 		else
-			unlink("/var/run/mdadm.map.new");
+			unlink("/dev/md/mdadm.map.new");
 		return 0;
 	}
 	if (subdir)
-		return rename("/var/run/mdadm/map.new",
-			      "/var/run/mdadm/map") == 0;
+		return rename("/dev/md/mdadm/map.new",
+			      "/dev/md/mdadm/map") == 0;
 	else
-		return rename("/var/run/mdadm.map.new",
-			      "/var/run/mdadm.map") == 0;
+		return rename("/dev/md/mdadm.map.new",
+			      "/dev/md/mdadm.map") == 0;
 }
 
 
@@ -93,9 +93,9 @@ static int lsubdir = 0;
 int map_lock(struct map_ent **melp)
 {
 	if (lfd < 0) {
-		lfd = open("/var/run/mdadm/map.lock", O_CREAT|O_RDWR, 0600);
+		lfd = open("/dev/md/mdadm/map.lock", O_CREAT|O_RDWR, 0600);
 		if (lfd < 0) {
-			lfd = open("/var/run/mdadm.map.lock", O_CREAT|O_RDWR, 0600);
+			lfd = open("/dev/md/mdadm.map.lock", O_CREAT|O_RDWR, 0600);
 			lsubdir = 0;
 		} else
 			lsubdir = 1;
@@ -118,9 +118,9 @@ void map_unlock(struct map_ent **melp)
 	if (lfd >= 0)
 		close(lfd);
 	if (lsubdir)
-		unlink("/var/run/mdadm/map.lock");
+		unlink("/dev/md/mdadm/map.lock");
 	else
-		unlink("/var/run/mdadm.map.lock");
+		unlink("/dev/md/mdadm.map.lock");
 	lfd = -1;
 }
 
@@ -149,15 +149,15 @@ void map_read(struct map_ent **melp)
 
 	*melp = NULL;
 
-	f = fopen("/var/run/mdadm/map", "r");
+	f = fopen("/dev/md/mdadm/map", "r");
 	if (!f)
-		f = fopen("/var/run/mdadm.map", "r");
+		f = fopen("/dev/md/mdadm.map", "r");
 	if (!f) {
 		RebuildMap();
-		f = fopen("/var/run/mdadm/map", "r");
+		f = fopen("/dev/md/mdadm/map", "r");
 	}
 	if (!f)
-		f = fopen("/var/run/mdadm.map", "r");
+		f = fopen("/dev/md/mdadm.map", "r");
 	if (!f)
 		return;
 

[-- Attachment #1.3: Type: text/plain, Size: 171 bytes --]



--

Doug Ledford <dledford@redhat.com>

GPG KeyID: CFBFF194
http://people.redhat.com/dledford

InfiniBand Specific RPMS
http://people.redhat.com/dledford/Infiniband





[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 203 bytes --]

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2009-04-14  1:12 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-04-06 14:52 [Patch] mdadm: move mdadm.map file into /dev/md Doug Ledford
2009-04-06 19:36 ` Luca Berra
2009-04-07  6:05 ` Goswin von Brederlow
2009-04-07 10:55   ` Luca Berra
2009-04-07 21:04     ` Goswin von Brederlow
2009-04-07 12:16   ` Doug Ledford
2009-04-07 21:26     ` NeilBrown
2009-04-07 22:14       ` Doug Ledford
2009-04-08  6:38         ` Neil Brown
2009-04-09 19:28           ` Doug Ledford
2009-04-08  0:15       ` Goswin von Brederlow
2009-04-08  6:31         ` Neil Brown
2009-04-09 19:25           ` Doug Ledford
2009-04-14  1:12             ` Neil Brown

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).