Home | History | Annotate | Download | only in quota_remount
      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 if tst_kvcmp -lt "2.6.25"; then
     51         tst_resm TCONF "Remounting with quotas enabled is not supported!"
     52         tst_resm TCONF "You should have kernel 2.6.26 and above running....."
     53         exit 32
     54 fi
     55 
     56 if [ ! -d /proc/sys/fs/quota ]; then
     57         tst_resm TCONF "Quota not supported in kernel!"
     58         exit 0
     59 fi
     60 
     61 die()
     62 {
     63 	echo >&2 $2
     64 	umount 2>/dev/null $MNTDIR
     65 	rm 2>/dev/null $IMAGE
     66 	rmdir 2>/dev/null $MNTDIR
     67         tst_resm TFAIL "Quota on Remount Failed"
     68 	exit $1
     69 }
     70 
     71 cd $TMPDIR || die 2 "Cannot cd to $TMPDIR"
     72 IMAGE=ltp-$$-fs-image
     73 dd if=/dev/zero of=$IMAGE bs=4096 count=8000 2>/dev/null || die 2 "Cannot create filesystem image"
     74 mkfs.ext3 -q -F -b 4096 $IMAGE || die 2 "Could not create the filesystem"
     75 mkdir $MNTDIR || die 2 "Could not create the mountpoint"
     76 mount -t ext3 -o loop,usrquota,grpquota $IMAGE $MNTDIR || die 2 "Could not mount the filesystem"
     77 tst_resm TINFO "Successfully mounted the File System"
     78 
     79 # some distros (CentOS 6.x, for example) doesn't permit creating
     80 # of quota files in a directory with SELinux file_t type
     81 if [ -x /usr/sbin/selinuxenabled ] && /usr/sbin/selinuxenabled; then
     82 	chcon -t tmp_t $MNTDIR || die 2 "Could not change SELinux file type"
     83 	tst_resm TINFO "Successfully changed SELinux file type"
     84 fi
     85 
     86 quotacheck -cug $MNTDIR || die 2 "Could not create quota files"
     87 tst_resm TINFO "Successfully Created Quota Files"
     88 
     89 quotaon -ug $MNTDIR || die 2 "Could not turn quota on"
     90 tst_resm TINFO "Successfully Turned on Quota"
     91 
     92 echo "blah" >$MNTDIR/file || die 2 "Could not write to the filesystem"
     93 tst_resm TINFO "Successfully wrote to the filesystem"
     94 
     95 # Get current quota usage
     96 BLOCKS=`quota  -f $MNTDIR -v -w | tail -n 1 | sed -e 's/ *[^ ]* *\([0-9]*\) .*/\1/'`
     97 mount -o remount,ro $MNTDIR || die 1 "Could not remount read-only"
     98 tst_resm TINFO "Successfully Remounted Read-Only FS"
     99 
    100 mount -o remount,rw $MNTDIR || die 2 "Could not remount read-write"
    101 tst_resm TINFO "Successfully Remounted Read-Write FS"
    102 
    103 rm $MNTDIR/file
    104 # Get quota usage after removing the file
    105 NEWBLOCKS=`quota  -f $MNTDIR -v -w | tail -n 1 | sed -e 's/ *[^ ]* *\([0-9]*\) .*/\1/'`
    106 # Has quota usage changed properly?
    107 if [ $BLOCKS -eq $NEWBLOCKS ]; then
    108   die 1 "Usage did not change after remount"
    109 fi
    110 tst_resm TINFO "Usage successfully Changed after Remount"
    111 tst_resm TPASS "Quota on Remount Successfull"
    112 
    113 umount $MNTDIR || die 2 "Could not umount $MNTDIR"
    114 rmdir $MNTDIR ||  die 2 "Could not remove $MNTDIR"
    115 rm $IMAGE
    116 exit 0
    117