From f3a1ef0a74f3bc686ef987f029961a70f4a867e2 Mon Sep 17 00:00:00 2001 From: alex Date: Mon, 5 Oct 2009 07:52:41 +0000 Subject: [PATCH] - t-f to re-export zfs pool to simulate failover --- lustre/tests/test-framework.sh | 32 +++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/lustre/tests/test-framework.sh b/lustre/tests/test-framework.sh index c5148c6..6e747a0 100644 --- a/lustre/tests/test-framework.sh +++ b/lustre/tests/test-framework.sh @@ -115,7 +115,7 @@ init_test_env() { export PATH=$PATH:$LUSTRE/tests/racer fi if ! echo $PATH | grep -q $LUSTRE/../zfs/cmd/zfs; then - export PATH=$PATH:$LUSTRE/../zfs/cmd/zfs + export PATH=$PATH:$LUSTRE/../zfs/cmd/zfs:$LUSTRE/../zfs/cmd/zpool fi if ! echo $PATH | grep -q $LUSTRE/tests/mpi; then export PATH=$PATH:$LUSTRE/tests/mpi @@ -426,7 +426,7 @@ devicelabel() { local label set +e - label=$(do_facet ${facet} "$E2LABEL ${dev}") + label=$(do_facet ${facet} "$E2LABEL ${dev} 2>/dev/null") if [ $? == 0 ]; then set -e echo $label @@ -446,7 +446,7 @@ devicelabel() { mdsdevlabel() { local num=$1 local device=`mdsdevname $num` - local label=`do_facet mds$num "e2label ${device}" | grep -v "CMD: "` + local label=`devicelabel mds$num ${device} | grep -v "CMD: "` echo -n $label } @@ -463,6 +463,7 @@ mount_facet() { shift local dev=$(facet_active $facet)_dev local opt=${facet}_opt + local fstype echo "Starting ${facet}: ${!opt} $@ ${!dev} ${MOUNT%/*}/${facet}" do_facet ${facet} mount -t lustre ${!opt} $@ ${!dev} ${MOUNT%/*}/${facet} RC=${PIPESTATUS[0]} @@ -478,6 +479,10 @@ mount_facet() { label=$(devicelabel ${facet} ${!dev}) [ -z "$label" ] && echo no label for ${!dev} && exit 1 eval export ${facet}_svc=${label} + set +e + fstype=$(do_facet $facet lctl get_param -n osd\*.${label}.fstype) + set -e + eval export ${facet}_fstype=${fstype} echo Started ${label} fi return $RC @@ -505,6 +510,25 @@ start() { return $RC } +refresh_disk() { + local facet=$1 + local fstype=${facet}_fstype + local _dev=$(facet_active $facet)_dev + local dev=${!_dev} + local poolname="${dev%%/*}" + local fstype + + if [ "${!fstype}" == "zfs" ]; then + if [ "$poolname" == "" ]; then + echo "invalid dataset name: $dev" + return + fi + do_facet $facet "cp /etc/zfs/zpool.cache /tmp/zpool.cache.back" + do_facet $facet "zpool export $poolname" + do_facet $facet "zpool import -c /tmp/zpool.cache.back ${poolname}" + fi +} + stop() { local running local facet=$1 @@ -822,6 +846,7 @@ reboot_facet() { if [ "$FAILURE_MODE" = HARD ]; then $POWER_UP `facet_active_host $facet` else + refresh_disk ${facet} sleep 10 fi } @@ -1234,6 +1259,7 @@ fail_nodf() { fail_abort() { local facet=$1 stop $facet + refresh_disk ${facet} change_active $facet mount_facet $facet -o abort_recovery client_df || echo "first df failed: $?" -- 1.8.3.1