Search for the Linux version in the correct header
src/config/linux-version already had support for handling either versioned
or unversioned kernel source directories, but the grep for UTS_RELEASE
was unconditionally done against the versioned source tree, ignoring the
previous determination of where the header file was.
Instead, check instead the header file location that we'd previously
determined.
This patch has been tested in the Debian OpenAFS 1.4.11~pre3+dfsg-1
package.
Simon Wilkinson [Mon, 6 Jul 2009 13:38:42 +0000 (14:38 +0100)]
Revise git ignore files
Revise our git ignores to match the current state of the tree, and include
entires in the top level for all of the 'dest' directories for all of the
architectures we claim to support.
Reviewed-on: http://gerrit.openafs.org/2 Reviewed-by: Derrick Brashear <shadow@gmail.com> Verified-by: Simon Wilkinson <sxw@inf.ed.ac.uk>
when performing offline volume checks, do so in most recently used order
if the system is entering suspend state, short circuit the background
daemon operations to avoid extra work that is going to fail when the
network is shutdown behind the back of the service.
rework all linux vnode ops so the vulnerability we previously had can't
recur later just because someone makes a change that would leak a negative
error
On Windows there is no chown or chgrp command that can be used to
change the owner or group of an object in AFS. Therefore we
add them to the fs command.
Usage: fs chown -owner <user name or id> [-path <dir/file path>+] [-literal] [-help]
Where: -literal literal evaluation of mountpoints and symlinks
Usage: fs chgrp -group <user/group name or id> [-path <dir/file path>+] [-literal] [-help]
Where: -literal literal evaluation of mountpoints and symlinks
Add a debug log warning if the target volume is a DFS File Set.
If so, the client will not properly protect against information
leakage or properly deal with directory name caching, symlinks,
and other behavioral differences between AFS and DFS.
Fix issue reported by Marc Dionne. RXAFS_FetchData and RXAFS_StoreData
return access denied errors that are not reported by the subsequent
call to rx_EndCall which should be preferred.
cm_Link() is used to create hard links. It did not apply the updated
link target status info to the target cm_scache_t object. As a result
the linkCount would be incorrect.
cm_Unlink() did not take linkCount into account. It did not reduce the
locally known linkCount, nor did it invalidate any currently known
callback. As a result the linkCount would be incorrect.
Properly handle callbacks from multi-homed file servers.
Comparing cm_server_t pointers is insufficient. For a multi-homed
server there will be multiple entries. The UUID for all of the
equivalent entries will be the same. What matters is not that
the pointers are the same but whether in the case of UUID labeled
servers that the UUIDs match.
Readonly volume callbacks apply to every cm_scache_t from the
same volume. We were already tracking the cbExpires time in
the cm_volume_t. We need to also track the cbServerp in the
cm_volume_t so that the cm_scache_t objects can be assigned
the correct server from which the callback was issued.
Add cbServerpRO field to the cm_volume_t. Bump the memory
map version to force a rebuild of the cache data.
call inode's setattr op instead of just inode_setattr, when one is available.
needed for xfs, notably also will cause truncates to be journalled for ext3,
which may solve some existing issues
The CellServDB processing in auth/cellconfig and WINNT/afsd/cm_config
differ in one important way. cellconfig uses the IP addresses specified
in the CellServDB file and ignores the host name; whereas cm_config
calls gethostbyname() on the host name and falls back to the specified
address only if gethostbyname() fails.
This commit modifies cellconfig to use gethostbyname() calls on the
host names when the client CellServDB file is being used. The server
CellServDB file is left alone because ubik servers need to be given
the exact list of ip addresses specified by the administrator and
there is no method of indicating clones to other servers using DNS.
This change permits a greater resilency to cell server configuration
changes due to IP address renumbering as the DNS names in the CellServDB
file can be CNAME or A records.
A host name can be resolved to multiple IP addresses and all of the
addresses will be added to the hostAddr list for the cell provided
that they do not exceed the maximum number of hosts. If the same
host name is listed multiple times the duplicate IP addresses will
be ignored.
The behavior of all tools that use CellServDB files on Windows will now
be consistent.
When processing RX_CALL_TIMEOUT, if there is no fid specified its a vldb
rpc and we should retry. If there is a fid and the volume is a readonly
volume then we should also retry. Only fail if the request has no alternate
server to look at.
When processing RX_CALL_DEAD, log the fact that the call is dead.
When processing any other RX error between -2 and -64, do not force
a new connection to the same server. Mark the server down and retry
with a new server if possible.
When inserting a new vldb server, if the rank is 0 (unknown), do not
override the default rank assigned by cm_NewServer(). Doing so erases
the randomized ranking.
Turn SRXAFSCB_InitCallBackState3() into the primary function for
processing InitCallBackStateX RPCs. InitCallBackState3 accepts an
optional server uuid which can be used instead of the IP address
to locate a matching server object. If the RPC comes from a server
that we know of, we can restrict the calback state initialization
to cm_scache_t objects on that file server. If the request comes
from a server that we know nothing about and a uuid was specified,
we can ignore it.
During callback revocation, make use of the cell associated with
the server to restrict the revocation to cm_scache_t objects in
the one cell. This is especially important for readonly volume
callbacks since volume ids are shared across multiple cells.
Add a missing case where the cm_volume_t cbExpiresRO time should
be set to the cm_scache_t cbExpires time.
Add cm_FindServerByUuid(). This function is similar to cm_FindServerByIP()
but uses the server's known uuid instead which is constant across multi-
homed systems.
cm_cellLock protects the cm_cell_t fields allNextp, nameNextp, idNextp,
and freeNextp. Therefore, a write lock must be obtained whenever those
items may change. This patch makes that consistent.
This patch also fixes an out of order lock acquisition and removes
cm_cell_t objects from the id and name hash tables before freeing them.
If there are dirty buffers when the file server becomes unresponsive,
the cache manager will attempt to write them repeatedly resulting in
use of 100% of the cpu of the machine until the file server becomes
responsive.
This patch reduces the cpu utilization by ensuring that only the first
in a list of buffers on the same file needs to fail with timed out,
all down, all busy, all offline, or clock skew. The other dirty buffers
will just be skipped. A small delay is enforced in the buf_IncrSync
thread between invocation.
This patch is not a complete fix for the problem. The buf_IncrSync
thread needs to become more intelligent in order to avoid attempts to
write to volumes that are known to be inaccessible.
curpag needs to know about kernel constructs (getpagvalue on AIX, onegroup
versus two group on linux) and on aix 5.1 simply can't work. add a new pioctl
and use it to simply ask the kernel what the current pag is
Updates to chapter one of the Admin Guide. Remove references to the
Authentication Server, add references to a Kerberos server, revise ntpd
parts to reflect the fact that OpenAFS doesn't ship ntpd, and removed
the distinction between the US and non-US versions of the Update Server.
rxi_Findcbi, rxi_FIndIfnet, rxi_FindIfMTU "failure" end up returning
the RX_REMOTE_PACKET_SIZE as the mtu to use unless we allow our override
to apply, so we do that. then, add an afsd switch to allow setting it.
afsd man page update required and will follow.
====================
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.
====================
LICENSE IPL10
FIXES 124880
only valid addr/port pairs are registered in the hash table.
add then remove when changing addresses.
make host restoral properly hash hosts.
remove should remove the address we asked for and not simply the
primary address.