1#!/bin/sh 2################################################################################ 3## ## 4## Copyright (c) Jan Kara <jack@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@suse.cz>, ## 34# ## 35# History: Sep 18 2008 - Created - Jan Kara <jack@suse.cz>. ## 36# Feb 17 2009 - Ported to LTP, ## 37# Subrata Modak <subrata@linux.vnet.ibm.com> ## 38################################################################################ 39 40export TCID=quota_remount_test01 41export TST_TOTAL=1 42export TST_COUNT=0 43 44if [ -z $TMPDIR ] 45then 46 TMPDIR=/tmp 47fi 48MNTDIR=$TMPDIR/mnt 49 50if 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 54fi 55 56if [ ! -d /proc/sys/fs/quota ]; then 57 tst_resm TCONF "Quota not supported in kernel!" 58 exit 0 59fi 60 61die() 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 71cd $TMPDIR || die 2 "Cannot cd to $TMPDIR" 72IMAGE=ltp-$$-fs-image 73dd if=/dev/zero of=$IMAGE bs=4096 count=8000 2>/dev/null || die 2 "Cannot create filesystem image" 74mkfs.ext3 -q -F -b 4096 $IMAGE || die 2 "Could not create the filesystem" 75mkdir $MNTDIR || die 2 "Could not create the mountpoint" 76mount -t ext3 -o loop,usrquota,grpquota $IMAGE $MNTDIR || die 2 "Could not mount the filesystem" 77tst_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 81if [ -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" 84fi 85 86quotacheck -cug $MNTDIR || die 2 "Could not create quota files" 87tst_resm TINFO "Successfully Created Quota Files" 88 89quotaon -ug $MNTDIR || die 2 "Could not turn quota on" 90tst_resm TINFO "Successfully Turned on Quota" 91 92echo "blah" >$MNTDIR/file || die 2 "Could not write to the filesystem" 93tst_resm TINFO "Successfully wrote to the filesystem" 94 95# Get current quota usage 96BLOCKS=`quota -f $MNTDIR -v -w | tail -n 1 | sed -e 's/ *[^ ]* *\([0-9]*\) .*/\1/'` 97mount -o remount,ro $MNTDIR || die 1 "Could not remount read-only" 98tst_resm TINFO "Successfully Remounted Read-Only FS" 99 100mount -o remount,rw $MNTDIR || die 2 "Could not remount read-write" 101tst_resm TINFO "Successfully Remounted Read-Write FS" 102 103rm $MNTDIR/file 104# Get quota usage after removing the file 105NEWBLOCKS=`quota -f $MNTDIR -v -w | tail -n 1 | sed -e 's/ *[^ ]* *\([0-9]*\) .*/\1/'` 106# Has quota usage changed properly? 107if [ $BLOCKS -eq $NEWBLOCKS ]; then 108 die 1 "Usage did not change after remount" 109fi 110tst_resm TINFO "Usage successfully Changed after Remount" 111tst_resm TPASS "Quota on Remount Successfull" 112 113umount $MNTDIR || die 2 "Could not umount $MNTDIR" 114rmdir $MNTDIR || die 2 "Could not remove $MNTDIR" 115rm $IMAGE 116exit 0 117