Re: suspend2 merge (was Re: [Suspend2-devel] Re: CFS and suspend2: hang in atomic copy)

Linus Torvalds
2007-04-25T23:30:19Z

On Thu, 26 Apr 2007, Pavel Machek wrote:
>
> Current design is:

Broken. Yes. I've tried to tell you.

> Twice. Once during snapshot (then we spin it up when the snapshot is
> done), and once during shutdown.

And nobody can possibly say that is "sane". But it's a direct result of
the incorrect thinking that "suspend()" and "snapshot()" have anything
what-so-ever to do with each other.

> Yep, we optimize away spindown, because it takes too long, so SCSI
> disks are actually very bad example.

No. SCSI disks are a *good* example. It's an example of how you
(incorrectly) call the same function for two totally different things, and
then that function is smart enough that it *understands* that they are
totally different.

But the *confusion* remains. It remains in your head, and you've poisoned
people like Alan too, that usually are not confused. And THAT is the main
problem (although there are also indirect problems like "fixing one may
break the other", but I actually think that the fundamental problem is the
confusion it creates, which in turn causes bugs to happen because people
are confused and think that they should do the same thing for suspend and
for snapshot).

> No, I'd like you to understand that we actually CAN tell the disks to
> spin down, because we'll call resume and spin them back again before
> writing the image. We used to do it. We still can do it, but it is
> slow.
>
> Yes, it is quite confusing.

It's worse than just confusing, it's *idiotic*.

It _can_ work in practice, but
- we have pretty damn solid evidence that it doesn't work all that often
in practice
- the fact that something *can* be done the stupid way is in no way an
argument that it *should* be done the stupid way.

I claim that the current STD is *stupid*. Yes, it can work. But that
doesn't make it less stupid.

What's your argument? Your argument seems to be that it's not stupid,
because it can work. Can't you see that that simply isn't an argument at
all? "stupid and wrong" doesn't mean "cannot work in theory". But it
*does* mean that people get confused, and it *does* mean that there are
likely more bugs, because confused people do not tend to write very good
code.

I'm not claiming that the current code cannot work. It clearly *does*
work for a lot of people. But I'm claiming that it's STUPID.

So don't argue that "it works". Windows works, kind of. That doesn't make
it less stupid and badly designed!

Linus