Messages in this thread | | | Date | Mon, 30 Mar 2009 12:45:55 -0700 (PDT) | From | Linus Torvalds <> | Subject | Re: [PATCH 1/7] block: Add block_flush_device() |
| |
On Mon, 30 Mar 2009, Jens Axboe wrote: > > Sorry, I just don't see much point to doing it this way instead. So now > the fs will have to check a queue bit after it has issued the flush, how > is that any better than having the 'error' returned directly?
No.
Now the fs SHOULD NEVER CHECK AT ALL.
Either it did the ordering, or the FS cannot do anything about it.
That's the point. EOPNOTSUPP is n ot a useful error message. You can't _do_ anything about it.
> > Sure, the device may or may not re-order things, but since the caller > > can't know, and can't really do a thing about it _anyway_, you're just > > better off not even confusing anybody. > > I'd call that a pretty reckless approach to data integrity, honestly.
It has _nothing_ to do with 'reckless'. It has everything to do with 'you can't do anything about it'.
> You HAVE to issue an error in this case.
No. Returning an error just means that now the box is useless. Nobody can do anything about it. Not the admin, not the driver writer, not anybody.
Ok, so a device didn't support flushing. We don't know why, we don't know if it needed it, we simply don't know. There's nothing to do. But returning an error to user mode is unacceptable, because that will result in everything just -failing-.
And total failure is much worse than "we don't know whether the thing serialized".
Linus
| |