> Pete> 1. Make close to block indefinitely, retrying writes.
> Pete> Allow overlapping writes, let clients to sort it out.
>
> None of these things work, as security may be denied, a volume may be
> taken off-line, or hvaing overlppaing writes from clients increases
> the amount of client<->server interaction.
>
> Pete> 2. Provide an ioctl to flush writes before close() or
> Pete> make fsync() work right. Your "smart" applications have had
> Pete> to use that, so that no ambiguity existed between tearing down
> Pete> the descriptor and writing out the data.
>
> This is provided - sync, fsync, msync all work.
It is unfair for you to separate 1. and 2. They should work
together. Remember, you said "return error from close is
useful BECAUSE my smart application may deal with it."
If fsync works, the argument does not hold water at all.
Your smart application can do fsync just as easily.
If it does, it does not need the return code from close.
> That's work the trade-offs come in. The AFS designers found that
> relaxing the Unix filesystem semantics vastly improves scalability.
I know about the improvements. They are applicable to NFS too.
What I am trying to tell you is that there was NO reason to break
close in particular. Even on ancient AIXes without fsync they
could have used an ioctl.
-- Pete
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/