Re: [PATCH 1/7] block: Add block_flush_device()

From: Linus Torvalds
Date: Mon Mar 30 2009 - 15:59:05 EST




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
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/