Current Path : /usr/src/contrib/amd/scripts/ |
FreeBSD hs32.drive.ne.jp 9.1-RELEASE FreeBSD 9.1-RELEASE #1: Wed Jan 14 12:18:08 JST 2015 root@hs32.drive.ne.jp:/sys/amd64/compile/hs32 amd64 |
Current File : //usr/src/contrib/amd/scripts/test-attrcache.in |
#!/bin/sh # Script to test the attribute cache behavior of the local OS client. # If this script fails, it means that Amd cannot turn off the attrcache # reliably on this host, and Amd therefore may not run reliably. See # the README.attrcache file distributed with this am-utils. # -Erez Zadok, September 29, 2005 # set PATH (must install am-utils first) prefix=@prefix@ exec_prefix=@exec_prefix@ PATH=@sbindir@:@bindir@:/usr/ucb:/usr/bin:/bin:${PATH} export PATH # test if amd is running amq -p > /dev/null 2>&1 if test $? = 0 then echo "### Amd already running... please shutdown Amd first" exit 1 fi mapfile="/tmp/amd.testmap.$$" logfile="/var/log/amd" delay=1 a=/a CreateMap1 () { echo "### Creating correct map" cat - >$mapfile <<EOF a type:=link;fs:=/tmp/a EOF } CreateMap2 () { echo "### Creating weird map" cat - >$mapfile <<EOF a type:=link;fs:=/tmp/b EOF } StopAMD () { ctl-amd stop # do not delete files we may need to use to debug Amd # rm -f /tmp/a /tmp/b $mapfile $logfile } touch /tmp/a touch /tmp/b CreateMap1 echo amd -x all -D all -r -l $logfile $a $mapfile -cache:=mapdefault,sync amd -x all -D all -r -l $logfile $a $mapfile -cache:=mapdefault,sync sleep 3 # give amd chance to start properly amq inode_a=`ls -lLi /tmp/a | awk '{print $1}'` inode_b=`ls -lLi /tmp/b | awk '{print $1}'` ls -lLi $a/a ls -lLi $a/b ls -l $mapfile # how many times to try until we call it a success... maxtry=10 while test $maxtry -gt 0 do echo "$maxtry tries left ..." let maxtry=maxtry-1 amq CreateMap1 sleep $delay ls -l $mapfile echo "### looking at a... should get a" ino=`ls -lLi $a/a | awk '{print $1}'` if test -z "$ino" then ls -li $a/a amq amq -m stat $a echo "a link does not exist!" StopAMD exit 1 fi if test $ino -ne $inode_a then ls -li $a/a amq amq -m stat $a echo "a link does not point to A!" StopAMD exit 1 fi # Here is the main trick we try: force amd to flush one entry, then # change the amd map on disk, and then see if the kernel will have # flushed the attribute cache; if it did, then Amd will see the # correctly changed map entry. amq -u $a/a sleep $delay stat $a CreateMap2 sleep $delay ls -l $mapfile echo "### looking at a... should get b" ino=`ls -lLi $a/a | awk '{print $1}'` if test -z "$ino" then ls -li $a/a amq amq -m stat $a echo "a link does not exist!" StopAMD exit 1 fi if test $ino -ne $inode_b then ls -li $a/a amq amq -m stat $a echo "a link does not point to B!" StopAMD exit 1 fi amq -u $a/a sleep $delay stat $a done StopAMD