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