links and lox

utzoo!decvax!ucbvax!unix-wizards utzoo!decvax!ucbvax!unix-wizards
Tue Aug 18 02:40:01 AEST 1981


>From day at RAND-UNIX Mon Aug 17 22:24:29 1981

Re:
    ... exclusive access is already available if the
    user programs use links as locks.

This would work fine if systems and programs never
crashed, but they do, and since there is no way to tell
the difference between a lock file that is really valid
and one that is left over from a crash, this solution
has holes--an especially bad attribute of a locking
mechanism!

Exclusive open gives you the locking you need plus the
ability to distinguish between and deal with dead lock
files.  The change to the system would be something
like this:

 1.  Add `create-if-nonexistent' and `exclusive' bits to
     the mode argument of the open(2) call.
 2.  Define a new errno for when an open fails because
     the exclusive bit is on and some process has the
     file open with the exclusive mode set.
 3.  If the file had to be created, set some high-order
     bit in the file descriptor returned by open(2).

To set a lock, you do an open with the two bits set.
If the open succeeds, you have the lock you wanted.
If you care, you can tell whether or not the lock file
existed prior to your open call by looking at the
special bit in the returned file descriptor.  If the
open fails and you got the no-exclusive error, you know
you are actively locked out.

Why do I care about this?

Because my beloved Rand Editor would like to be able to
determine whether its temp file exists because of an
active editing session or a crashed one, so that it can
recover from crashes.

I really wish you could see your way clear to solving
this problem in VMUNIX, which is after all a standard,
so that this feature of our editor will work on our
system and other systems without a kernel change.

Re:
    The current thinking as expressed at a meeting last
    week of the ARPA steering committee for UNIX on the
    VAX is that locking modes (exclusive-open, etc) are
    neither necessary nor sufficient for user
    applications, and plans to add such to the standard
    VAX system have been dropped.

Can you elaborate?

Regards,

--dave




More information about the Comp.unix.wizards mailing list