[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: CVS and AFS
Re: CVS and AFS
Fri, 22 Jun 2001 10:53:29 -0500
"Michael Sperber [Mr. Preprocessor]" wrote:
> >>>>> "Todd" == Todd Denniston <address@hidden> writes:
> Todd> Telling CVS on each machine that it accessing the repository on
> Todd> a physical (local) drive so that all lock files are being cached
> Todd> in the local machines File System cache. However the case is
> Todd> that the lock files are being cached locally, network latency
> Todd> added, and finally being put in the actually distributing
> Todd> computer's cache to be checked by other cvs clients. This
> Todd> allows a race condition to exist where one client may not know
> Todd> another has a lock and so it can (insert bad thing) which
> Todd> corrupts or causes other problems with the repository.
> Not on AFS. Check your facts.
I am not able to parse enough of how CVS makes and uses it locks at a code
level quickly enough to answer this, so .....
Knowing the following about AFS, would AFS keep the locking sane or do we still
have the race condition?
(my understanding says "yes we race because it is cacheing in two machines",
but I would kind of like to be SURE for future reference.)
Save on close: [ Programmer ]
AFS Cache Manager does not send file modifications to a file server
until the close() or fsync() system call.
write() system calls only update the local cache copy on the client.
Note the difference in semantic of writing a file:
local unix file: writes update the file "immediately"
AFS file: local cached copy updated "immediately" but
the server copy is only updated when the file
is closed or fsync'ed.
It is important to understand that most applications (eg: vi, emacs,
frame, interleaf, wingz, dogz, etc) issue the close() system call when
the user chooses/issues the "save" command in the application.
Users are not required to exit the application to "save" their
changes back to the server.
whole file locking: [ Programmer ]
AFS does support advisory locking an entire file with flock().
Processes on the same client workstation that attempt to lock
a file obey the proper locking semantics.
Processes on different AFS clients requesting a lock on the same
file would get EWOULDBLOCK returned.
Todd Denniston, Code 6067, NSWC Crane mailto:address@hidden
I'd crawl over an acre of 'Visual This++' and 'Integrated Development
That' to get to gcc, Emacs, and gdb. Thank you.
-- Vance Petree, Virginia Power