DF-4616 / fix.diff
diff --git a/sys/dev/raid/ips/ips.c b/sys/dev/raid/ips/ips.c index 1111111..2222222 100644 --- a/sys/dev/raid/ips/ips.c +++ b/sys/dev/raid/ips/ips.c @@ -608,7 +608,11 @@ void ips_morpheus_poll(ips_command_t *command) { uint32_t ts; - ts = time_uptime + command->timeout; + /* + * command->timeout counts watchdog ticks (1 tick = 10 s, see + * ips_timeout/ips_issue_morpheus_cmd); time_uptime is seconds. + * Scale the deadline to seconds or the dump poll gives up 10x early. + */ + ts = time_uptime + (uint32_t)command->timeout * 10; while (command->timeout != 0 && ips_morpheus_check_intr(command->sc) == 0 && (ts > time_uptime)) DELAY(1000); |