[Pkg-sysvinit-devel] [PATCH] libata: remove libata.spindown_compat
Henrique de Moraes Holschuh
hmh at hmh.eng.br
Sat May 19 13:48:36 UTC 2007
On Sat, 19 May 2007, Tejun Heo wrote:
> > To fix this issue, halt(8) started issueing WIN_STANDBYNOW1 (0xE0) and
> > WIN_STANDBYNOW2 (0x94) ioctls before halt and poweroff, as that was more
> > reliable than "flush cache" and the effect was the same.
>
> One culprit there is that, according to the spec, STANDBYNOW doesn't
> necessarily imply cache flush and AFAIK issuing STANDBYNOW to libata
> devices is to avoid emergency unload. Can you comment on this Henrique?
Well, the reason I raised the ruckus in the first place was just the
emergency unload, yes. I didn't know about any missing cache flushes (and
AFAIK we never had any reported to us). We will have to fix that in halt(8)
IMHO, just in case. And probably hdparm/sdparm should also know to not
standby or sleep disks without a cache flush, either.
I also don't know the history of halt(8), Miquel does... so I have not much
else to comment.
At least now it is clear what we need halt(8) to do (in Debian, anyway):
1. check if we have a responsible kernel or not through sysfs.
1a: kernel is responsible, and can spin down disks at shutdown
- if given -h on command line, use sysfs to tell kernel
to spin down *all* disk devices we can find in sysfs,
and don't send any taskfiles or IOCTLs to the disks.
1b: kernel is missing this essential feature
- keep doing what we are doing now, but issue a cache
flush before we send any standby commands.
2. push that to Debian unstable, and also to stable-proposed-updates, or at
the very least to backports.org.
This will give maximum compatibility with the kernel, and fix the
cache-not-flushed-before-spindown issue.
--
"One disk to rule them all, One disk to find them. One disk to bring
them all and in the darkness grind them. In the Land of Redmond
where the shadows lie." -- The Silicon Valley Tarot
Henrique Holschuh
More information about the Pkg-sysvinit-devel
mailing list