done
}
-# System uptime in seconds.
-uptime_s() {
- local a b
-
- echo "$(</proc/uptime)" | { read -r a b && echo "${a%%.*}"; }
-}
-
# Sleep until either $1 seconds have elapsed or until the deadline $2 has been
# reached. Return 1 if and only if the deadline has been met.
sleep_until() {
local duration=$1 deadline=$2 u
- u=$(uptime_s)
+ u=$(_uptime_s)
if [ $((u + duration)) -le "$deadline" ]; then
sleep "$duration"
else
_filter_xfs_io_error() {
sed -e 's/^\(.*\)64\(: .*$\)/\1\2/'
}
+
+# System uptime in seconds.
+_uptime_s() {
+ awk '{ print int($1) }' /proc/uptime
+}
[ -e "$dev" ] || return $?
[ -n "$duration" ] || return $?
- deadline=$(($(uptime_s) + duration))
+ deadline=$(($(_uptime_s) + duration))
while [ $rc = 0 ]; do
sleep_until 5 ${deadline} || break
for d in $(held_by "$dev"); do
[ -e "$dev" ] || return $?
[ -n "$duration" ] || return $?
reset_type=(-d -b)
- deadline=$(($(uptime_s) + duration))
+ deadline=$(($(_uptime_s) + duration))
while true; do
sleep_until 1 ${deadline} || break
cmd="sg_reset --no-esc ${reset_type[i++ % 2]} $dev"
[ -e "$dev" ] || return $?
[ -n "$duration" ] || return $?
- deadline=$(($(uptime_s) + duration))
+ deadline=$(($(_uptime_s) + duration))
s=5
while [ $rc = 0 ]; do
sleep_until 5 ${deadline} || break