mdadm/tests/md_trim_support/main.sh

141 lines
3.3 KiB
Bash
Raw Permalink Normal View History

#!/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