In some email I received from Jan Harkes <[EMAIL PROTECTED]> on Tue, 8 Jul 2003
11:39:45
-0400, wrote:
> On Tue, Jul 08, 2003 at 03:27:41PM +0100, lou wrote:
[...]
> AFS3 concurrent O_RDWR scenario
>
> client2
> foo = open('foo', O_RDWR);
> write(foo, "a");
>
> client1
> foo = open('foo', O_RDWR);
> write(foo, "test");
> close(foo);
> /* foo now contains "test" */
>
> client2
> close(foo);
> /* surprise! foo now contains "t" */
You mean 'a' not 't' right?
> I actually like it that Coda gives me a conflict in these situations, at
> least I get to keep both pieces.
That's good enough, but wont it be more sensible instead of taking a whole volume into
a
disconnect write mode to happen something like:
stat(file,..) // == foo
if(open-with-rw){ read(file) && write(file-temp)
file = file-temp; } // copy the content into a different file content
+warning
foo = open(file, O_RDWR);
// do writes/reads
The first win, and the last will have to merge files locally if someone wants to write
in them. But that option should be available only in times of RW rather than reads,
none of those reads would pass the (open-with-rw) condition..
have a weird feeling that this will hit the performance.
Actually I havent thought too much about it in general, since I know that merging
content
of files (especially binaries or db files) is not an easy job, at least not so easy to
automate. But there are still few workarounds which can be done.
Just brainstorming around.
Thanks.
cheers
-lou