]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
mdadm/tests: judge foreign array in test cases
authorXiao Ni <xni@redhat.com>
Fri, 14 Jun 2024 02:45:01 +0000 (10:45 +0800)
committerMariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
Thu, 20 Jun 2024 11:45:15 +0000 (13:45 +0200)
It needs to use array name when judging if one array is foreign or not.
So calling is_raid_foreign in test cases which need it.

Fixes: 41706a915684 ('mdadm/tests: names_template enhance')
Signed-off-by: Xiao Ni <xni@redhat.com>
Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
tests/03assem-incr
tests/06name
tests/07autoassemble
tests/func.sh
tests/templates/names_template

index 21215a34f93bbf872f1ffdce4963870f458fa643..56afbf2cd7b7b167f7087ca3d201e5d465a62153 100644 (file)
@@ -12,6 +12,8 @@ if [ "$LINEAR" == "yes" ]; then
        levels+=( linear )
 fi
 
+is_raid_foreign $md0
+
 for l in ${levels[@]}
 do
        mdadm -CR $md0 -l $l -n5 $dev0 $dev1 $dev2 $dev3 $dev4 --assume-clean
index c3213f6c9f7bc30d33124a1b9b16282342374410..9ec3437bfe5ae5de10f61e7978ec07af6402b4ef 100644 (file)
@@ -2,6 +2,8 @@ set -x
 
 # create an array with a name
 
+is_raid_foreign $md0
+
 mdadm -CR $md0 -l0 -n2 --metadata=1 --name="Fred" $dev0 $dev1
 
 if [ $is_foreign == "no" ]; then
index 9dc78149707061011e60688751a45ff3d2089ea9..b6630e1719928fc9357b899bafbea24a3e2687fc 100644 (file)
@@ -2,6 +2,9 @@
 # create two raid1s, build a raid0 on top, then
 # tear it down and get auto-assemble to rebuild it.
 
+#the length of md0/md1/md2 is same. So use md0 here.
+is_raid_foreign $md0
+
 mdadm -CR $md1 -l1 -n2 $dev0 $dev1  --homehost=testing
 mdadm -CR $md2 -l1 -n2 $dev2 $dev3  --homehost=testing
 mdadm -CR $md0 -l0 -n2 $md1 $md2  --homehost=testing
index 8c142c76fb2335585f15bf56a8a71be0f4c34676..e7ccc4fc66eb2b499aa3c0776fc55df28ca3bde5 100644 (file)
@@ -181,10 +181,12 @@ restore_system_speed_limit() {
 
 is_raid_foreign() {
 
-       # If the length of hostname is >= 32, super1 doesn't use
-       # hostname in metadata
+       name=$1
+       # super1 uses this formula strlen(homehost)+1+strlen(name) < 32
+       # to decide if an array is foreign or local. It adds homehost if
+       # one array is local
        hostname=$(hostname)
-       if [ `expr length $(hostname)` -lt 32 ]; then
+       if [ `expr length "$(hostname)$name"` -lt 31 ]; then
                is_foreign="no"
        else
                is_foreign="yes"
@@ -299,7 +301,6 @@ do_setup() {
        [ -f /proc/mdstat ] || modprobe md_mod
        echo 0 > /sys/module/md_mod/parameters/start_ro
        record_system_speed_limit
-       is_raid_foreign
        record_selinux
 }
 
index 88ad5b8c6b384146ed3abe0503fac2d2713855da..c94245eaab2a716da7fe6d920ea8ab8e6c8eb405 100644 (file)
@@ -4,6 +4,8 @@ function names_create() {
        local NAME=$2
        local NEG_TEST=$3
 
+       is_raid_foreign $DEVNAME
+
        if [[ -z "$NAME" ]]; then
                mdadm -CR "$DEVNAME" -l0 -n 1 $dev0 --force
        else