1 #!/bin/sh 2 ################################################################################ 3 ## ## 4 ## Copyright (c) Jan Kara <jack (at] suse.cz>, 2008 ## 5 ## Copyright (c) International Business Machines Corp., 2009 ## 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 # ## 23 # File : quota_remount_test01.sh ## 24 # ## 25 # Description: Test whether kernel properly supports remounting read-only ## 26 # with quota. This feature was added in kernel 2.6.26. Please ## 27 # see: http://kernelnewbies.org/Linux_2_6_26, and ## 28 # http://git.kernel.org/git/?p=linux/kernel/git/torvalds/ ## 29 # linux-2.6.git;a=commit; ## 30 # h=0ff5af8340aa6be44220d7237ef4a654314cf795 ## 31 # for more info. ## 32 # ## 33 # Author: Jan Kara <jack (at] suse.cz>, ## 34 # ## 35 # History: Sep 18 2008 - Created - Jan Kara <jack (at] suse.cz>. ## 36 # Feb 17 2009 - Ported to LTP, ## 37 # Subrata Modak <subrata (at] linux.vnet.ibm.com> ## 38 ################################################################################ 39 40 export TCID=quota_remount_test01 41 export TST_TOTAL=1 42 export TST_COUNT=0 43 44 if [ -z $TMPDIR ] 45 then 46 TMPDIR=/tmp 47 fi 48 MNTDIR=$TMPDIR/mnt 49 50 tst_kvercmp 2 6 26 51 if [ $? -eq 0 ]; then 52 tst_resm TCONF "Remounting with quotas enabled is not supported!" 53 tst_resm TCONF "You should have kernel 2.6.26 and above running....." 54 exit 0 55 fi 56 57 if [ ! -d /proc/sys/fs/quota ]; then 58 tst_resm TCONF "Quota not supported in kernel!" 59 exit 0 60 fi 61 62 die() 63 { 64 echo >&2 $2 65 umount 2>/dev/null $MNTDIR 66 rm 2>/dev/null $IMAGE 67 rmdir 2>/dev/null $MNTDIR 68 tst_resm TFAIL "Quota on Remount Failed" 69 exit $1 70 } 71 72 cd $TMPDIR || die 2 "Cannot cd to $TMPDIR" 73 IMAGE=ltp-$$-fs-image 74 dd if=/dev/zero of=$IMAGE bs=4096 count=8000 2>/dev/null || die 2 "Cannot create filesystem image" 75 mkfs.ext3 -q -F -b 4096 $IMAGE || die 2 "Could not create the filesystem" 76 mkdir $MNTDIR || die 2 "Could not create the mountpoint" 77 mount -t ext3 -o loop,usrquota,grpquota $IMAGE $MNTDIR || die 2 "Could not mount the filesystem" 78 tst_resm TINFO "Successfully mounted the File System" 79 80 # some distros (CentOS 6.x, for example) doesn't permit creating 81 # of quota files in a directory with SELinux file_t type 82 if [ -x /usr/sbin/selinuxenabled ] && /usr/sbin/selinuxenabled; then 83 chcon -t tmp_t $MNTDIR || die 2 "Could not change SELinux file type" 84 tst_resm TINFO "Successfully changed SELinux file type" 85 fi 86 87 quotacheck -cug $MNTDIR || die 2 "Could not create quota files" 88 tst_resm TINFO "Successfully Created Quota Files" 89 90 quotaon -ug $MNTDIR || die 2 "Could not turn quota on" 91 tst_resm TINFO "Successfully Turned on Quota" 92 93 echo "blah" >$MNTDIR/file || die 2 "Could not write to the filesystem" 94 tst_resm TINFO "Successfully wrote to the filesystem" 95 96 # Get current quota usage 97 BLOCKS=`quota -f $MNTDIR -v -w | tail -n 1 | sed -e 's/ *[^ ]* *\([0-9]*\) .*/\1/'` 98 mount -o remount,ro $MNTDIR || die 1 "Could not remount read-only" 99 tst_resm TINFO "Successfully Remounted Read-Only FS" 100 101 mount -o remount,rw $MNTDIR || die 2 "Could not remount read-write" 102 tst_resm TINFO "Successfully Remounted Read-Write FS" 103 104 rm $MNTDIR/file 105 # Get quota usage after removing the file 106 NEWBLOCKS=`quota -f $MNTDIR -v -w | tail -n 1 | sed -e 's/ *[^ ]* *\([0-9]*\) .*/\1/'` 107 # Has quota usage changed properly? 108 if [ $BLOCKS -eq $NEWBLOCKS ]; then 109 die 1 "Usage did not change after remount" 110 fi 111 tst_resm TINFO "Usage successfully Changed after Remount" 112 tst_resm TPASS "Quota on Remount Successfull" 113 114 umount $MNTDIR || die 2 "Could not umount $MNTDIR" 115 rmdir $MNTDIR || die 2 "Could not remove $MNTDIR" 116 rm $IMAGE 117 exit 0 118