3 # Test how <devname> and --name= are handled for create mode.
4 # We need to check three properties, generated from those parameters:
6 # - link in /dev/md/ (MD_DEVNAME property from --detail --export)
7 # - name in metadata (MD_NAME property from --examine --export)
10 local DEVNODE_NAME="$1"
11 local WANTED_LINK="$2"
12 local WANTED_NAME="$3"
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."
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."
29 local RES="$(mdadm -E --export $dev0 | grep MD_NAME)"
30 if [[ "$?" != "0" ]]; then
31 echo "Cannot get metadata from $dev0."
35 local EXPECTED="MD_NAME=$(hostname):$WANTED_NAME"
36 if [[ "$RES" != "$EXPECTED" ]]; then
37 echo "$RES doesn't match $EXPECTED."
46 if [[ -z "$NAME" ]]; then
47 mdadm -CR "$DEVNAME" -l0 -n 1 $dev0 --force
49 mdadm -CR "$DEVNAME" --name="$NAME" -l0 -n 1 $dev0 --force
52 if [[ "$?" != "0" ]]; then
53 echo "Cannot create device."
58 # The most trivial case.
59 _create "/dev/md/name"
60 _verify "/dev/md127" "name" "name"
64 _verify "/dev/md127" "name" "name"
69 _verify "/dev/md127" "md0" "md0"
73 _verify "/dev/md127" "md0" "md0"
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"
81 _create "devnode" "name"
82 _verify "/dev/md127" "devnode" "name"
85 # Devnode points to /dev/ directory. MD_DEVNAME doesn't exist.
87 _verify "/dev/md0" "empty" "0"
90 # Devnode points to /dev/ directory and name is set.
91 _create "/dev/md0" "name"
92 _verify "/dev/md0" "empty" "name"