Subject: IDE standby timeout
To: None <current-users@netbsd.org>
From: Dave Sainty <dave@dtsp.co.nz>
List: current-users
Date: 01/09/1999 15:06:10
It's very cool being able to set IDE idle and standby time via the new
atactl command (Thanks Ken).

But it's a pain that whenever you set the timeout on the drive, it
also immediately takes the action, so setting the standby timeout will
also immediately put the drive in standby mode.

Looking at a copy of the ATA-2 draft, this is exactly how it works,
and you cannot set the timeout without the action.  I'm suspicious
that this is a sneaky way to force the OS to do the work for any more
complex scheme.

That said, it may be beneficial for the drivers to eb aware of when
the drive is in standby mode anyway, so it can perhaps spin it back up
without generating an error:

pciide0:0:0: Bus-Master DMA error: missing interrupt, status=0x21
wd0a: DMA error reading fsbn 4127984 of 4127984-4127999 (wd0 bn 4128047; cn 4095 tn 4 sn 35), retrying
wd0: soft error (corrected)

What I would like to be able to do is change the timeout dynamically
without the action taking effect immediately.  I would like the drive
driver to track the idle time of the drive, and then if it reaches the
specified timeout, issue the stadby command itself, rather than
relying on the drive to do the job.

Is this too much bloat for the driver?  I can achieve the same results
from userland using iostat style statistics to track disk activity and
atactl style control to perform the action, but it does seem to me
that the timeout logic may belong and would be most useful in the
drivers?

Cheers,

Dave