mdadm/tests/md_trim_support/main.sh
Xiao Ni 24f846cea4 Add gating tests
Now it doesn't have the tests directory, so the gating test fails.
This is used to support the last commit. And it uses the same bugs
from the last commit.

Resolves: rhbz#2116418, rhbz#2150862, rhbz#2159584

Signed-off-by: Xiao Ni <xni@redhat.com>
2023-05-17 20:26:25 +08:00

141 lines
3.3 KiB
Bash
Executable File

#!/bin/bash
# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# runtest.sh of /tests/kernel/storage/mdadm/trim-support
# Description: test the function trim support.
# Author: Xiao Ni <xni@redhat.com>
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Copyright (c) 2011 Red Hat, Inc. All rights reserved.
#
# This copyrighted material is made available to anyone wishing
# to use, modify, copy, or redistribute it subject to the terms
# and conditions of the GNU General Public License version 2.
#
# This program is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
# PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public
# License along with this program; if not, write to the Free
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
# Boston, MA 02110-1301, USA.
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#set -x
# Include Beaker environment
. /usr/bin/rhts-environment.sh
. /usr/lib/beakerlib/beakerlib.sh
# Include Storage related environment
. include.sh || exit 200
function Stop_Raid (){
tok mdadm --stop "$MD_RAID"
if [ $? -ne 0 ]; then
tlog "FAIL: fail to stop md raid $MD_RAID."
exit 1
fi
}
function runtest (){
# tok rmmod raid456
tok modprobe raid456 devices_handle_discard_safely=Y
tok "echo Y >/sys/module/raid456/parameters/devices_handle_discard_safely"
# info=`cat /etc/redhat-release | grep -oE "7.2|7.3"`
# if [ -n "$info" ]; then
trun "modprobe raid0 devices_discard_performance=Y"
trun "echo Y >/sys/module/raid0/parameters/devices_discard_performance"
# fi
devlist=''
which mkfs.xfs
if [ $? -eq 0 ]; then
FILESYS="xfs"
else
FILESYS="ext4"
fi
disk_num=6
#disk size M
disk_size=500
get_disks $disk_num $disk_size
devlist=$RETURN_STR
if [ $JOURNAL_SUPPORT -eq 1 ]; then
RAID_LIST="0 1 4 5 6 4-j 5-j 6-j 10"
else
RAID_LIST="0 1 4 5 6 10"
fi
for level in $RAID_LIST; do
RETURN_STR=''
MD_RAID=''
MD_DEV_LIST=''
raid_num=5
if [ "$level" = "0" ];then
spare_num=0
bitmap=0
else
spare_num=1
bitmap=1
fi
if [[ $level =~ "j" ]]; then
MD_Create_RAID_Journal ${level:0:1} "$devlist" $raid_num $bitmap $spare_num
else
MD_Create_RAID $level "$devlist" $raid_num $bitmap $spare_num
fi
if [ $? -ne 0 ];then
tlog "FAIL: Failed to create md raid $RETURN_STR"
break
else
tlog "INFO: Successfully created md raid $RETURN_STR"
fi
MD_RAID=$RETURN_STR
MD_Get_State_RAID $MD_RAID
state=$RETURN_STR
while [[ $state != "active" && $state != "clean" ]]; do
sleep 5
MD_Get_State_RAID $MD_RAID
state=$RETURN_STR
done
tlog "mkfs -t $FILESYS $MD_RAID"
(mkfs -t $FILESYS $MD_RAID) || (mkfs -t $FILESYS -f $MD_RAID)
if [ ! -d /mnt/md_test ]; then
mkdir /mnt/md_test
fi
tok mount -t $FILESYS $MD_RAID /mnt/md_test
tok fstrim -v /mnt/md_test
if [ $? -ne 0 ];then
tlog "fstrim -v /mnt/md_test failed"
fi
tok umount $MD_RAID
MD_Clean_RAID $MD_RAID
done
remove_disks "$devlist"
if [ $? -ne 0 ];then
exit 1
fi
}
tlog "running $0"
trun "rpm -q mdadm || yum install -y mdadm"
trun "uname -a"
runtest
tend