89 lines
2 KiB
Text
89 lines
2 KiB
Text
# NAME is optional. Testing with native 1.2 superblock.
|
|
function names_create() {
|
|
local DEVNAME=$1
|
|
local NAME=$2
|
|
local NEG_TEST=$3
|
|
|
|
if [[ -z "$NAME" ]]; then
|
|
mdadm -CR "$DEVNAME" -l0 -n 1 $dev0 --force
|
|
else
|
|
mdadm -CR "$DEVNAME" --name="$NAME" --metadata=1.2 -l0 -n 1 $dev0 --force
|
|
fi
|
|
|
|
if [[ "$NEG_TEST" == "true" ]]; then
|
|
[[ "$?" == "0" ]] && return 0
|
|
echo "Negative verification failed"
|
|
exit 1
|
|
fi
|
|
|
|
if [[ "$?" != "0" ]]; then
|
|
echo "Cannot create device."
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
# Three properties to check:
|
|
# - devnode name
|
|
# - link in /dev/md/ (MD_DEVNAME property from --detail --export)
|
|
# - name in metadata (MD_NAME property from --detail --export)- that works only with 1.2 sb.
|
|
function names_verify() {
|
|
local DEVNODE_NAME="$1"
|
|
local WANTED_LINK="$2"
|
|
local WANTED_NAME="$3"
|
|
local EXPECTED=""
|
|
|
|
# We don't know what is saved in metadata, but we know what to expect. Therfore check if
|
|
# expecation would be foreign (no hostname information).
|
|
is_raid_foreign $WANTED_NAME
|
|
|
|
local RES="$(mdadm -D --export $DEVNODE_NAME | grep MD_DEVNAME)"
|
|
if [[ "$?" != "0" ]]; then
|
|
echo "Cannot get details for $DEVNODE_NAME - unexpected devnode."
|
|
exit 1
|
|
fi
|
|
|
|
if [[ "$WANTED_LINK" != "empty" ]]; then
|
|
EXPECTED="MD_DEVNAME=$WANTED_LINK"
|
|
|
|
if [ ! -b /dev/md/$WANTED_LINK ]; then
|
|
echo "/dev/md/$WANTED_LINK doesn't exit"
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
if [[ "$RES" != "$EXPECTED" ]]; then
|
|
echo "$RES doesn't match $EXPECTED."
|
|
exit 1
|
|
fi
|
|
|
|
local RES="$(mdadm -D --export $DEVNODE_NAME | grep MD_NAME)"
|
|
if [[ "$?" != "0" ]]; then
|
|
echo "Cannot get metadata from $dev0."
|
|
exit 1
|
|
fi
|
|
|
|
if [ $is_foreign == "no" ]; then
|
|
EXPECTED="MD_NAME=$(hostname):$WANTED_NAME"
|
|
else
|
|
EXPECTED="MD_NAME=$WANTED_NAME"
|
|
fi
|
|
if [[ "$RES" != "$EXPECTED" ]]; then
|
|
echo "$RES doesn't match $EXPECTED."
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
# Generate ARRAYLINE for tested array.
|
|
names_make_conf() {
|
|
local UUID="$1"
|
|
local WANTED_DEVNAME="$2"
|
|
local CONF="$3"
|
|
|
|
local LINE="ARRAY metadata=1.2 UUID=$UUID"
|
|
|
|
if [[ "$WANTED_DEVNAME" != "empty" ]]; then
|
|
LINE="$LINE $WANTED_DEVNAME"
|
|
fi
|
|
|
|
echo $LINE > $CONF
|
|
}
|