1#!/bin/bash 2 3################################################################################ 4# # 5# Copyright (c) 2009 FUJITSU LIMITED # 6# # 7# This program is free software; you can redistribute it and#or modify # 8# it under the terms of the GNU General Public License as published by # 9# the Free Software Foundation; either version 2 of the License, or # 10# (at your option) any later version. # 11# # 12# This program is distributed in the hope that it will be useful, but # 13# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY # 14# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License # 15# for more details. # 16# # 17# You should have received a copy of the GNU General Public License # 18# along with this program; if not, write to the Free Software # 19# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA # 20# # 21################################################################################ 22 23export TCID="ext4-delalloc-mballoc" 24export TST_TOTAL=17 25 26. ext4_funcs.sh 27 28# Case 17: mount ext4 partition to ext3 29ext4_test_remount() 30{ 31 mkfs.ext3 -I 256 -b 1024 $EXT4_DEV >/dev/null 2>&1 32 if [ $? -ne 0 ]; then 33 tst_resm TFAIL "failed to create ext4 filesystem" 34 return 35 fi 36 37 mount -t ext4 -o delalloc,auto_da_alloc $EXT4_DEV mnt_point 38 if [ $? -ne 0 ]; then 39 tst_resm TFAIL "failed to mount ext4 filesystem" 40 return 41 fi 42 43 ffsb $LTPROOT/testcases/data/ext4-ffsb/ffsb-config0 > /dev/null 44 if [ $? -ne 0 ]; then 45 tst_resm TFAIL "ffsb returned failure" 46 umount mnt_point 47 return 48 fi 49 50 umount mnt_point 51 if [ $? -ne 0 ]; then 52 tst_resm TFAIL "failed to umount ext4 filesystem" 53 return 54 fi 55 56 mount -t ext3 $EXT4_DEV mnt_point 57 if [ $? -ne 0 ]; then 58 tst_resm TFAIL "failed to mount to ext3" 59 return 60 fi 61 umount mnt_point 62 63 fsck -p $EXT4_DEV >/dev/null 2>&1 64 if [ $? -ne 0 ]; then 65 tst_resm TFAIL "fsck returned failure" 66 return 67 fi 68 69 tst_resm TPASS "remount test pass" 70} 71 72# Case 1-16: Use ffsb to test mballoc and delalloc 73# $1: delalloc or nodelalloc 74# $2: 0 - indirect-io, 1 - direct-io 75# $3: block size 76# $4: auto_da_alloc 77ext4_test_delalloc_mballoc() 78{ 79 tst_resm TINFO "isDelalloc: $1, isDirectIO: $2, Blocksize: $3, isAuto_da_alloc: $4" 80 81 mkfs.ext4 -I 256 -b $3 /$EXT4_DEV >/dev/null 2>&1 82 if [ $? -ne 0 ]; then 83 tst_resm TFAIL "failed to create ext4 filesystem" 84 return 85 fi 86 87 tune2fs -O extents $EXT4_DEV >/dev/null 2>&1 88 89 mount -t ext4 -o $1,$4 $EXT4_DEV mnt_point 90 if [ $? -ne 0 ]; then 91 tst_resm TFAIL "failed to mount ext4 filesystem" 92 return 93 fi 94 95 ffsb $LTPROOT/testcases/data/ext4-ffsb/ffsb-config$2 > /dev/null 96 if [ $? -ne 0 ]; then 97 tst_resm TFAIL "ffsb returned failure" 98 umount mnt_point 99 return 100 fi 101 102 umount mnt_point 103 if [ $? -ne 0 ]; then 104 tst_resm TFAIL "failed to umount ext4 filesystem" 105 return 106 fi 107 108 fsck -p $EXT4_DEV >/dev/null 2>&1 109 if [ $? -ne 0 ]; then 110 tst_resm TFAIL "fsck returned failure" 111 return 112 fi 113 114 tst_resm TPASS "delalloc/mballoc test pass" 115} 116 117# main 118ext4_setup 119 120tst_check_cmds ffsb 121 122DELALLOC=( "delalloc" "nodelalloc" ) 123DIRECT_IO=( 0 1 ) 124BLOCK_SIZE=( 1024 4096 ) 125BLOCK_AUTO_DA_ALLOC=( "auto_da_alloc=1" "noauto_da_alloc" ) 126 127for ((i = 0; i < 2; i++)) 128{ 129 for ((j = 0; j < 2; j++)) 130 { 131 for ((k = 0; k < 2; k++)) 132 { 133 for ((l = 0; l < 2; l++)) 134 { 135 ext4_test_delalloc_mballoc ${DELALLOC[$k]} \ 136 ${DIRECT_IO[$j]} \ 137 ${BLOCK_SIZE[$i]} \ 138 ${BLOCK_AUTO_DA_ALLOC[$l]} 139 } 140 } 141 } 142} 143 144ext4_test_remount 145 146tst_exit 147