Whamcloud - gitweb
LU-16335 test: add fail_abort_cleanup()
[fs/lustre-release.git] / lustre / scripts / statechange-lustre.sh
index c3225b2..b06e490 100755 (executable)
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
 #
 # CDDL HEADER START
 #
 #   2: zpool missing
 #   3: zfs missing
 #   4: Pool status neither "ONLINE" nor "DEGRADED
+#
+# This script is also symlinked as vdev_attach-lustre.sh, vdev_remove-lustre.sh
+# and vdev_clear-lustre.sh, since it needs to take the same action on those
+# ZFS events as well.
 
 [ -f "${ZED_ZEDLET_DIR}/zed.rc" ] && . "${ZED_ZEDLET_DIR}/zed.rc"
 . "${ZED_ZEDLET_DIR}/zed-functions.sh"
@@ -46,43 +50,42 @@ zed_check_cmd "$ZFS" || exit 3
 #
 sync_degrade_state()
 {
-    local dataset="$1"
-    local state="$2"
-    local service=$($ZFS list -H -o lustre:svname ${dataset})
+       local dataset="$1"
+       local state="$2"
+       local service=$($ZFS list -H -o lustre:svname ${dataset})
 
-    zed_log_msg "Lustre:sync_degrade_state pool:${dataset} degraded:${state}"
+       zed_log_msg "Lustre:sync_degrade_state pool:${dataset} degraded:${state}"
 
-    if [ -n "${service}" ] && [ "${service}"  != "-" ] ; then
-       local current=$($LCTL get_param -n obdfilter.${service}.degraded)
+       if [ -n "${service}" ] && [ "${service}" != "-" ] ; then
+               local current=$($LCTL get_param -n obdfilter.${service}.degraded)
 
-       if [ "${current}" != "${state}" ] ; then
-           $LCTL set_param obdfilter.${service}.degraded=${state}
+               if [ "${current}" != "${state}" ] ; then
+                       $LCTL set_param obdfilter.${service}.degraded=${state}
+               fi
        fi
-    fi
 }
 
-
 #
 # use pool state as deciding factor
 #
 POOL_STATE=$($ZPOOL list -H -o health ${ZEVENT_POOL})
 
 if [ "${POOL_STATE}" == "ONLINE" ] ; then
-    MODE="0"
+       MODE="0"
 elif [ "${POOL_STATE}" == "DEGRADED" ] ; then
-    MODE="1"
+       MODE="1"
 else
-    exit 4
+       exit 4
 fi
 
 #
 # visit target pool's datasets and adjust lustre service degrade mode
 #
 read -r -a DATASETS <<< \
-    $($ZFS get -rH -s local -t filesystem -o name lustre:svname ${ZEVENT_POOL})
+       $($ZFS get -rH -s local -t filesystem -o name lustre:svname ${ZEVENT_POOL})
 
 for dataset in "${DATASETS[@]}" ; do
-    sync_degrade_state "${dataset}" "${MODE}"
+       sync_degrade_state "${dataset}" "${MODE}"
 done
 
 exit 0