|
|
|
|
|
|
|
|
|
|
xen-devel
Re: [Xen-devel] kernel BUG at arch/x86/xen/mmu.c:1860!
Below is my latest test crash script:
----------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 XenGroup
LVGroupName=XenGroup
# 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 }
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 loop) shift do_lvm_create_remove "$@" ;; *) cat <<HELP Usage: $0 loop loopcountlimit snapshotsize pauseinterval commands
Where: loopcountlimit is default to 1 snapshotsize is default to 1G pauseinterval is default to 0 commands is default to none
Example to run with 100 loops without pause/sleep: $0 loop 100
Example to run with 100 loops with pause/sleep of 5 seconds: $0 loop 100 1G 5
Example to run with 100 loops with snapshot size of 2G instead of 1G: $0 loop 100 2G
Example to run with 50 loops, 1G snapshot size, 5 seconds pause and with sync:
command with each pause/sleep $0 loop 50 1G 5 sync
Example to run with 50 loops, 1G snapshot size, no pause and with sync: command with each pause/sleep $0 loop 50 1G 0 sync
Example to run your own commands:
$0 loop 100 1G 5 "echo hi && sync"
HELP ;; esac ----------8<----------8<----------8<----------8<----------8<----------8<----------8<----------8<----------
Thanks.
Kindest regards, Giam Teck Choon
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
|
|
|
|