From mboxrd@z Thu Jan 1 00:00:00 1970 From: Teck Choon Giam Subject: Re: kernel BUG at arch/x86/xen/mmu.c:1860! Date: Sat, 15 Jan 2011 03:25:55 +0800 Message-ID: References: <20101227155314.GG3728@dumpdata.com> <20101228104256.GJ2754@reaktio.net> <20110114152039.GA7455@dumpdata.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0115748610==" Return-path: In-Reply-To: <20110114152039.GA7455@dumpdata.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: Konrad Rzeszutek Wilk Cc: xen-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org --===============0115748610== Content-Type: multipart/alternative; boundary=0015175caaae38ad370499d367bf --0015175caaae38ad370499d367bf Content-Type: text/plain; charset=ISO-8859-1 On Fri, Jan 14, 2011 at 11:20 PM, Konrad Rzeszutek Wilk < konrad.wilk@oracle.com> wrote: > On Wed, Dec 29, 2010 at 12:58:15PM +0800, Teck Choon Giam wrote: > > Below is my latest test crash script: > > This test script is still valid? Or do you have a more updated one? > Below is the more updated one. Please note that this will mostly not support VG in CLVM since clustered LVM doesn't support snapshot in my CentOS 5 testing... ... ----------8<----------8<----------8<----------8<----------8<----------8<----------8<----------8<----------8<---------- #!/bin/sh # # This script is to create lvm snapshot, mount it, umount it and remove in a # specified number of loops to test whether it will crash the host server. # All LVM snapshots assumed can be mounted like if you are running a PV domU. # # Created by Giam Teck Choon # # The LV name and for this case we are using the first in vgdisplay output. # Change the variable if you want other VG Name or change head -n 1 to # tail -n 1 if you prefer to use last VG instead of first if you happen to have # more than one VG LVGroupName=`vgdisplay | grep 'VG Name' | awk '{print $3}' | head -n 1` if [ ! -n "$LVGroupName" ] && [ ! -d "/dev/${LVGroupName}" ] ; then echo "Unable to detect VG Name!" exit 1 fi # return 1 if is mounted otherwise return 0 check_mount() { local checkdir=${1} if [ -n "$checkdir" ] ; then local check=`grep "$checkdir" /proc/mounts` if [ -n "$check" ] ; then return 1 fi fi return 0 } # We will create 5 testcrash LV in $LVGroupName each with 5GB size # and format it as ext3 do_lvm_create_testcrash() { local lvname=${1:-testcrash} local lvsize=${2:-5G} local count=1 local limit=5 while [ "$count" -le "$limit" ] do if [ ! -h "/dev/${LVGroupName}/${lvname}${count}" ] ; then echo "lvcreate -v -n ${lvname}${count} -L ${lvsize} ${LVGroupName} ... ... " lvcreate -v -n ${lvname}${count} -L ${lvsize} ${LVGroupName} echo "lvcreate -v -n ${lvname}${count} -L ${lvsize} ${LVGroupName} completed!" if [ -h "/dev/${LVGroupName}/${lvname}${count}" ] ; then echo "mke2fs -F -j /dev/${LVGroupName}/${lvname}${count} ... ... " mke2fs -F -j /dev/${LVGroupName}/${lvname}${count} echo "mke2fs -F -j /dev/${LVGroupName}/${lvname}${count} completed!" else echo "/dev/${LVGroupName}/${lvname}${count} not found!" fi fi count=`expr $count + 1` done } do_lvm_create_remove() { # number of loops default is 1 local loopcountlimit=${1:-1} # snapshot size default is 1G local snapshotsize=${2:-1G} # implement a sleep between create, mount, umount and remove (default is 0 which is no pause) local pauseinterval=${3:-0} # execute commands after each pause/sleep such as sync or anything that you want to test local commands=${4} # We filter out snapshot and swap local count=0 if [ -d "/dev/${LVGroupName}" ] ; then while [ "$count" -lt "$loopcountlimit" ] do count=`expr $count + 1` echo "${count} ... ... " for i in `ls /dev/${LVGroupName} | grep -Ev 'snapshot$' | grep -Ev 'swap$'`; do if [ -h "/dev/${LVGroupName}/${i}" ] ; then echo -n "lvcreate -s -v -n ${i}-snapshot -L ${snapshotsize} /dev/${LVGroupName}/${i} ... ... " lvcreate -s -v -n ${i}-snapshot -L ${snapshotsize} /dev/${LVGroupName}/${i} echo "done." sleep ${pauseinterval} if [ -n "$commands" ] ; then echo -n "${commands} ... ... " $commands echo "done." fi mkdir -p /mnt/testlvm/${i} if [ -h "/dev/${LVGroupName}/${i}-snapshot" ] ; then check_mount /mnt/testlvm/${i} local ismount=$? if [ "$ismount" -eq 0 ] ; then echo -n "mount /dev/${LVGroupName}/${i}-snapshot /mnt/testlvm/${i} ... ... " mount /dev/${LVGroupName}/${i}-snapshot /mnt/testlvm/${i} echo "done." sleep ${pauseinterval} if [ -n "$commands" ] ; then echo -n "${commands} ... ... " $commands echo "done." fi fi check_mount /mnt/testlvm/${i} local ismount2=$? if [ "$ismount2" -eq 1 ] ; then echo -n "umount /mnt/testlvm/${i} ... ... " umount /mnt/testlvm/${i} echo "done." sleep ${pauseinterval} if [ -n "$commands" ] ; then echo -n "${commands} ... ... " $commands echo "done." fi fi fi rm -rf /mnt/testlvm/${i} echo -n "lvremove -f /dev/${LVGroupName}/${i}-snapshot ... ... " lvremove -f /dev/${LVGroupName}/${i}-snapshot echo "done." sleep ${pauseinterval} if [ -n "$commands" ] ; then echo -n "${commands} ... ... " $commands echo "done." fi fi done rm -fr /mnt/testlvm done else echo "/dev/${LVGroupName} directory not found!" exit 1 fi } case $1 in setup) shift do_lvm_create_testcrash "$@" ;; loop) shift do_lvm_create_remove "$@" ;; *) cat <
On Fri, Jan 14, 2011 at 11:20 PM, Konrad= Rzeszutek Wilk <konrad.wilk@oracle.com> wrote:
On Wed, Dec 29, 2010 at 12:58:15PM +0800, Teck Choon Giam= wrote:
> Below is my latest test crash script:

