|
Lines 11-40
Link Here
|
| 11 |
cont_list= |
11 |
cont_list= |
| 12 |
md_devs= |
12 |
md_devs= |
| 13 |
|
13 |
|
|
|
14 |
# peter added this so /boot will start degraded |
| 15 |
# this removes duplicates |
| 16 |
# if root is mdadm+lvm, then there would be 2 roots here, one from setup-storage checking mdadm.conf, and one from another script that finds the md device that an LV root is on) |
| 17 |
blockdev=$(echo "$blockdev" | tr ' ' '\n' | sort | uniq | tr '\n' ' ') |
| 18 |
|
| 19 |
verbose "[MD]\t start setup-md.sh blockdev = $blockdev" |
| 20 |
|
| 14 |
declare -A md_conf |
21 |
declare -A md_conf |
| 15 |
# blockdev contains real devices (/dev/X) for root, resume, journal, dumb |
22 |
# blockdev contains real devices (/dev/X) for root, resume, journal, dumb |
| 16 |
for bd in $blockdev ; do |
23 |
for bd in $blockdev ; do |
| 17 |
is_part_dev=false |
24 |
is_part_dev=false |
| 18 |
case $bd in |
25 |
case $bd in |
| 19 |
/dev/md[0-9]*p[0-9]*) |
26 |
/dev/md[0-9]*p[0-9]*) |
|
|
27 |
verbose "[MD]\t $bd is partitionable" |
| 20 |
# Partitionable MD RAID. This is partition on RAID. Get the RAID |
28 |
# Partitionable MD RAID. This is partition on RAID. Get the RAID |
| 21 |
bd=${bd%%p[0-9]*} |
29 |
bd=${bd%%p[0-9]*} |
| 22 |
is_part_dev=true |
30 |
is_part_dev=true |
| 23 |
;; |
31 |
;; |
| 24 |
/dev/md[0-9]*) |
32 |
/dev/md[0-9]*) |
|
|
33 |
verbose "[MD]\t $bd is normal" |
| 34 |
;; |
| 35 |
/dev/md/[0-9]*) |
| 36 |
verbose "[MD]\t $bd has slash" |
| 25 |
;; |
37 |
;; |
| 26 |
*) |
38 |
*) |
|
|
39 |
verbose "[MD]\t $bd is other type" |
| 27 |
mdblockdev="$mdblockdev $bd" |
40 |
mdblockdev="$mdblockdev $bd" |
| 28 |
continue |
41 |
continue |
| 29 |
;; |
42 |
;; |
| 30 |
esac |
43 |
esac |
| 31 |
# Check if this device is already added (possible for partitionable). |
44 |
# Check if this device is already added (possible for partitionable). |
| 32 |
md_dev=`mdadm -D --export $bd | sed -n -e 's/^MD_DEVNAME=//p'` |
45 |
md_dev=`mdadm -D --export $bd | sed -n -e 's/^MD_DEVNAME=//p'` |
|
|
46 |
verbose "[MD]\t bd = $bd md_dev = $md_dev" |
| 33 |
if [ -z "$md_dev" ]; then |
47 |
if [ -z "$md_dev" ]; then |
| 34 |
md_dev=${bd##/dev/} |
48 |
md_dev=${bd##/dev/} |
| 35 |
else |
49 |
else |
| 36 |
bd="/dev/md/$md_dev" |
50 |
# peter changed this from bd="/dev/..." to md_dev="...", because otherwise the md_devs="..." line later won't use the bd set here, only md_dev which was wrong (0 instead of md0 or md/0), ending up with /dev/0 |
|
|
51 |
# bd="/dev/md/$md_dev" |
| 52 |
md_dev="md/$md_dev" |
| 37 |
fi |
53 |
fi |
|
|
54 |
verbose "[MD]\t bd = $bd md_dev = $md_dev" |
| 38 |
dup_found=false |
55 |
dup_found=false |
| 39 |
for dup in $md_devs; do |
56 |
for dup in $md_devs; do |
| 40 |
if [ x"$dup" = x"$md_dev" ]; then |
57 |
if [ x"$dup" = x"$md_dev" ]; then |
|
Lines 55-60
Link Here
|
| 55 |
fi |
72 |
fi |
| 56 |
md_tmpblockdev=$(mdadm -Dbv $bd | sed -n "1D;s/,/ /g;s/^ *devices=//p") |
73 |
md_tmpblockdev=$(mdadm -Dbv $bd | sed -n "1D;s/,/ /g;s/^ *devices=//p") |
| 57 |
mdblockdev="$mdblockdev $md_tmpblockdev" |
74 |
mdblockdev="$mdblockdev $md_tmpblockdev" |
|
|
75 |
verbose "[MD]\t final bd = $bd md_dev = $md_dev" |
| 58 |
md_devs="$md_devs $md_dev" |
76 |
md_devs="$md_devs $md_dev" |
| 59 |
container=$(echo "$mdconf" | sed -rn 's/.* container=([^ ]*) .*/\1/p') |
77 |
container=$(echo "$mdconf" | sed -rn 's/.* container=([^ ]*) .*/\1/p') |
| 60 |
for cnt in $cont_list; do |
78 |
for cnt in $cont_list; do |
|
Lines 102-106
Link Here
|
| 102 |
md_devs=$(printf '/dev/%s ' $md_devs) |
120 |
md_devs=$(printf '/dev/%s ' $md_devs) |
| 103 |
fi |
121 |
fi |
| 104 |
|
122 |
|
|
|
123 |
echo "md devices: $md_devs" |
| 105 |
save_var need_mdadm |
124 |
save_var need_mdadm |
| 106 |
save_var md_devs |
125 |
save_var md_devs |