Home | History | Annotate | Download | only in ext4-persist-prealloc
      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