This test script is still valid? Or do you have a more updated one?

Below is the more updated one.=A0 Please note that = this will mostly not support VG in CLVM since clustered LVM doesn't sup= port snapshot in my CentOS 5 testing... ...

----------8<----------8<----------8<----------8<= ----------8<----------8<----------8<----------8<----------8<= ----------
#!/bin/sh
#
# This script is to create lvm snapshot, mo= unt it, umount it and remove in a
# specified number of loops to test whether it will crash the host server.<= br># All LVM snapshots assumed can be mounted like if you are running a PV = domU.
#
# Created by Giam Teck Choon
#

# The LV name and fo= r this case we are using the first in vgdisplay output.
# Change the variable if you want other VG Name or change head -n 1 to
#= tail -n 1 if you prefer to use last VG instead of first if you happen to h= ave
# more than one VG
LVGroupName=3D`vgdisplay | grep 'VG Name&#= 39; | awk '{print $3}' | head -n 1`

if [ ! -n "$LVGroupName" ] && [ ! -d "/dev/${LVG= roupName}" ] ; then
=A0=A0=A0 echo "Unable to detect VG Name!&= quot;
=A0=A0=A0 exit 1
fi

# return 1 if is mounted otherwise r= eturn 0
check_mount() {
=A0=A0=A0 local checkdir=3D${1}
=A0=A0=A0 if [ -n &qu= ot;$checkdir" ] ; then
=A0=A0=A0 =A0=A0=A0 local check=3D`grep &quo= t;$checkdir" /proc/mounts`
=A0=A0=A0 =A0=A0=A0 if [ -n "$check= " ] ; then
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 return 1
=A0=A0=A0 =A0=A0=A0 fi
=A0=A0=A0 fi
=A0=A0=A0 return 0
}

# = We will create 5 testcrash LV in $LVGroupName each with 5GB size
# and f= ormat it as ext3
do_lvm_create_testcrash() {
=A0=A0=A0 local lvname= =3D${1:-testcrash}
=A0=A0=A0 local lvsize=3D${2:-5G}
=A0=A0=A0 local count=3D1
=A0=A0=A0 local limit=3D5
=A0=A0=A0 while [= "$count" -le "$limit" ]
=A0=A0=A0 do
=A0=A0=A0 = =A0=A0=A0 if [ ! -h "/dev/${LVGroupName}/${lvname}${count}" ] ; t= hen
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 echo "lvcreate -v -n ${lvname}${c= ount} -L ${lvsize} ${LVGroupName} ... ... "
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 lvcreate -v -n ${lvname}${count} -L ${lvsize}= ${LVGroupName}
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 echo "lvcreate -v -n = ${lvname}${count} -L ${lvsize} ${LVGroupName} completed!"
=A0=A0=A0= =A0=A0=A0 =A0=A0=A0 if [ -h "/dev/${LVGroupName}/${lvname}${count}&qu= ot; ] ; then
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 echo "mke2fs -F -j /dev/${LVGr= oupName}/${lvname}${count} ... ... "
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 = =A0=A0=A0 mke2fs -F -j /dev/${LVGroupName}/${lvname}${count}
=A0=A0=A0 = =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 echo "mke2fs -F -j /dev/${LVGroupName}/$= {lvname}${count} completed!"
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 else
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0= =A0 echo "/dev/${LVGroupName}/${lvname}${count} not found!"
= =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 fi
=A0=A0=A0 =A0=A0=A0 fi
=A0=A0=A0 =A0= =A0=A0 count=3D`expr $count + 1`
=A0=A0=A0 done
}

do_lvm_creat= e_remove() {
=A0=A0=A0 # number of loops default is 1
=A0=A0=A0 local loopcountlimit= =3D${1:-1}
=A0=A0=A0 # snapshot size default is 1G
=A0=A0=A0 local sn= apshotsize=3D${2:-1G}
=A0=A0=A0 # implement a sleep between create, moun= t, umount and remove (default is 0 which is no pause)
=A0=A0=A0 local pauseinterval=3D${3:-0}
=A0=A0=A0 # execute commands aft= er each pause/sleep such as sync or anything that you want to test
=A0= =A0=A0 local commands=3D${4}
=A0=A0=A0 # We filter out snapshot and swap=
=A0=A0=A0 local count=3D0
=A0=A0=A0 if [ -d "/dev/${LVGroupName= }" ] ; then
=A0=A0=A0 =A0=A0=A0 while [ "$count" -lt "$loopcountlimit&qu= ot; ]
=A0=A0=A0 =A0=A0=A0 do
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 count=3D`e= xpr $count + 1`
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 echo "${count} ... ..= . "
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 for i in `ls /dev/${LVGroupName} = | grep -Ev 'snapshot$' | grep -Ev 'swap$'`; do
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 if [ -h "/dev/${LVGroupName}/$= {i}" ] ; then
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 ech= o -n "lvcreate -s -v -n ${i}-snapshot -L ${snapshotsize} /dev/${LVGrou= pName}/${i} ... ... "
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0= =A0=A0 lvcreate -s -v -n ${i}-snapshot -L ${snapshotsize} /dev/${LVGroupNam= e}/${i}
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 echo "done."=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 sleep ${pauseinterval}=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 if [ -n "$commands= " ] ; then
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0= =A0 echo -n "${commands} ... ... "
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 $commands
= =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 echo "done= ."
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 fi
=A0=A0= =A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 mkdir -p /mnt/testlvm/${i}
= =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 if [ -h "/dev/${LVGr= oupName}/${i}-snapshot" ] ; then
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 check_mount /mn= t/testlvm/${i}
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0= =A0 local ismount=3D$?
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0= =A0=A0=A0 if [ "$ismount" -eq 0 ] ; then
=A0=A0=A0 =A0=A0=A0 = =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 echo -n "mount /dev/= ${LVGroupName}/${i}-snapshot /mnt/testlvm/${i} ... ... "
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 mount= /dev/${LVGroupName}/${i}-snapshot /mnt/testlvm/${i}
=A0=A0=A0 =A0=A0=A0= =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 echo "done."=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 sle= ep ${pauseinterval}
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 = =A0=A0=A0 =A0=A0=A0 if [ -n "$commands" ] ; then
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0= =A0=A0 echo -n "${commands} ... ... "
=A0=A0=A0 =A0=A0=A0 =A0= =A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 $commands
=A0= =A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0= =A0 echo "done."
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0= =A0=A0 =A0=A0=A0 =A0=A0=A0 fi
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 = =A0=A0=A0 =A0=A0=A0 fi
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 check_mount /mn= t/testlvm/${i}
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0= =A0 local ismount2=3D$?
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0= =A0 =A0=A0=A0 if [ "$ismount2" -eq 1 ] ; then
=A0=A0=A0 =A0=A0= =A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 echo -n "umount = /mnt/testlvm/${i} ... ... "
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 umoun= t /mnt/testlvm/${i}
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 = =A0=A0=A0 =A0=A0=A0 echo "done."
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0= =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 sleep ${pauseinterval}
=A0=A0= =A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 if [ -n &qu= ot;$commands" ] ; then
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0= =A0=A0 echo -n "${commands} ... ... "
=A0=A0=A0 =A0=A0=A0 =A0= =A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 $commands
=A0= =A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0= =A0 echo "done."
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0= =A0=A0 =A0=A0=A0 =A0=A0=A0 fi
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 = =A0=A0=A0 =A0=A0=A0 fi
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 fi
=A0=A0=A0 =A0=A0=A0= =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 rm -rf /mnt/testlvm/${i}
=A0=A0=A0 =A0=A0= =A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 echo -n "lvremove -f /dev/${LVGroupN= ame}/${i}-snapshot ... ... "
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0= =A0 =A0=A0=A0 lvremove -f /dev/${LVGroupName}/${i}-snapshot
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 echo "done."=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 sleep ${pauseinterval}=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 if [ -n "$commands= " ] ; then
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0= =A0 echo -n "${commands} ... ... "
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 $commands
= =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 echo "done= ."
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 fi
=A0=A0= =A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 fi
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 done<= br>=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 rm -fr /mnt/testlvm
=A0=A0=A0 =A0=A0=A0= done
=A0=A0=A0 else
=A0=A0=A0 =A0=A0=A0 echo "/dev/${LVGroupNam= e} directory not found!"
=A0=A0=A0 =A0=A0=A0 exit 1
=A0=A0=A0 fi
}

case $1 in
=A0=A0= =A0 setup)=A0=A0=A0 shift
=A0=A0=A0 =A0=A0=A0 do_lvm_create_testcrash &q= uot;$@"
=A0=A0=A0 =A0=A0=A0 ;;
=A0=A0=A0 loop)=A0=A0=A0 shift=A0=A0=A0 =A0=A0=A0 do_lvm_create_remove "$@"
=A0=A0=A0 =A0= =A0=A0 ;;
=A0=A0=A0 *)=A0=A0=A0 cat <<HELP
Usage: $0 loop loopcountlimit sna= pshotsize pauseinterval commands
Where:
=A0=A0=A0 loopcountlimit is d= efault to 1
=A0=A0=A0 snapshotsize is default to 1G
=A0=A0=A0 pausein= terval is default to 0
=A0=A0=A0 commands is default to none

Example to run with 100 loops = without pause/sleep:
=A0=A0=A0 $0 loop 100

Example to run with 10= 0 loops with pause/sleep of 5 seconds:
=A0=A0=A0 $0 loop 100 1G 5
Example to run with 100 loops with snapshot size of 2G instead of 1G:
=A0=A0=A0 $0 loop 100 2G

Example to run with 50 loops, 1G snapshot s= ize, 5 seconds pause and with sync:
command with each pause/sleep
=A0= =A0=A0 $0 loop 50 1G 5 sync

Example to run your own commands:
=A0= =A0=A0 $0 loop 100 1G 5 "echo hi && sync"

If this is the first time you are running and do not have any LV in you= r VG, run:
=A0=A0=A0 $0 setup
This will create 5 testcrash LV in your= VG with 5GB size each (default) and format
to ext3.

HELP
=A0= =A0=A0 =A0=A0=A0 ;;
esac

----------8<----------8<----------8<----------8<---= -------8<----------8<----------8<----------8<----------8<---= -------

Thanks.

Kindest regards,
Giam Teck Ch= oon
--0015175caaae38ad370499d367bf-- --===============0115748610== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel --===============0115748610==--