4 ##############################################################
6 # Copyright (c) International Business Machines Corp., 2003
8 # This program is free software; you can redistribute it and/or modify
9 # it under the terms of the GNU General Public License as published by
10 # the Free Software Foundation; either version 2 of the License, or
11 # (at your option) any later version.
13 # This program is distributed in the hope that it will be useful,
14 # but WITHOUT ANY WARRANTY; without even the implied warranty of
15 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
16 # the GNU General Public License for more details.
18 # You should have received a copy of the GNU General Public License
19 # along with this program; if not, write to the Free Software
20 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
23 # USAGE : autofs1.sh <disk_partition>
25 # DESCRIPTION : A script that will test autofs on Linux system.
27 # 1) System with a floppy device with a floppy disk in it.
28 # 2) A spare (scratch) disk partition of 100MB or larger.
31 # 06/11/2003 Prakash Narayana (prakashn@us.ibm.com)
32 # 08/01/2005 Michael Reed (mreed10@us.ibm.com)
33 # - Added an check to see if a directory exists
34 # - This prevents unnessary failures
35 # - Correction to an echo statement
36 # - Added an additional error message if a floppy disk is not present
39 # 41.46% - fs/autofs/dirhash.c
40 # 33.33% - fs/autofs/init.c
41 # 27.70% - fs/autofs/inode.c
42 # 38.16% - fs/autofs/root.c
43 # 0.00% - fs/autofs/symlink.c
44 # 43.40% - fs/autofs/waitq.c
46 ##############################################################
49 ##############################################################
51 # Make sure that uid=root is running this script.
52 # Validate the command line argument as a block special device.
53 # Make sure that autofs package has been installed.
54 # Make sure that autofs module is built into the kernel or loaded.
56 ##############################################################
60 echo "FAILED: Must have root access to execute this script"
66 echo "FAILED: Usage $0 <disk_partition>"
67 echo "Example: $0 /dev/hdc1"
71 if [ ! -b $disk_partition ]
73 echo "FAILED: Usage $0 <block special disk_partition>"
76 mkfs
-t ext2
$disk_partition
79 rpm
-q -a |
grep autofs
82 echo "FAILED: autofs package is not installed"
86 grep autofs
/proc
/filesystems
89 echo "FAILED: autofs module is not built into the kernel or loaded"
94 ##############################################################
96 # Pick the floppy device name from /etc/fstab
97 # Format (mkfs -t ext2) the floppy to ext2 file system
98 # Create the /etc/auto.master
99 # Create the /etc/auto.media
100 # Create /AUTOFS directory.
102 ##############################################################
104 floppy_dev
=`grep floppy /etc/fstab | awk '{print $1}'`
106 echo "Found floppy device:$floppy_dev"
108 if [ $floppy_dev != "" ]
110 /sbin
/mkfs
-t ext2
$floppy_dev
113 echo "FAILED: mkfs -t ext2 $floppy_dev failed"
114 echo "Insert a disk into the floppy drive"
124 echo "/AUTOFS/MEDIA /etc/auto.media" > /etc
/auto.master
125 echo "floppy -fstype=ext2 :$floppy_dev" > /etc
/auto.media
128 ##############################################################
130 # Verify that "/etc/init.d/autofs start|restart|stop|status|reload"
133 # If fails, cleanup and exit.
135 ##############################################################
137 /etc
/init.d
/autofs start
140 rm -rf /etc
/auto.master
/etc
/auto.media
/AUTOFS
141 echo "FAILED: "/etc
/init.d
/autofs start
""
144 echo "Resuming test, please wait..."
147 /etc
/init.d
/autofs stop
150 rm -rf /etc
/auto.master
/etc
/auto.media
/AUTOFS
151 echo "FAILED: "/etc
/init.d
/autofs stop
""
154 /etc
/init.d
/autofs start
156 echo "Resuming test, please wait..."
159 /etc
/init.d
/autofs restart
162 /etc
/init.d
/autofs stop
163 rm -rf /etc
/auto.master
/etc
/auto.media
/AUTOFS
164 echo "FAILED: "/etc
/init.d
/autofs restart
""
167 echo "Resuming test, please wait..."
170 /etc
/init.d
/autofs status
173 /etc
/init.d
/autofs stop
174 rm -rf /etc
/auto.master
/etc
/auto.media
/AUTOFS
175 echo "FAILED: "/etc
/init.d
/autofs status
""
179 /etc
/init.d
/autofs reload
182 /etc
/init.d
/autofs stop
183 rm -rf /etc
/auto.master
/etc
/auto.media
/AUTOFS
184 echo "FAILED: "/etc
/init.d
/autofs reload
""
189 ##############################################################
191 # Tryout some error code paths by:
192 # (1) Write into automount directory
193 # (2) Remove automount parent directory
194 # (3) Automount the floppy disk
195 # (4) Hit automounter timeout by sleep 60; then wakeup with error
198 ##############################################################
200 echo "forcing error paths and conditions..."
202 mkdir
/AUTOFS
/MEDIA
/mydir
2>&1 > /dev
/null
203 rm -rf /AUTOFS
2>&1 > /dev
/null
205 mkdir
/AUTOFS
/MEDIA
/floppy
/test
206 cp /etc
/auto.master
/etc
/auto.media
/AUTOFS
/MEDIA
/floppy
/test
208 echo "Resuming test, please wait..."
210 mkdir
/AUTOFS
/MEDIA
/mydir
2>&1 > /dev
/null
211 rm -rf /AUTOFS
2>&1 > /dev
/null
214 ##############################################################
216 # Add an entry to the /etc/auto.master and reload.
218 ##############################################################
220 echo "/AUTOFS/DISK /etc/auto.disk" >> /etc
/auto.master
221 echo "disk -fstype=auto,rw,sync :$disk_partition " > /etc
/auto.disk
222 /etc
/init.d
/autofs reload
223 echo "Resuming test, please wait..."
228 mkdir
/AUTOFS
/DISK
/disk
/test
229 cp /etc
/auto.master
/etc
/auto.media
/AUTOFS
/DISK
/disk
/test
231 echo "Resuming test, please wait..."
235 if [ -e /AUTOFS
/DISK
/disk
/test ]; then
236 cd /AUTOFS
/DISK
/disk
/test
237 umount
/AUTOFS
/DISK
/disk
/ 2>&1 > /dev
/null
240 /etc
/init.d
/autofs stop
241 rm -rf /etc
/auto.master
/etc
/auto.media
/etc
/auto.disk
/AUTOFS
242 echo "FAILED: unmounted a busy file system!"
246 umount
/AUTOFS
/DISK
/disk
/
249 /etc
/init.d
/autofs stop
250 rm -rf /etc
/auto.master
/etc
/auto.media
/etc
/auto.disk
/AUTOFS
251 echo "FAILED: Could not unmount automounted file system"
256 # Mount the disk partition somewhere else and then reference automount
257 # point for disk partition.
259 mount
-t ext2
$disk_partition /mnt
/
260 ls -l /AUTOFS
/DISK
/disk
264 #######################################################
266 # Just before exit, stop autofs and cleanup.
268 #######################################################
270 /etc
/init.d
/autofs stop
271 rm -rf /etc
/auto.master
/etc
/auto.media
/etc
/auto.disk
/AUTOFS
272 echo "PASSED: $0 passed!"