Skip to content

Commit

Permalink
zed: update zed.d/statechange-slot_off.sh
Browse files Browse the repository at this point in the history
The statechange-slot_off.sh zedlet which was added in openzfs#15200
needed to be installed so it's included by the packages.

Additional testing has also shown that multiple retries are
often needed for the script to operate reliably.

Reviewed-by: Tony Hutter <[email protected]>
Signed-off-by: Brian Behlendorf <[email protected]>
Closes openzfs#15210
Signed-off-by: Gian-Carlo DeFazio <[email protected]>
(cherry-picked from commit 1e5cc95)
  • Loading branch information
behlendorf authored and defaziogiancarlo committed Sep 11, 2023
1 parent d97ec84 commit 702e9bb
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 8 deletions.
2 changes: 2 additions & 0 deletions cmd/zed/zed.d/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ dist_zedexec_SCRIPTS = \
scrub_finish-notify.sh \
statechange-led.sh \
statechange-notify.sh \
statechange-slot_off.sh \
vdev_clear-led.sh \
vdev_attach-led.sh \
pool_import-led.sh \
Expand All @@ -39,6 +40,7 @@ zedconfdefaults = \
scrub_finish-notify.sh \
statechange-led.sh \
statechange-notify.sh \
statechange-slot_off.sh \
vdev_clear-led.sh \
vdev_attach-led.sh \
pool_import-led.sh \
Expand Down
18 changes: 10 additions & 8 deletions cmd/zed/zed.d/statechange-slot_off.sh
Original file line number Diff line number Diff line change
Expand Up @@ -43,15 +43,17 @@ if [ ! -f "$ZEVENT_VDEV_ENC_SYSFS_PATH/power_status" ] ; then
exit 4
fi

echo "off" | tee "$ZEVENT_VDEV_ENC_SYSFS_PATH/power_status"

# Wait for sysfs for report that the slot is off. It can take ~400ms on some
# enclosures.
# Turn off the slot and wait for sysfs to report that the slot is off.
# It can take ~400ms on some enclosures and multiple retries may be needed.
for i in $(seq 1 20) ; do
if [ "$(cat $ZEVENT_VDEV_ENC_SYSFS_PATH/power_status)" == "off" ] ; then
break
fi
sleep 0.1
echo "off" | tee "$ZEVENT_VDEV_ENC_SYSFS_PATH/power_status"

for j in $(seq 1 5) ; do
if [ "$(cat $ZEVENT_VDEV_ENC_SYSFS_PATH/power_status)" == "off" ] ; then
break 2
fi
sleep 0.1
done
done

if [ "$(cat $ZEVENT_VDEV_ENC_SYSFS_PATH/power_status)" != "off" ] ; then
Expand Down

0 comments on commit 702e9bb

Please sign in to comment.