Sophie

Sophie

distrib > Scientific%20Linux > 5x > x86_64 > by-pkgid > 9d9a919ae2020b7db67a2e898727cafc > files > 25

grub-0.97-13.10.el5.src.rpm

diff -up grub-0.97/util/grub-install.in.cciss grub-0.97/util/grub-install.in
--- grub-0.97/util/grub-install.in.cciss	2008-02-04 14:30:31.000000000 -0500
+++ grub-0.97/util/grub-install.in	2008-02-07 18:34:14.000000000 -0500
@@ -100,25 +100,56 @@ convert () {
     # Break the device name into the disk part and the partition part.
     case "$host_os" in
     linux*)
+    	# formats that need to be handled (disk name -> partition name):
+	# floppies: /dev/fd0
+	# normal sd/hd devices: /dev/hda -> /dev/hda3
+	# md: /dev/md0 -> /dev/md0p0
+	# ide raid devs: /dev/ide/host0/bus0/target0/lun0/disc
+	#             -> /dev/ide/host0/bus0/target0/lun0/part1
+	# cciss: /dev/cciss/c0d0 -> /dev/cciss/c0d0p1
+	# mpath devs: /dev/mapper/mpath0 -> /dev/mapper/mpath0p1
+	#             /dev/mapper/lalala -> /dev/mapper/lalalap1
+	# dmraid devs: /dev/mapper/via_abcdef -> /dev/mapper/via_abcdefp1
+	#    /dev/mapper/isw_Volume0_abcdef -> /dev/mapper/isw_Volume0_abcdefp1
+	#  the known list (to me) is (X means we should handle it):
+	#	X asr_[unfettered crap]
+	#	  hpt[0-9]+x_[0-9]+-[0-9]+
+	#	X hpt[0-9]+x_[0-9]+
+	#	  hpt[0-9]+x_SPARE
+	#	  isw_[a-z]+_[a-z]+[0-9]+
+	#	X isw_[a-z]+
+	#	  jm_[0-9]+-[0-9]+
+	#	X jm_[0-9]+
+	#	  lsi_[0-9]+-[0-9]+
+	#	X lsi_[0-9]+
+	#	  nvidia_[a-z]+-[0-9]+
+	#	X nvidia_[a-z]+
+	#	  pdc_[a-z]+-[0-9]+
+	#	X pdc_[a-z]+
+	#	  sil_[0-9]+-[0-9]+
+	#	X sil_[0-9]+
+	#	  via_[a-z]+-[0-9]+
+	#	X via_[a-z]+
+	#
+	# more? 
 	tmp_disk=`echo "$1" | grep -v '/mapper/control$' |
-		grep -v '/mapper/[[:alnum:]]\+-[[:alnum:]]\+$' | uniq |
+		grep -v '/mapper/[[:alnum:]_]\+-[[:digit:]]\+$' | uniq |
 		sed -e 's%\([sh]d[a-z]\)[0-9]*$%\1%' \
-				  -e 's%\(d[0-9]*\)p[0-9]*$%\1%' \
-				  -e 's%\(fd[0-9]*\)$%\1%' \
-				  -e 's%/part[0-9]*$%/disc%' \
-				  -e 's%\(c[0-7]d[0-9]*\).*$%\1%' \
-	  -e 's%\(/mapper/[[:alpha:]]\+[[:digit:]]\+\)p[[:digit:]]\+$%\1%' \
-	  -e 's%\(/mapper/[[:alpha:]]\+_[[:alpha:]]\+\)[[:digit:]]\+$%\1%'`
+			  -e 's%\(/c[0-9]\+d[0-9]\+\).*$%\1%' \
+			  -e 's%\(fd[0-9]*\)$%\1%' \
+			  -e 's%/part[0-9]*$%/disc%' \
+  -e 's%\(/mapper/[[:alnum:]_-]\+\)\+p[[:digit:]]\+$%\1%'\
+  -e 's%\(/mapper/[[:alnum:]]\+\(_[[:alnum:]]\+\)\+\)\p[[:digit:]]\+$%\1%'`
 	tmp_part=`echo "$1" | grep -v '/mapper/control$' |
-		grep -v '/mapper/[[:alnum:]]\+-[[:alnum:]]\+$' | uniq |
+		grep -v '/mapper/[[:alnum:]_]\+-[[:digit:]]\+$' | uniq |
 		sed -e 's%.*/[sh]d[a-z]\([0-9]*\)$%\1%' \
-				  -e 's%.*d[0-9]*p%%' \
-				  -e 's%.*/fd[0-9]*$%%' \
-				  -e 's%.*/floppy/[0-9]*$%%' \
-				  -e 's%.*/\(disc\|part\([0-9]*\)\)$%\2%' \
-				  -e 's%.*c[0-7]d[0-9]*p%%' \
-	  -e 's%.*/mapper/[[:alpha:]]\+[[:digit:]]\+p\([[:digit:]]\+\)$%\1%' \
-	  -e 's%.*/mapper/[[:alpha:]]\+_[[:alpha:]]\+\([[:digit:]]\+\)$%\1%' |
+			  -e 's%.*/c[0-9]\+d[0-9]\+p\([[:digit:]]\+\)%\1%' \
+			  -e 's%.*/c[0-9]\+d[0-9]\+$%%' \
+			  -e 's%.*/fd[0-9]\+$%%' \
+			  -e 's%.*/floppy/[0-9]*$%%' \
+			  -e 's%.*/\(disc\|part\([0-9]*\)\)$%\2%' \
+  -e 's%.*/mapper/[[:alpha:]]\+[[:digit:]]\+p\([[:digit:]]\+\)$%\1%' \
+  -e 's%.*/mapper/[[:alnum:]]\+\(_[[:alpha:]]\+[[:digit:]]*\)\+p\([[:digit:]]\+\)$%\2%' |
 		grep -v '.*/mapper/.*'`
 	;;
     gnu*)