Veerendra wrote:
> Hi ,
>
> Here is the RO Bind mount updated testcase.
> This script consists of 3 files
>
> test_robind.sh - This is the basis testcase which setups the
> infrastructure for the ROBind mount
> fs_ro_test - Which has the different tests to be executed.
> Readme_ROBind - Explains the different testcases executed.
>
> This testcase addresses the earlier comments and has been made more generic.
> Also will be adding few ioctl syscalls testcases to the fs_ro_test flatfile.
> As we can append more tests to the flat file fs_ro_test.
> *
>
> Regards
> Veerendra C*
>
>
>
>
>
> ------------------------------------------------------------------------
>
> Index: ltp-full-20080630/testscripts/test_robind.sh
> ===================================================================
> --- /dev/null
> +++ ltp-full-20080630/testscripts/test_robind.sh
> @@ -0,0 +1,263 @@
> +#!/bin/bash
> +#
> +# Copyright (c) International Business Machines Corp., 2008
> +#
> +# This program is free software; you can redistribute it and/or modify
> +# it under the terms of the GNU General Public License as published by
> +# the Free Software Foundation; either version 2 of the License, or
> +# (at your option) any later version.
> +#
> +# This program is distributed in the hope that it will be useful,
> +# but WITHOUT ANY WARRANTY; without even the implied warranty of
> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
> +# the GNU General Public License for more details.
> +#
> +# You should have received a copy of the GNU General Public License
> +# along with this program; if not, write to the Free Software
> +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
> +#
> +#*******************************************************************************
> +# Readme_ROBind has more details on the tests running for ROBIND.
> +# TEST:
> +# NAME: test_robind.sh
> +# FUNCTIONALITY: File system tests for normal mount, bind mount and RO
> mount
> +#
> +# DESCRIPTION: Performs filesystems tests for RO mount.
> +# For filesystem's like ext2, ext3, reiserfs, jfs & xfs.
> +# This test creates an image-file and
> +# a) mounts on dir1,
> +# b) mount --bind dir2
> +# c) mount -o remount,ro
> +# It verifies the tests on a) and b) works correctly.
> +# For the c) option it checks that the tests are not able to write into
> dir.
> +# Then it executes the tests from flat-file
> {LTPROOT}/runtest/fs_ro_tests
> +# Check the logs /tmp/fs$$/errs.log and /tmp/fs$$/pass.log for
> pass/failures.
> +#===============================================================================
> +#
> +# CHANGE HISTORY:
> +# DATE AUTHOR REASON
> +# 09/06/2008 Veerendra Chandrappa For Container, testing of RO-Bind
> mount
> +# Dave Hansen
> +# This script is based on the Dave Hansen script for testing the robind.
> +#*******************************************************************************
> +
> +#trace_logic=${trace_logic:-"set -x"}
> +$trace_logic
> +
> +# The test case ID, the test case count and the total number of test case
> +TCID=${TCID:-test_robind.sh}
> +TST_TOTAL=1
> +TST_COUNT=1
> +export TCID
> +export TST_COUNT
> +export TST_TOTAL
> +
> +usage()
> +{
> + cat << EOF
> + usage: $0 [ext3,ext2,jfs,xfs,reiserfs,ramfs]
> +
> + This script verifies ReadOnly-filesystem, by mounting imagefile and
> + executing the filesystem tests.
> +
> + OPTIONS
> + -h display this message and exit
> +EOF
> +}
> +
> +DIRS="dir1 dir2-bound dir3-ro"
> +TMPDIR=/tmp/fs$$
> +trap cleanup ERR
> +trap cleanup INT
> +
> +#==============================================================================
> +# FUNCTION NAME: cleanup
> +#
> +# FUNCTION DESCRIPTION: Unmounts dir, Removes dir's, files created by the
> tests.
> +#
> +# PARAMETERS: The $fs_image .
> +#
> +# RETURNS: None.
> +#==============================================================================
> +function cleanup
> +{
> + umount ${TMPDIR}/dir3-ro 2> /dev/null > /dev/null
> + umount ${TMPDIR}/dir2-bound 2> /dev/null 1> /dev/null
> + umount ${TMPDIR}/dir1 2> /dev/null 1> /dev/null
> + if [ ! -z $1 ]; then {
> + rm -rf $1 || true
> + }
> + fi
> +}
> +
> +#===============================================================================
> +# FUNCTION NAME: setup
> +#
> +# FUNCTION DESCRIPTION: Does the initailization
> +#
> +# PARAMETERS: File_systems (if any )
> +#
> +# RETURNS: None.
> +#===============================================================================
> +function setup
> +{
> + mkdir ${TMPDIR}
> + FAILLOG="$TMPDIR/errs.log"
> + PASSLOG="$TMPDIR/pass.log"
> +
> + for i in $DIRS; do
> + rm -rf ${TMPDIR}/$i || true
> + mkdir -p ${TMPDIR}/$i
> + done;
> +
> + # Populating the default FS as ext3, if FS is not given
> + if [ -z "$*" ]; then
> + FSTYPES="ext3"
> + else
> + FSTYPES="$*"
> + fi
> +
> + # set the LTPROOT directory
> + cd `dirname $0`
> + echo "${PWD}" | grep testscripts > /dev/null 2>&1
> + if [ $? -eq 0 ]; then
> + cd ..
> + export LTPROOT="${PWD}"
> + export PATH="${PATH}:${LTPROOT}/testcases/bin"
> + fi
> +
> + FS_Tests="${LTPROOT}/runtest/fs_ro_tests"
> + cd ${TMPDIR}
> +}
> +
> +#=============================================================================
> +# FUNCTION NAME: testdir
> +#
> +# FUNCTION DESCRIPTION: The core function where it runs the tests
> +#
> +# PARAMETERS: dir_name, file_systems, Read_only flag = [true|false]
> +#
> +# RETURNS: None.
> +#=============================================================================
> +function testdir
> +{
> + dir=$1
> + fs=$2
> + RO=$3
> + pushd $dir
> + testnums=`wc -l $FS_Tests | cut -f1 -d" "`
> + status=0
> +
> + echo "---------------------------------------------------" >> $FAILLOG ;
> + echo "Running RO-FileSystem Tests for $dir $fs filesystem" >> $FAILLOG ;
> + echo "---------------------------------------------------" >> $FAILLOG ;
> +
> + echo "---------------------------------------------------" >> $PASSLOG ;
> + echo "Running RO-FileSystem Tests for $dir $fs filesystem" >> $PASSLOG ;
> + echo "---------------------------------------------------" >> $PASSLOG ;
> +
> + export TDIRECTORY=$PWD ;
> + echo TDIR is $TDIRECTORY;
> + if [ $RO == false ] ; then # Testing Read-Write
> dir
> + for tests in `seq $testnums` ; do
> + cmd=`cat $FS_Tests | head -$tests | tail -1`
> +# eval $cmd 2>&1 /dev/null
> + eval $cmd 2> /dev/null 1> /dev/null
> + if [ $? -eq 0 ]; then
> + echo "$tests. '$cmd' PASS" >> $PASSLOG
> + else
> + echo "$tests. '$cmd' FAIL " >> $FAILLOG
> + echo "TDIR is $TDIRECTORY" >> $FAILLOG;
> + status=1
> + fi
> + done
> +
> + else # Testing Read-Only
> dir
> + for tests in `seq $testnums` ; do
> + cmd=`cat $FS_Tests | head -$tests | tail -1`
> + eval $cmd 2> /dev/null 1> /dev/null
> + if [ $? -ne 0 ]; then
> + echo "$tests. '$cmd' PASS " >> $PASSLOG
> + else
> + echo "$tests. '$cmd' FAIL" >> $FAILLOG
> + status=1
> + fi
> + done
> + fi
> + if [ $status == 1 ] ; then
> + echo "RO-FileSystem Tests FAILED for $dir $fs filesystem" >> $FAILLOG
> + echo >> $FAILLOG
> + else
> + echo "RO-FileSystem Tests PASSed for $dir $fs filesystem" >> $PASSLOG
> + echo >> $PASSLOG
> + fi
> + # Remove all the temp-files created.
> + eval rm -rf ${TMPDIR}/${dir}/* > /dev/null 2>&1 /dev/null || true
> + unset TDIRECTORY
> + popd
> +}
> +
> +#=============================================================================
> +# MAIN
> +# See the description, purpose, and design of this test under TEST
> +# in this test's prolog.
> +#=============================================================================
> +while getopts h: OPTION; do
> + case $OPTION in
> + h)
> + usage
> + exit 1
> + ;;
> + ?)
> + usage
> + exit 1
> + ;;
> + esac
> +done
> +# Does the initial setups
> +oldpwd=${PWD}
> +setup $*
> +
> +# Executes the tests for differnt FS's
> +# Creates an image file of 500 MB and mounts it.
> +for fstype in $FSTYPES; do
> + image=$fstype.img
> + dd if=/dev/zero of=$image bs=$((1<<20)) count=500 2> /dev/null 1>
> /dev/null
> + if [ $? -ne 0 ] ; then
> + tst_resm, TFAIL "Unable to create image "
> + tst_resm, TFAIL "Free Disk space of 512MB is required in /tmp fs"
> + tst_resm, TFAIL "Please free it and rerun thank you.."
> + rm -f $image
> + sleep 2
> + exit -1
> + fi
> +
> + OPTS="-F"
> + if [ "$fstype" == "reiserfs" ]; then
> + OPTS="-f --journal-size 513 -q"
> + elif [ "$fstype" == "jfs" ]; then
> + OPTS="-f"
> + elif [ "$fstype" == "xfs" ]; then
> + OPTS=""
> + fi
> +
> + if [ "$fstype" != "ramfs" ] ; then
> + mkfs.$fstype $OPTS $image 2> /dev/null 1> /dev/null
> + fi
> +
> + mount -t $fstype -o loop $image dir1
> + mount --bind dir1 dir2-bound || exit
> + mount --bind dir1 dir3-ro || exit
> + mount -o remount,ro dir3-ro || exit
> +
> + testdir dir1 $fstype false
> + testdir dir2-bound $fstype false
> + testdir dir3-ro $fstype true
> + cleanup $image
> +done
> +
> + for i in $DIRS; do
> + rm -rf ./$i || true
> + done;
> + cd $oldpwd || true
> +
> Index: ltp-full-20080630/runtest/fs_ro_tests
> ===================================================================
> --- /dev/null
> +++ ltp-full-20080630/runtest/fs_ro_tests
> @@ -0,0 +1,56 @@
> +growfiles -W gf01 -b -e 1 -u -i 0 -L 5 -w -C 1 -l -I r -T 10 glseek20
> glseek20.2
> +growfiles -W gf02 -b -e 1 -L 10 -i 100 -I p -S 2 -u -f gf03_
> +growfiles -W gf03 -b -e 1 -g 1 -i 1 -S 150 -u -f gf05_
> +growfiles -W gf04 -b -e 1 -g 4090 -i 500 -t 39000 -u -f gf06_
> +growfiles -W gf05 -b -e 1 -g 5000 -i 500 -t 49900 -T10 -c9 -I p -u -f gf07_
> +growfiles -W gf06 -b -e 1 -u -r 1-5000 -R 0--1 -i 0 -L 3 -C 1 g_rand10
> g_rand10.2
> +growfiles -W gf07 -b -e 1 -u -r 1-5000 -R 0--2 -i 0 -L 3 -C 1 -I p g_rand13
> g_rand13.2
> +growfiles -W gf08 -b -e 1 -u -r 1-5000 -R 0--2 -i 0 -L 3 -C 1 g_rand11
> g_rand11.2
> +growfiles -W gf09 -b -e 1 -u -r 1-5000 -R 0--1 -i 0 -L 3 -C 1 -I p g_rand12
> g_rand12.2
> +growfiles -W gf10 -b -e 1 -u -r 1-5000 -i 0 -L 3 -C 1 -I l g_lio14 g_lio14.2
> +growfiles -W gf11 -b -e 1 -u -r 1-5000 -i 0 -L 3 -C 1 -I L g_lio15 g_lio15.2
> +mkfifo gffifo17; growfiles -b -W gf12 -e 1 -u -i 0 -L 3 gffifo17
> +mkfifo gffifo18; growfiles -b -W gf13 -e 1 -u -i 0 -L 3 -I r -r 1-4096
> gffifo18
> +growfiles -W gf14 -b -e 1 -u -i 0 -L 2 -w -l -C 1 -T 10 glseek19 glseek19.2
> +growfiles -W gf15 -b -e 1 -u -r 1-49600 -I r -u -i 0 -L 3 Lgfile1
> +growfiles -W gf16 -b -e 1 -i 0 -L 3 -u -g 4090 -T 100 -t 408990 -l -C 10 -c
> 1000 -S 10 -f Lgf02_
> +growfiles -W gf17 -b -e 1 -i 0 -L 3 -u -g 5000 -T 100 -t 499990 -l -C 10 -c
> 1000 -S 10 -f Lgf03_
> +growfiles -W gf18 -b -e 1 -i 0 -L 3 -w -u -r 10-5000 -I r -l -S 2 -f Lgf04_
> +growfiles -W gf19 -b -e 1 -g 5000 -i 500 -t 49900 -T10 -c9 -I p -o
> O_RDWR,O_CREAT,O_TRUNC -u -f gf08i_
> +growfiles -W gf20 -D 0 -b -i 0 -L 60 -u -B 1000b -e 1 -r 1-256000:512 -R
> 512-256000 -T 4 gfbigio-$$
> +growfiles -W gf21 -D 0 -b -i 0 -L 60 -u -B 1000b -e 1 -g 20480 -T 10 -t
> 20480 gf-bld-$$
> +growfiles -W gf22 -D 0 -b -i 0 -L 60 -u -B 1000b -e 1 -g 20480 -T 10 -t
> 20480 gf-bldf-$$
> +growfiles -W gf23 -D 0 -b -i 0 -L 60 -u -B 1000b -e 1 -r 512-64000:1024 -R
> 1-384000 -T 4 gf-inf-$$
> +growfiles -W gf24 -D 0 -b -i 0 -L 60 -u -B 1000b -e 1 -g 20480 gf-jbld-$$
> +growfiles -W gf25 -D 0 -b -i 0 -L 60 -u -B 1000b -e 1 -r
> 1024000-2048000:2048 -R 4095-2048000 -T 1 gf-large-gs-$$
> +growfiles -W gf26 -D 0 -b -i 0 -L 60 -u -B 1000b -e 1 -r 128-32768:128 -R
> 512-64000 -T 4 gfsmallio-$$
> +growfiles -W gf27 -b -D 0 -w -g 8b -C 1 -b -i 1000 -u gfsparse-1-$$
> +growfiles -W gf28 -b -D 0 -w -g 16b -C 1 -b -i 1000 -u gfsparse-2-$$
> +growfiles -W gf29 -b -D 0 -r 1-4096 -R 0-33554432 -i 0 -L 60 -C 1 -u
> gfsparse-3-$$
> +growfiles -W gf30 -D 0 -b -i 0 -L 60 -u -B 1000b -e 1 -o
> O_RDWR,O_CREAT,O_SYNC -g 20480 -T 10 -t 20480 gf-sync-$$
> +rwtest -N rwtest01 -c -q -i 60s -f sync 10%25000:rw-sync-$$
> +rwtest -N rwtest02 -c -q -i 60s -f buffered 10%25000:rw-buffered-$$
> +rwtest -N rwtest03 -c -q -i 60s -n 2 -f buffered -s mmread,mmwrite -m
> random -Dv 10%25000:mm-buff-$$
> +rwtest -N rwtest04 -c -q -i 60s -n 2 -f sync -s mmread,mmwrite -m random
> -Dv 10%25000:mm-sync-$$
> +rwtest -N rwtest05 -c -q -i 50 -T 64b 500b:rwtest01%f
> +rwtest -N iogen01 -i 120s -s read,write -Da -Dv -n 2 500b:doio.f1.$$
> 1000b:doio.f2.$$
> +fs_inod . 10 10 1
> +linktest.pl
> +openfile -f10 -t10
> +inode01
> +inode02
> +stream01
> +stream02
> +stream03
> +stream04
> +stream05
> +ftest01
> +ftest02
> +ftest03
> +ftest04
> +ftest05
> +ftest06
> +ftest07
> +ftest08
> +lftest 80
> +writetest
> Index: ltp-full-20080630/testscripts/Readme_ROBind
> ===================================================================
> --- /dev/null
> +++ ltp-full-20080630/testscripts/Readme_ROBind
> @@ -0,0 +1,100 @@
> +
> +The ReadOnly Bind mount tests, uses the filesystems tests from
> +the {LTPROOT}/testcases/kernel/fs .
> +
> +IOGEN & DOIO
> + |
> + ----- iogen
> + |
> + ----- doio
> + |
> + ----- rwtest
> + |
> + ----- growfiles
> +FS_INOD
> +LINKTEST
> +OPENFILE
> +INODE
> +STREAM
> +FTEST
> +LFTEST
> +WRITETEST.
> +
> +IOGEN & DOIO
> +=============
> +
> + This is a pair of programs that does basic I/O operations on a set of
> files.
> +The file offset, I/O length, I/O operation, and what open(2) flags are
> +selected randomly from a pre-defined or commandline given set. All data
> +written can be verified (this is the usual method).
> +
> +RWTest
> +-----
> +rwtest is a shell script that is a wrapper of iogen and doio.
> +
> +Growfiles
> +--------
> +Growfiles will create and truncate files in gradual steps using write and
> lseek.
> +The system calls are checked for proper returns.
> +
> +FS_INOD
> +============
> +
> +File system stress - inode allocation/deallocation.
> +Rapidly creates and deletes files through multiple processes running in the
> +background.
> +
> +
> +LINKTEST
> +===========
> +
> +Linktest.pl is a simple test that attempts to create a given number of hard
> +links and symbolic links to a single file.
> +
> +
> +OPENFILE
> +===========
> +
> +Create files and open simultaneously.
> +
> +INODE
> +==================
> +
> +Does the File system managment and I/O functions work.
> +This Construct a directory tree, create files in it, and verify
> +that this was done as expected. It uses the syscalls mkdir, stat, open
> +
> +
> +STREAM
> +============
> +
> +Performs different tests on the stream syscalls.
> +This uses the syscalls freopen, fopen, mknod, ftell, fwrite, fread, ferror,
> +feof, clearerr and fileno.
> +
> +FTEST
> +=========
> +Tests the file I/O, Inodes.
> +Uses the syscalls
> + * lseek, read, write, truncate, ftruncate, fsync, sync, fstat
> + * open, close, unlink, chdir, readv, writev, lseek64, llseek
> +
> +LFTEST
> +==========
> +
> +Uses the lseek64.
> +This writes one buffer at a time and lseeks from the beginning of the file
> to the
> +end of the last write position
> +
> +
> +WRITETEST
> +=============
> +
> +This test verifies that writes to disk occur without corruption.
> +Once done , the file is re-opened, the random number generator
> +is re-seeded, and the file is verified.
> +
> +IOCTL
> +========
> +( Note: Writing the tests to include tests on the ioctl system calls.)
> +
>
>
Hi Veerendra,
I tried testing your patch over the LTP-20080731 and I get segmentation fault
(this seems to
be caused by signal 11).
/home/test/testcases/ltp-full-20080731/pan/pan -e -S -a 1849 -n 1849 -p -f
/tmp/ltp-1849/alltests -l
/home/test/testcases/ltp-full-20080731/results/LTP_RUN_ON-2008_Aug_08-20h_39m_02s.log
-C
/home/test/testcases/ltp-full-20080731/output/LTP_RUN_ON-2008_Aug_08-20h_39m_02s.failed
`/tmp/ltp-1849/alltests' -> `/tmp/k'
./runltp: line 164: 1950 Segmentation fault (core dumped)
${LTPROOT}/pan/pan $QUIET_MODE -e -S $INSTANCES $DURATION -a $$ -n $$
$PRETTY_PRT -f ${TMP}/alltests $LOGFILE $OUTPUTFILE $FAILCMDFILE
INFO: pan reported some tests FAIL
LTP Version: LTP-20080731
###############################################################"
Done executing testcases."
LTP Version: LTP-20080731
###############################################################"
--
Thanks & Regards,
Kamalesh Babulal,
Linux Technology Center,
IBM, ISTL.
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list