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 Foundation, ## 19 ## Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ## 20 ## ## 21 ## Author: Li Zefan <lizf (at] cn.fujitsu.com> ## 22 ## Miao Xie <miaox (at] cn.fujitsu.com> ## 23 ## ## 24 ################################################################################ 25 26 export TCID="ext4-persistent-preallocation" 27 export TST_TOTAL=2 28 29 . ext4_funcs.sh 30 31 # Use ltp's syscall/fallocate to test this feature 32 # $1: 1024 or 4096 33 ext4_test_persist_prealloc() 34 { 35 mkfs.ext4 -I 256 -b $1 $EXT4_DEV >/dev/null 2>&1 36 if [ $? -ne 0 ]; then 37 tst_resm TFAIL "failed to create ext4 filesystem" 38 return 39 fi 40 41 mount -t ext4 $EXT4_DEV mnt_point 42 if [ $? -ne 0 ]; then 43 tst_resm TFAIL "failed to mount ext4 filesystem" 44 return 45 fi 46 47 for ((i = 1; i <= 3; i++)) 48 { 49 if ! command -v fallocate0${i} > /dev/null 2>&1; then 50 tst_resm TFAIL "file - fallocate0${i} doesn't exist. Please \ 51 check whether it was compiled and installed.\ 52 (Path: LTPROOT/testcases/kernel/syscalls/fallocate)" 53 umount mnt_point 54 return 55 fi 56 57 temp_tmpdir=$TMPDIR 58 TMPDIR=${PWD}/mnt_point; fallocate0${i} > /dev/null 2>&1 59 ret=$? 60 TMPDIR=$temp_tmpdir 61 62 if [ $ret -ne 0 ]; then 63 tst_resm TFAIL "fallocate's return value is not expected" 64 umount mnt_point 65 return 66 fi 67 } 68 69 umount mnt_point 70 if [ $? -ne 0 ]; then 71 tst_resm TFAIL "failed to umount ext4 filesystem" 72 return 73 fi 74 75 e2fsck -p $EXT4_DEV >/dev/null 2>&1 76 if [ $? -ne 0 ]; then 77 tst_resm TFAIL "fsck returned failure" 78 return 79 fi 80 81 tst_resm TPASS "ext4 persistent preallocation test pass" 82 } 83 84 # main 85 ext4_setup 86 87 ext4_test_persist_prealloc 1024 88 ext4_test_persist_prealloc 4096 89 90 tst_exit 91