"First, some background: The AFS Fileserver tries really hard to keep
track of all the "interfaces" of a client. Generally this is for a
multi-homed client, so that the server realizes that you are the same
client when you come from multiple addresses. However, this also
winds up applying to a mobile host whose IP address changes over time.
When the Fileserver sees a "new" address, it asks the client for its
Uuid and, if that Uuid already exists, it adds this new address to the
list of interfaces for the existing host. However, it keeps a
callback connection open to the original address.
Here's the problem: Assume the client has callbacks registered with
the server and then disappears from the network. While the client is
off the net, someone else makes a change that causes that callback to
be broken. The fileserver can't reach the client, so the break gets
added to the delayed callback list. The logic is such that no client
requests will be processed by a host while there are outstanding
delayed callbacks to that client.
Now, if the client comes back on the same IP Address, everything works
fine. The fileserver uses the cached callback connection and the
callbacks are cleared successfully. However, if the client returns to
the network under a different address, this new address is added to
the existing host structure and then the delayed callbacks are
attempted. Unfortunately it is using the (invalid) cached connection
to the old IP Address, so the delayed break fails. Therefore, this
client is locked out of the fileserver until:
1) the fileserver reboots,
2) the client returns to the original IP Address, or
3) All the callbacks timeout on their own.
This patch will fix this problem. When the client makes a request and
the fileserver tries to break the delayed callbacks, if the breaking
fails then the fileserver will attempt to find a 'working' interface
by probing all the host interfaces for one that responds with the
correct Uuid. If that succeeds then it resets the cached callback
connection and then breaks the delayed callbacks, thereby regaining
the connection to the client and proceeding with the proper cleanup
before the original request is completed."
Avoid condition where we could read past the end of lrealm (unlikely
to occur in practice and not remotely exploitable; cell and lrealm are
both MAXKTCREALMLEN and lrealm is configured locally and not read from the
network)
"Here are the symptoms. I have 2 OpenAFS Linux 2.4 machines, one SMP and
one not.
--With both of them I access a series of directories and files within
(/afs/w/x/y/z/).
--I then move to the root directory.
--From a third machine, I remove the directories x, y, and z. Then re-add
them (same names) with some other files.
--From the SMP box, I do an ls in /afs/w and see x. But x is inaccessible.
--From the UP box I can see and access x.
"
====================
This delta was composed from multiple commits as part of the CVS->Git migration.
The checkin message with each commit was inconsistent.
The following are the additional commit messages.
====================
Missed earlier: not part of the IBM delta.
====================
Part of the alpha patch slipped into the delta; Revert to previous
revision
"Simple patch to add "-syslog" option to bosserver. Causes it to direct all
logging activity to syslogd instead of to logs/BosLog"
currently unimplemented for NT
====================
This delta was composed from multiple commits as part of the CVS->Git migration.
The checkin message with each commit was inconsistent.
The following are the additional commit messages.
====================
Don't use a static outside its scope
"This prevents pts from crashing like this:
pepsi-one~> pts createg a:b -id -1234
/bin/athena/pts: Permission denied ; unable to create group a:b with id -1234
owned by 'Segmentation fault
"
" I have found problem with file locking and 64bit linux (tested on
ultrasparc). When issued fcntl(fd, f_SETLK, ..) with l_start = 0 and l_len
= 0, it sets l_len to LONG_MAX, so it is needed to test this value"
Make check the return code from EvalMountPoint()
====================
This delta was composed from multiple commits as part of the CVS->Git migration.
The checkin message with each commit was inconsistent.
The following are the additional commit messages.
====================
maintain old behavior consistent with checking eval return
for new pioctl calls for mrafs
====================
This delta was composed from multiple commits as part of the CVS->Git migration.
The checkin message with each commit was inconsistent.
The following are the additional commit messages.
====================
for new pioctl calls for mrafs; convert spaces to tab
Dirpath additions for MR-AFS files
====================
This delta was composed from multiple commits as part of the CVS->Git migration.
The checkin message with each commit was inconsistent.
The following are the additional commit messages.
====================
Dirpath additions for MR-AFS files; remove extra newline
Changes needed to support ubik (non-voting) clones.
====================
This delta was composed from multiple commits as part of the CVS->Git migration.
The checkin message with each commit was inconsistent.
The following are the additional commit messages.
====================
Needed kaserver support for ubik clones
====================
Needed support for ubik clones for the ptserver
====================
Support for ubik clones in vlserver
====================
auth layer support for ubik readonly clones
====================
ubik library support for readonly clones
export some previously internal routines, and rename to not conflict
with libkrb;
with NO_AFS_CLIENT you can use the ktc routines also for architectures
which not yet have kernel support for AFS tokens (Cray T3E, NEC SX5).
Necessary additions to bos for MR-AFS support
====================
This delta was composed from multiple commits as part of the CVS->Git migration.
The checkin message with each commit was inconsistent.
The following are the additional commit messages.
====================
FS bnode changes for MR-AFS
====================
allow hex numbers for residencies, used by bos