Everywhere AFS_PTHREAD_ENV was defined, UBIK_PTHREAD_ENV was defined as
well, so don't make them separate. Building pthreaded Ubik is controlled
by deciding whether to build the t* versions of various directories, not
by the preprocessor directives. AFS_PTHREAD_ENV is only defined when
building in those directories.
This change eliminates UBIK_PTHREAD_ENV and uses AFS_PTHREAD_ENV to mean
the same thing.
As a side effect, fixes compiles on arm with --enable-pthreaded-ubik, since
arm never defined UBIK_PTHREAD_ENV.
If during volume location updating, the VL_GetAddrsU call fails for any
of the identified servers, return an error but do so without leaking
memory or deadlocking other threads that might be waiting.
No longer set the rx_SetConnDeadTime and rx_SetConnHardDeadTime to
the remaining request SMB RDR timeout within cm_ConnByMServers().
There are not per-call timeouts so simultaneous requests on the same
connection will race with each other either resulting in premature
timeouts or significantly extended timeouts.
The volume state is perfectly consistent. FSYNC_NEEDVOLUME (and the
other state in the pending_vol_op object) is perfectly normal -- it
simply means the volser has exclusive access to the volume for the
purposes of cloning. The bug is that during the DAFS development, I
changed the semantics of the VGetVolume interface without updating the
control logic in afsfileprocs accordingly:
In 1_4_x:
vp->specialstatus != 0 results in returning vp with nUsers incremented
and *ec = vp->sepcialstatus
In DAFS:
V_AttachState(vp) == VOL_STATE_UNATTACHED results in returning a NULL
vp. Since (vp->specialstatus != 0), *ec = vp->specialstatus.
The net result is we need to modify the VBUSY logic in CheckVnode().
Refactor cm_TryBulkStat() to permit BulkStat RPCs to be executed
for lists of entries obtained either from the cm_dir structures
or a btree enumeration. Add cm_BPlusDirEnumBulkStat() which
takes an enumeration object and performs a bulk status rpc on
every entry in the enumeration without advancing the enumeration
state.
- Add documentation of (nearly) all of the configure options.
- Update the platform list to reflect current reality.
- Update the HP-UX header download instructions for the current web site.
- Fiddle with formatting and wording in a few places.
Use AS_HELP_STRING for every AC_ARG_WITH invokation and add proper quoting
to all of them. Based heavily on a patch by Simon Wilkinson, but with
less indentation and more quoting.
Pod::Simple::Search ignores every POD file that doesn't "look right," which
means it skips files containing a period (like krb.conf.pod) unless you set
a search option. Pod::Simple::HTMLBatch has no way to set search options.
Ensure that the cm_req_t object is allocated and initialized at the
SMB layer for all incoming requests. This is done for two reasons:
1. ensure that request start time is consistent across the lifetime
of the request
2. permit the request object to be used to carry a flag indicating
the source of the request. This will permit different timeout
algorithms to be used for SMB vs RDR in the future.
Add support for dynamically determining which ddk include
path should be used. The NTDDKDIR variable used to be set
to the specific directory in which netcfgx.h was located.
Now it is set to the top-level of the DDK install tree.
The specific directory that contains netcfgx.h varies based
upon whether the DDK is 3790.1830 or 6000. Test for file
existence and specify the one that works.
VOL_STATE_SALVSYNC_REQ is a mutally exclusive state. don't allow other things
to attempt to trigger that state when an exclusive state is already present
Add code signing with signtool.exe to the build process.
If all three of the required CODESIGN_xxxx environment
variables are defined, signtool will be used to sign each
exe, dll, and installer as they are built.
The three environment variables are:
CODESIGN_DESC = <description of application>
CODESIGN_TIMESTAMP = <url of certificate authority timestamp server>
CODESIGN_URL = <end user help URL>
The default signing certificate is the one that will be used by
signtool. If these environment variables are not defined, code
signing will be skipped.
Add --with-linux-kernel-packaging configure flag which disables building
multiple kernels for different MP flavors, sets the kernel module name to
openafs.ko with no version, and installs the modules into the standard
Linux location.
Use PATH_CPP instead of CPP everywhere and always redirect the output
instead of assuming that it will write to a file. Hopefully this is the
least common denominator across all systems, although it still isn't
fully correct for systems that have no separate cpp binary.
- The exportfs code is updated for the new export ops. The changes are made
conditional on a new configure test that detects the new ops. fh_to_dentry()
basically replaces decode_fh and uses our own get_dentry function instead of the
now defunct find_exported_dentry.
- A check for fh_len=4 is removed - in testing this value is always 6, possibly
because of changes in the kernel code.
- The check for authtab in osi_nfssrv.c assumes that an undefined weak symbol is
0. On my system, an unresolved weak symbol in a loaded module gets the value
0xfffffffe (-2 or -ENOENT) - again, probably a change on the kernel side. Check
that the pointer is not an error constant using IS_ERR().
- In osi_vfsops.c, only use the export_ops bits if building the translator
afspag: the problem here was dealing with unresolved symbols
- afs_showflags is redefined in afs_pag_call.c so it's available for the afspag
module
- A new source file afs_warn.c gets the afs_warn* functions from afs_util.c.
This allows the afspag module to get the afs_warnuser function without dragging
in too many symbols. The new file is attached separately.
other:
- d_path() now takes a struct path argument - includes a new configure test
- osi_vfsmnt -> osi_vfsmount in osi_misc.c Looked like a typo?
- reorder the remove_proc_entry() calls - we need to remove the children before
the parent (introduced with my earlier patch)
When probing in configure for cpp, use the user's PATH first and then
the /lib and /usr/ccs/lib directories. Set PATH_CPP instead of CPP,
since the latter is just overwritten by Autoconf. Use PATH_CPP by
preference in rxgen and when pre-processing assembly, since otherwise
newer gcc will treat the input file as linker input and not do anything
with it. Don't assume that cpp writes to the second argument; gcc
apparently doesn't always do this. Instead, redirect standard output.
Use the correct subcommand name (fs getacl instead of fs_getacl) on the
HTML index page, even though we have to use the underscore in the NAME
section of the actual POD documentation.
Enable UCONTEXT on alpha, s390, and s390x for glibc > 2.3. This is the
semantic backport of linux-ucontext-fixes-20080630 adjusted for the
param file reorganization.
Current Linux kernels always append a period and the PID to "core" when
creating core files for multithreaded processes. Teach bosserver to scan
the directory into which core files are deposited looking for such core
files and treat them like any other core file if the PID matches the
process that just died.
This patch has been in the Debian OpenAFS packages for some time without
problems.
Add additional missing commands to the to-do list. Add a section on man
page section numbers and their rationale. Document that embedding a
license in the man page isn't required if it's one of the licenses in our
LICENSE file.
When an SMB virtual circuit is prematurely closed due to an error
condition by one thread it is possible that there are still several
other threads still using the VC which will determine that the VC
is dead shortly. As a result we maintain a dead vc list to ensure
that dead vcs are not destroyed while still in use.
With the addition of locking though this causes a problem because the
locks allocated to the virtual circuit are not freed until the vc is
destroyed.
This patch reworks the cleanup routine to make the freeing of resources
the responsibility of the release routine when the refcount hits 0
and the VC is marked dead.
Fix several issues with the afs(1) man page. Based on the patch by Jason,
but I also documented /vicepiv as the maximum, and /vicepiu as the
maximum recommended, partition.
This patch is the second stage of the Unicode conversion. In this stage
the cache manager has been converted from using 8-bit UTF8 C strings to
16-bit UTF16 C strings in the SMB, the DNLC, the B+ tree, and other
directly related modules. The cm_cell, cm_volume, cm_scache, cm_buf,
cm_dcache, and cm_dir modules are left 8-bit because their data is all
8-bit UTF8 since they work only on file server strings.
The SMB layer accepts 16-bit UTF16, the B+ tree and DNLC use normalized
strings as the key, and everything uses UTF8. Efforts have been made
to minimize the number of transitions from UTF8 to UTF16 and back.
For the most part strings are tagged with clientchar_t and normchar_t
and fschar_t types in order to distinguish between the various types of
strings that are in use.
Refactor the pioctl handling to provide a layer of abstraction
between the smb server and the actual pioctl data processing.
This will permit a redirector pioctl layer to be implemented
on top of the core cm_ioctl interfaces.
The general approach is that there is a new cm_ioctl_t object
which is embedded withing a higher level abstraction object.
This object maintains all of the pioctl state processing and
removes any notion of file descriptors or other communication
channel parameters.
The cm_ioctl module maintains just about all of the core
functional processing except for SetToken which needs further
abstraction. Path processing is now performed at the higher
layer and cm_ioctl functions accept cm_user_t, cm_scache_t,
and cm_req_t objects from the higher layer.
The smb_ioctl module performs all of the path translation
using smb server knowledge and passes the necessary objects
to the cm_ioctl module for processing.
This patch is only for the 1.5 branch and just for the afsd
directory. Remove all references to DJGPP preprocessor
symbol in order to make application of commits from head easier.
An incremental commit. This patch adds support for normalization of Unicode
but we have concluded that the normalization rules are incorrect. Normalized
strings should not be written to the file server or returned to the application.