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.
ForceDNS is implied non-zero if there are no [servername]
keys under the [cellname] key. Otherwise, ForceDNS is zero.
If [servername] keys are specified and none of them evaluate
to a valid server configuration, the return code is success.
This prevents failover to the CellServDB file or DNS.
Registry distributed info takes precedence over the CellServDB file.
Registry support has been added to both the Windows specific cm_config
interface and the auth/cellconfig interface utilized by aklog, the
services, and the vast majority of support commands.
Enhance the DNS lookup for Cell vlserver info to support ranking info
which is used with _vlserver._udp SRV record lookups when AFSDB records
are not present. Priorities become ranks.
libafsconf.dll has been present since OpenAFS 1.0. However,
for some unknown reason the components that it consists of
(cm_dns.obj, cm_config.obj, cm_nls.obj) have been staticly
linked into exes and dlls all over the code base. This commit
removes all of the static references and replaces them with
libafsconf.lib.
libafsconf.dll is also moved from Client\Program to Common
because it is now linked to by server and utility components.
A flush operation on a directory will result in the btree being destroyed.
This can race with on-going operations. Make sure that the dirlock is held
if the btree is destroyed. Otherwise, just invalidate the btree version
number.
====================
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 MIT
FIXES 124787
avoid either reopening closed vnodes and leaving cached descriptors around,
or discarding a reference we're not holding; instead, sync changes when the
fd is closed, and note such has been done; otherwise, no changes from older
code.
Replace version info in the DocBook files with a new ENTITY "version"
associated with a local "version.xml" file which contain a <revision>
tag for the current release.
The version.xml file should be autogenerated by the Makefile system.
Standardize the UNIX Makefiles for all of the DocBook guides. Remove the
rest of the generated files and switch to xsltproc and dblatex for the
document generation in all cases. Fix a few DocBook errors by removing
the contents of the <index> tag and removing the unknown <pubsnumber> tag
in the <revision> field.
Use dblatex to build PDF documentation instead of docbook2html and xsltproc
to build HTML instead of docbook2html. Remove all the index generation
logic, since dblatex and xsltproc handle that automatically. Remove the
contents of the <index> tag in the source, since neither program requires
there be anything in there.
Remove the style sheets and configuration that were used for docbook2*.
Install symlinks for the *.krb versions of klog, pagsh, and tokens to the
non-krb versions and add information about the *.krb versions to the
non-krb man pages.
Note in CellServDB man page that it's also used to populate root.afs for
a -dynroot client. Also document the dynamic lookup of database servers
with -afsdb and provide some more information about when CellServDB has to
contain the cell and when it doesn't.
Mark the backup server as optional, and indicate that the authentication
server is deprecated and CellServDB isn't required for authentication if
Kerberos v5 and aklog are used.
Add new man pages for fs rxstatproc, fs setcbaddr, and fs trace. Also
updates the links from fs to its subsidiary man pages and fixes the
fs rxstatpeer man page a bit to mirror fs rxstatproc.
Update XML to support autogeneration of Index files via XSLT
Add graphics referenced by generated HTML output
Add top level index.html used by the docs.openafs.org web site.
Add NTMakefile for AdminGuide, QuickStartUnix, and UserGuide
that utilizes XSLT to generate Windows HTMLHelp (.CHM) and
website appropriate HTML output.
In AdminGuide and UserGuide, relabel the documentation as OpenAFS
instead of IBM AFS. Create a new revision entry for the OpenAFS
docs.
fix the mmap anti-recursion protection to set and mask CPageWrite appropriately
and with the correct lock protection. this leaves us with an issue to handle
when the mmap'd file is larger (possibly considerably larger) than the
cache