The question should probably be not who is to blame for it, rather what is the behaviour that
actually needs fixing.
Most articles on this topic seem to suggest that the issues is hard disk spinning down to
early (after a few tens seconds of inactivity), because the silly bios instructs them to do so
and the OS does nothing to change this default. Under this analysis the behaviour that needs
fixing is the hard disk power management level.
But a few voices tend to disagree. Maybe there is nothing wrong in hard disks spinning down
and parking early. Maybe the hard disk and bios defaults are perfectly right in the vision of
a manufacturer that expects an OS not doing all that logging, all that writing down access
times, and the like. Maybe, the problem is actually that the hard disk gets re-spinned up too
early even in complete absence of user activity. Under this second analysis the behaviour
that needs fixing is the OS way of causing continuous hard disk writes, and not necessarily
the hard disk power management level. It is to notice that this second analysis, in spite of
being minority, is supported by the fact that if one actually wants to get decent battery life
it is not the active-to-parked time to be enlarged, but the number of activations to be
reduced.
In my opinion, the first analysis is majority just because the problem it outlines is easier
to patch. The second analysis actually says that the real issue is that the OS is not enough
aware of what a laptop is and of how to coordinate efforts to do power management. Namely, it
is silly to tell the hard disk to be aggressive, if the logging system does not defer logs,
etc.
If this is the case, a subsystem a la "laptop_mode", but enhanced is the real solution. When a
laptop is on battery _all_ the unnecessary hard disk activity should be very much deferred and
aggregated. This should include inner OS disk activity, logging, and applications (window
manager, GUI, etc). And this is something that is only partially possible to do now, because
logging daemons and applications cannot be easily switched between two different operating
modes.
Maybe, an OS that is truly ready for laptops should need one more signal than it has now.
There might be a signal to tell all processes that the system is changing power mode, so that
each change of status can be communicated to all processes. Legacy programs should just ignore
this signals. Laptop-aware programs should consider the change of status, read the new status
and cooperate with it. BTW, this could be useful also to make applications aware of when a
system is going to suspend and take consequent actions (e.g. we might want a SIP client to
de-register before suspension and to re-register right after wake-up).
And one more thing: to do control proficiently, observing the achieved behaviour is often a
smart thing. Since hard disks have "power levels" that are just "abstract", there should be
tools to keep accounting of spin-down and spin-up average times (either to be invoked one
shot, to determine best parameters for system and average use, or to be periodically in
operation). This could also be used to alert the user if potentially dangerous hard-disk
behaviours should appear.