1
0
Fork 0

Adding upstream version 4.2+20231026.

Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
Daniel Baumann 2025-02-14 06:31:53 +01:00
parent 2454e16a2c
commit 59abf67a86
Signed by: daniel
GPG key ID: FBB4F0E80A80222F
30 changed files with 956 additions and 423 deletions

View file

@ -1,93 +1,44 @@
set -x -e
. tests/templates/names_template
# Test how <devname> and --name= are handled for create mode.
# We need to check three properties, generated from those parameters:
# - devnode name
# - link in /dev/md/ (MD_DEVNAME property from --detail --export)
# - name in metadata (MD_NAME property from --examine --export)
function _verify() {
local DEVNODE_NAME="$1"
local WANTED_LINK="$2"
local WANTED_NAME="$3"
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
local EXPECTED="MD_DEVNAME=$WANTED_LINK"
if [[ "$RES" != "$EXPECTED" ]]; then
echo "$RES doesn't match $EXPECTED."
exit 1
fi
fi
local RES="$(mdadm -E --export $dev0 | grep MD_NAME)"
if [[ "$?" != "0" ]]; then
echo "Cannot get metadata from $dev0."
exit 1
fi
local EXPECTED="MD_NAME=$(hostname):$WANTED_NAME"
if [[ "$RES" != "$EXPECTED" ]]; then
echo "$RES doesn't match $EXPECTED."
exit 1
fi
}
function _create() {
local DEVNAME=$1
local NAME=$2
if [[ -z "$NAME" ]]; then
mdadm -CR "$DEVNAME" -l0 -n 1 $dev0 --force
else
mdadm -CR "$DEVNAME" --name="$NAME" -l0 -n 1 $dev0 --force
fi
if [[ "$?" != "0" ]]; then
echo "Cannot create device."
exit 1
fi
}
# The most trivial case.
_create "/dev/md/name"
_verify "/dev/md127" "name" "name"
names_create "/dev/md/name"
names_verify "/dev/md127" "name" "name"
mdadm -S "/dev/md127"
_create "name"
_verify "/dev/md127" "name" "name"
names_create "name"
names_verify "/dev/md127" "name" "name"
mdadm -S "/dev/md127"
# Use 'mdX' as name.
_create "/dev/md/md0"
_verify "/dev/md127" "md0" "md0"
names_create "/dev/md/md0"
names_verify "/dev/md127" "md0" "md0"
mdadm -S "/dev/md127"
_create "md0"
_verify "/dev/md127" "md0" "md0"
names_create "md0"
names_verify "/dev/md127" "md0" "md0"
mdadm -S "/dev/md127"
# <devnode> is used to create MD_DEVNAME but, name is used to create MD_NAME.
_create "/dev/md/devnode" "name"
_verify "/dev/md127" "devnode" "name"
names_create "/dev/md/devnode" "name"
names_verify "/dev/md127" "devnode" "name"
mdadm -S "/dev/md127"
_create "devnode" "name"
_verify "/dev/md127" "devnode" "name"
names_create "devnode" "name"
names_verify "/dev/md127" "devnode" "name"
mdadm -S "/dev/md127"
# Devnode points to /dev/ directory. MD_DEVNAME doesn't exist.
_create "/dev/md0"
_verify "/dev/md0" "empty" "0"
names_create "/dev/md0"
names_verify "/dev/md0" "empty" "0"
mdadm -S "/dev/md0"
# Devnode points to /dev/ directory and name is set.
_create "/dev/md0" "name"
_verify "/dev/md0" "empty" "name"
names_create "/dev/md0" "name"
names_verify "/dev/md0" "empty" "name"
mdadm -S "/dev/md0"
# Devnode is a special ignore keyword. Should be rejected.
names_create "<ignore>" "name", "true"