]>
Commit | Line | Data |
---|---|---|
b7671c82 MT |
1 | set -x -e |
2 | ||
3 | # Test how <devname> and --name= are handled for create mode. | |
4 | # We need to check three properties, generated from those parameters: | |
5 | # - devnode name | |
6 | # - link in /dev/md/ (MD_DEVNAME property from --detail --export) | |
7 | # - name in metadata (MD_NAME property from --examine --export) | |
8 | ||
9 | function _verify() { | |
10 | local DEVNODE_NAME="$1" | |
11 | local WANTED_LINK="$2" | |
12 | local WANTED_NAME="$3" | |
13 | ||
14 | local RES="$(mdadm -D --export $DEVNODE_NAME | grep MD_DEVNAME)" | |
15 | if [[ "$?" != "0" ]]; then | |
16 | echo "Cannot get details for $DEVNODE_NAME - unexpected devnode." | |
17 | exit 1 | |
18 | fi | |
19 | ||
20 | if [[ "$WANTED_LINK" != "empty" ]]; then | |
21 | local EXPECTED="MD_DEVNAME=$WANTED_LINK" | |
22 | if [[ "$RES" != "$EXPECTED" ]]; then | |
23 | echo "$RES doesn't match $EXPECTED." | |
24 | exit 1 | |
25 | fi | |
26 | fi | |
27 | ||
28 | ||
29 | local RES="$(mdadm -E --export $dev0 | grep MD_NAME)" | |
30 | if [[ "$?" != "0" ]]; then | |
31 | echo "Cannot get metadata from $dev0." | |
32 | exit 1 | |
33 | fi | |
34 | ||
35 | local EXPECTED="MD_NAME=$(hostname):$WANTED_NAME" | |
36 | if [[ "$RES" != "$EXPECTED" ]]; then | |
37 | echo "$RES doesn't match $EXPECTED." | |
38 | exit 1 | |
39 | fi | |
40 | } | |
41 | ||
42 | function _create() { | |
43 | local DEVNAME=$1 | |
44 | local NAME=$2 | |
45 | ||
46 | if [[ -z "$NAME" ]]; then | |
47 | mdadm -CR "$DEVNAME" -l0 -n 1 $dev0 --force | |
48 | else | |
49 | mdadm -CR "$DEVNAME" --name="$NAME" -l0 -n 1 $dev0 --force | |
50 | fi | |
51 | ||
52 | if [[ "$?" != "0" ]]; then | |
53 | echo "Cannot create device." | |
54 | exit 1 | |
55 | fi | |
56 | } | |
57 | ||
58 | # The most trivial case. | |
59 | _create "/dev/md/name" | |
60 | _verify "/dev/md127" "name" "name" | |
61 | mdadm -S "/dev/md127" | |
62 | ||
63 | _create "name" | |
64 | _verify "/dev/md127" "name" "name" | |
65 | mdadm -S "/dev/md127" | |
66 | ||
67 | # Use 'mdX' as name. | |
68 | _create "/dev/md/md0" | |
69 | _verify "/dev/md127" "md0" "md0" | |
70 | mdadm -S "/dev/md127" | |
71 | ||
72 | _create "md0" | |
73 | _verify "/dev/md127" "md0" "md0" | |
74 | mdadm -S "/dev/md127" | |
75 | ||
76 | # <devnode> is used to create MD_DEVNAME but, name is used to create MD_NAME. | |
77 | _create "/dev/md/devnode" "name" | |
78 | _verify "/dev/md127" "devnode" "name" | |
79 | mdadm -S "/dev/md127" | |
80 | ||
81 | _create "devnode" "name" | |
82 | _verify "/dev/md127" "devnode" "name" | |
83 | mdadm -S "/dev/md127" | |
84 | ||
85 | # Devnode points to /dev/ directory. MD_DEVNAME doesn't exist. | |
86 | _create "/dev/md0" | |
87 | _verify "/dev/md0" "empty" "0" | |
88 | mdadm -S "/dev/md0" | |
89 | ||
90 | # Devnode points to /dev/ directory and name is set. | |
91 | _create "/dev/md0" "name" | |
92 | _verify "/dev/md0" "empty" "name" | |
93 | mdadm -S "/dev/md0" |