#!/bin/bash # FS QA Test No. 120 # # Test noatime mount option. # #----------------------------------------------------------------------- # Copyright (c) 2000-2002 Silicon Graphics, Inc. All Rights Reserved. # # 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. # # This program is distributed in the hope that it would 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 the Free Software Foundation, # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # #----------------------------------------------------------------------- # # creator owner=allanr@sgi.com seq=`basename $0` echo "QA output created by $seq" here=`pwd` tmp=/tmp/$$ status=1 # failure is the default! trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15 # get standard environment, filters and checks . ./common.rc . ./common.filter # real QA test starts here _supported_fs xfs _supported_os Linux IRIX _require_scratch _scratch_mkfs_xfs >/dev/null 2>&1 _compare_access_times() { original_access_time="`cat $tmp.out | sed -n '5p'|awk '{ print substr($0,0,32)}'`" accessed_time="`src/lstat64 $1 | sed -n '5p'| awk '{ print substr($0,0,32)}'`" echo "*** compare access times ***" if [ "$original_access_time" != "$accessed_time" ] then echo "*** file access time updated on $2 (unexpected) ***" cat $tmp.out echo "---------------------------------------------------" src/lstat64 $1 mount | grep $SCRATCH_MNT fi } if ! _scratch_mount "-o noatime" >$tmp.out 2>&1 then cat $tmp.out echo "!!! mount failed" exit fi #executable file echo "*** copying file ***" cp src/lstat64 $SCRATCH_MNT src/lstat64 $SCRATCH_MNT/lstat64 >$tmp.out sleep 5 echo "*** executing file ***" $SCRATCH_MNT/lstat64 $SCRATCH_MNT/lstat64 >/dev/null _compare_access_times $SCRATCH_MNT/lstat64 "executing file" #reading file echo "*** creating file ***" touch $SCRATCH_MNT/testfile src/lstat64 $SCRATCH_MNT/testfile >$tmp.out sleep 5 echo "*** reading file ***" cat $SCRATCH_MNT/testfile >/dev/null _compare_access_times $SCRATCH_MNT/testfile "reading file" #writing file echo "*** creating file ***" touch $SCRATCH_MNT/testfile2 src/lstat64 $SCRATCH_MNT/testfile2 >$tmp.out sleep 5 echo "*** writing to file ***" echo "asdf" >> $SCRATCH_MNT/testfile2 _compare_access_times $SCRATCH_MNT/testfile2 "writing file" umount $SCRATCH_MNT # success, all done status=0 exit