9fans archive / 1998 / 02 / 53 /    prev next

From: G. David Butler gdb@dbS...
Subject: [9fans] create(2)/open(2) race for file creation
Date: Thu, 26 Feb 1998 17:01:40 -0600

>gdb wrote:
>> 
>> I'm sure many of you wish this topic would go away, but...
>
>I actually think it's quite interesting :)  
>
>Admittedly I do not know the entire scope of the problem, but 
>it seems to me that the effect that is desired is to use the fs 
>as a centralized database, with update collisions being resolved
>at the os-layer.

No, I want them resolved at the fs; as they are.  I only want
the os-layer to make the fs resolution visible.

>                  This seems to me to be a challenging problem
>for the fs/os, particularly since the fs/os as seen by applications
>may have mounts and binds going across the network to a variety
>of locations.

Even open(2) does NOT have the same behavior across arbitrary
bind(2) structures.  That is NOT my expectation.  I DO expect
open(2) and create(2) to have the same behavior on directories
that have the same bind(2) structure.

I did notice an interesting response on this thread in comp.os.plan9
that didn't make it to the list about a property of union directories.
It went something like "the behavior of a properly implemented
union directory should not differ from the behavior of a flat
directory with the same contents".  That would be a hard trick to
pull off since the constitutient directories would have to be
incorporated in the union in the same order, always, no matter
who, no matter when, no matter from where.  For that to happen
in Plan9, the union directory would need to be constructed using
an RPC between the fileservers [fileserver in the generic sense, not
the physical machine called a fileserver].  The mount would be allowed
only after it was constructed.  It also means the directory should not
be available if any of the constitutient fileservers is unavailable.
After implementing this trick, the bind(2) system call would be
unnecessary and A-Bad-ThingTM.

Anybody want to take that on as a research project?

>Might it be appropriate to use a multithreaded server process
>to handle the transactions, and have the clients attach to

[snip]

This idea has been suggested many times during this discussion.
In Plan9 this both unnecessary and overly complicated.  The 9P
protocol is sufficient to express the ideas completely and the
fileservers as implemented support 9P properly.  The only thing
that corrupts the design is the implementation of one system call.

Just Fix It.

David Butler
gdb@dbS...