1 #!/usr/bin/perl -w 2 # 3 # Copyright (c) International Business Machines Corp., 2000 4 # 5 # This program is free software; you can redistribute it and/or modify 6 # it under the terms of the GNU General Public License as published by 7 # the Free Software Foundation; either version 2 of the License, or 8 # (at your option) any later version. 9 # 10 # This program is distributed in the hope that it will be useful, 11 # but WITHOUT ANY WARRANTY; without even the implied warranty of 12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See 13 # the GNU General Public License for more details. 14 # 15 # You should have received a copy of the GNU General Public License 16 # along with this program; if not, write to the Free Software 17 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 18 # 19 20 # 21 # FILE(s) : partbeat 22 # DESCRIPTION : Quick test to test storage management functions like mount and fsck. 23 # More can be added later without much trouble. Command line takes the 24 # partition device name (ex: /dev/hda1), an integer for how many iterations 25 # of the test you would like to run and the filesystem type to use (jfs or ext2 for now). 26 # AUTHOR : Jeff Martin (martinjn (at] us.ibm.com) 27 # HISTORY : 28 # 29 30 $target=$ARGV[0]; 31 $iterations=$ARGV[1]; 32 $fstype=$ARGV[2]; 33 34 print "mkfs:"; 35 if ($fstype =~ /jfs\b/i) { 36 $tmp = `mkfs.jfs -f $target`; 37 } 38 elsif ($fstype =~ /ext2\b/i) { 39 $tmp=`mkfs $target`; 40 } 41 elsif ($fstype =~ /ext3\b/i) { 42 $tmp=`mkfs -t ext3 $target`; 43 } 44 elsif ($fstype =~ /reiserfs\b/i) { 45 $tmp=`mkreiserfs --format 3.6 -f $target`; 46 } 47 else { 48 $tmp=`mkfs $target`; 49 } 50 print $tmp; 51 52 print "fsck:"; 53 $tmp=`fsck -t $fstype -a $target`; 54 print $tmp; 55 56 ($junk,$junk,$device)=split(/\//,$target); 57 58 `mkdir $device`; 59 60 for ($i=1;$i<=$iterations;$i++) { 61 print "mount:"; 62 $tmp=`mount -t $fstype $target $device`; 63 print ($tmp."\n"); 64 65 `touch $device/indicator$i`; 66 67 print "umount:"; 68 $tmp=`umount $target`; 69 print ($tmp."\n"); 70 } 71 72 print "fsck:"; 73 $tmp=`fsck -t $fstype -a $target`; 74 print $tmp; 75 76 `mount -t $fstype $target $device`; 77 `rm -f $device/indicator*`; 78