forked from pool/openafs
467 lines
19 KiB
Plaintext
467 lines
19 KiB
Plaintext
|
User-Visible OpenAFS Changes
|
||
|
|
||
|
OpenAFS 1.8.0pre5
|
||
|
|
||
|
All Platforms
|
||
|
|
||
|
* Substantial code quality improvements, largely spotted by Coverity and
|
||
|
clang's static analysis.
|
||
|
- Add new library for platform independent functions (opr).
|
||
|
- Remove arbitrary path name length limits.
|
||
|
- Convert to Heimdal's roken library for reliability.
|
||
|
- Avoid garbage in allocated buffers (calloc).
|
||
|
- Modernize signal handling in pthreaded server processes (softsig).
|
||
|
- Improve code comments and additional Doxygen style comments.
|
||
|
- Reduce compiler warnings, dead code, unused variables, and
|
||
|
undefined behavior.
|
||
|
- Fix bugs found by static code analyzer (clang-analyzer).
|
||
|
- Improved unit test coverage.
|
||
|
- Make VLDB flag definitions consistent.
|
||
|
- Improve use of run-time assertions and add static assertions.
|
||
|
- Add compiler attributes to assist static analyzers.
|
||
|
- Clean up include headers in the entire tree.
|
||
|
- Improve command-line handling library (libcmd).
|
||
|
- Replace hash functions with Jenkin's hash function for faster
|
||
|
and more evenly distributed lookups.
|
||
|
- Provide a red-black tree data structure to enable algorithmic speedups.
|
||
|
- Convert backup and salvage servers to the common logging API (libutil).
|
||
|
- Improve volume id data type consistency (VolumeId).
|
||
|
- Import APIs for kerberos-style profile configuration support.
|
||
|
- Add new APIs to support UserList identities.
|
||
|
- Add new APIs to support tabular output from command-line utilities.
|
||
|
- Convert vnode macros to inline-functions.
|
||
|
|
||
|
* Improved support for non-DES encryption types:
|
||
|
- Convert to Heimdal's hcrypto library to support RFC 3961.
|
||
|
- Add extended key file format replacing rxkad.keytab, and
|
||
|
new key management APIs.
|
||
|
- Add support for extended key types to asetkey.
|
||
|
- Add akeyconvert to assist in upgrading to OpenAFS 1.8.x by converting an
|
||
|
existing rxkad.keytab file to an extended key file.
|
||
|
- Do not install the kaserver and related utilities by default to
|
||
|
discourage the use of these DES-dependent components.
|
||
|
- Remove obsolete klogin and klogin.krb programs.
|
||
|
- Add new token APIs to support new rx security classes.
|
||
|
|
||
|
* Migrate from LWP to POSIX threads (pthreads):
|
||
|
- Convert the ptserver and vlserver from LWP to pthreads.
|
||
|
- Remove LWP version of the file server binary.
|
||
|
- Convert afsd, aklog, asetkey, klog.krb5, pts, udebug, and vos, from LWP
|
||
|
to pthreads.
|
||
|
|
||
|
* Improvements to Rx:
|
||
|
- Restructure the Rx API to privatize the implementation.
|
||
|
- Convert rx events to a red-black tree data structure to improve
|
||
|
performance.
|
||
|
- Convert from mutexes to atomic operations for counters to reduce lock
|
||
|
contention.
|
||
|
- Provide per-opcode Rx statistics.
|
||
|
- Add an rx_opaque data type to support non-DES encryption types
|
||
|
and general code cleanup.
|
||
|
- Wake up the application thread after 'twind' is updated to avoid 100ms
|
||
|
transmit delays when the receive window transitions from closed to
|
||
|
open.
|
||
|
- Fix for OPENAFS-SA-2017-001: sanity-check peer transport parmeters
|
||
|
received in ack trailers
|
||
|
|
||
|
* Libraries (both internal and installed) are built using libtool, including
|
||
|
libuafs. The resulting shared libraries for libafsrpc and libafsauthent
|
||
|
should be more usable than previously.
|
||
|
|
||
|
* Improvements to the build system:
|
||
|
- Convert to libtool to build shared libraries.
|
||
|
- Clean up and improve the build system.
|
||
|
- Support out of tree builds.
|
||
|
- Add a makefile target to generate Doxygen source code documentation.
|
||
|
- Link the Java API for OpenAFS with libuafs.a and remove the
|
||
|
libjuafs.a library.
|
||
|
- Always build the rxperf tool.
|
||
|
- Fix man-page generation by make after ./regen.sh -q
|
||
|
- Support the SOURCE_DATE_EPOCH environment variable to improve build
|
||
|
reproducibility.
|
||
|
- Modernize language specific SWIG typemaps for libuafs Perl bindings.
|
||
|
- Refactor acinclude.m4 into a set of smaller m4 files (12876, 12877, 12878)
|
||
|
|
||
|
* Improvements to documentation:
|
||
|
- Document the new KeyFileExt file.
|
||
|
- Reorganized the README files.
|
||
|
- Improvements and fixes to documentation generation.
|
||
|
- Add experimental epub and mobi support
|
||
|
- Remove obsolete LWP information from the file server documentation.
|
||
|
- Update and reorganize the Quick Start Guide.
|
||
|
- Update the Admin Guide.
|
||
|
- Remove AIX, HP-UX, and IRIX information from the Quick Start Guide.
|
||
|
- Document the vldb and prdb (ubik) file formats.
|
||
|
- Add PtLog man page.
|
||
|
- Corrections and clarifications to man pages.
|
||
|
- Add ubik threading analysis doc.
|
||
|
- Normalize the location of text documents in the source tree.
|
||
|
|
||
|
* Improvements for troublshooting, debugging, and testing:
|
||
|
- Log more details on volume-server-to-fileserver communication errors
|
||
|
when possible.
|
||
|
- Set thread names in pthreaded servers on platforms which support
|
||
|
thread names.
|
||
|
- Add dynroot lock tracking to cmdebug
|
||
|
- Fix tracking of an fstrace call site in the cache manager background
|
||
|
process.
|
||
|
- Add the afsload tool to simulate multiple cache managers for file server
|
||
|
load testing.
|
||
|
- Add run-time checks for refcount imbalances in the cache manager.
|
||
|
- Fix missing newlines in afsd -debug output.
|
||
|
|
||
|
* Developer tool improvements:
|
||
|
- Improvements and fixes for rxgen (used to generate Rx RPC bindings).
|
||
|
- Add tool for man page verification of command options.
|
||
|
- Add tool to find Unix cache manager lock identification numbers.
|
||
|
- Add an option for pretty build output.
|
||
|
|
||
|
* RPM packaging updates:
|
||
|
- Update the spec file to keep up with accumulated changes.
|
||
|
- Move the klog.krb5 man page to the openafs-krb5 sub-package.
|
||
|
- Remove stray man pages. (12870, 12871)
|
||
|
- Prevent double-starting client on RHEL7
|
||
|
- Convert rpm spec file from deprecated 'make dest' to 'make install'.
|
||
|
- Fix rpmbuild command line option default handling.
|
||
|
- Support older versions of rpmbuild which do not support the
|
||
|
rpmbuild %exclude directive. (12873)
|
||
|
- Move the legacy kaserver and related programs to separate sub-packages,
|
||
|
which are only built when rpmbuild is given the '--with kauth' option
|
||
|
(12600, 12872)
|
||
|
|
||
|
* Add a new protection error code (PRNAMETOOLONG) instead of silently
|
||
|
truncating names which exceed the maximum name length (PR_MAXNAMELEN).
|
||
|
|
||
|
* Add an implementation limit (50000) on the number of names/ids which can
|
||
|
be transmitted by unauthenticated clients to the ptserver, avoiding
|
||
|
excessive resource consumption from unauthenticated requests.
|
||
|
|
||
|
* Add the -config option to vos, pts, and aklog to specify the path to the
|
||
|
cell configuration files.
|
||
|
|
||
|
* Add more details in vos release -verbose output.
|
||
|
|
||
|
* Add the cacheout -encrypt option to encrypt communication between the
|
||
|
cacheout client and the fileserver.
|
||
|
|
||
|
* Add the command line options to the afsio program to enable encryption of
|
||
|
traffic between afsio and the fileserver (-clear, -crypt).
|
||
|
|
||
|
* Add the vos release -force-reclone option to force recloning the volume to
|
||
|
be released without forcing a full volume dump being transmitted to all
|
||
|
remote sites.
|
||
|
|
||
|
* Fix vos to avoid writing loopback addresses into the VLDB in
|
||
|
certain cases.
|
||
|
|
||
|
* Print bos and pts error messages to standard error instead of
|
||
|
standard out.
|
||
|
|
||
|
* Improve formatting of the -help output of all commands.
|
||
|
|
||
|
* Change -n to -dryrun in all backup subcommands.
|
||
|
|
||
|
* Change the backup deletedump -port command line option to -portoffset.
|
||
|
|
||
|
* Add user and build host in the version string returned by
|
||
|
rxdebug -version.
|
||
|
|
||
|
* Support recent versions of gcc (7.2.1) (12897)
|
||
|
|
||
|
All Server Platforms
|
||
|
|
||
|
* Ubik servers using pthreads are now available and are used by default
|
||
|
|
||
|
* As part of improving Ubik reliability in certain edge cases, an extra
|
||
|
election cycle (about 60 seconds) may be needed before writes are
|
||
|
permitted. This is a conservative change that may be removed in
|
||
|
the future.
|
||
|
|
||
|
* Avoid continually retransmitting the ubik database to remote sites when
|
||
|
a write transaction occurs as remote sites are attempting to rejoin the
|
||
|
ubik cluster. (12896)
|
||
|
|
||
|
* Ensure the ubik database version number is updated on remote sites at the
|
||
|
point the database is transferred to remote sites instead of waiting for
|
||
|
the next ubik beacon. This avoids write transaction failures during the
|
||
|
window between the database transfer and the next ubik beacon (12885).
|
||
|
|
||
|
* Remove periodic background fsync by the fileserver (ihandle fsync thread).
|
||
|
|
||
|
* Fix potential file handle leak in the file server ihandle caching layer.
|
||
|
|
||
|
* Disable the so-called "hot threads" feature in the file server. The hot
|
||
|
threads feature was intended as an optimization for dispatching incoming
|
||
|
calls to the current listener thread, but has been reported to incur a
|
||
|
performance penalty on modern multi-core systems.
|
||
|
|
||
|
* Do not permit creation of users with id of ANONYMOUSID.
|
||
|
|
||
|
* Do not save/restore host states in the fsstate.dat file for hosts which
|
||
|
are in the process of retrieving CPS information from the ptserver when
|
||
|
the fileserver is being shutdown. This fixes a bug in which the fileserver
|
||
|
will incorrectly block all threads following a restart.
|
||
|
|
||
|
* Add the ptserver -restrict_anonymous option to inhibit exposure of user
|
||
|
names from the ptserver.
|
||
|
|
||
|
* Do not truncate server log files by default when server processes
|
||
|
are started. The -transarc-logs option provides backward compatibility
|
||
|
with IBM AFS log handling on server startup. Log messages may be lost
|
||
|
in back-to- back restarts when a server is running in this mode.
|
||
|
|
||
|
* Reopen server logs on SIGUSR1. This may be used by third-party log
|
||
|
rotation tools, such as logrotate, to reopen the log file handles after
|
||
|
log files have been renamed.
|
||
|
|
||
|
* Fix various bugs when logging with -mrafslogs enabled.
|
||
|
|
||
|
* Dynamically reload the kerberos realm to AFS cell mapping (krb.conf) and
|
||
|
exclusions for mapping kerberos principals to AFS identities (krb.excl)
|
||
|
configuration when the CellServDB cell configuration file is touched.
|
||
|
Previously, a restart of the file server was required after updating the
|
||
|
kerberos mapping configuration files.
|
||
|
|
||
|
* Add a command line option (-restricted_query) to the vlserver and
|
||
|
volserver to restrict information queries about volumes to a specific
|
||
|
group of users.
|
||
|
|
||
|
* Add a command line option to the server programs to specify an alternate
|
||
|
fully qualified log file name (-logfile).
|
||
|
|
||
|
* Add a command line option (-config) to the server programs to specify
|
||
|
an alternate path to the server configuration.
|
||
|
|
||
|
* Add a command line option to the ptserver and vlserver to specify an
|
||
|
alternate path to the database data files.
|
||
|
|
||
|
* Add a command line option to the volume server to enable encryption of
|
||
|
volume-server-to-volume-server-traffic (-s2scrypt).
|
||
|
|
||
|
* Increase the maximum number of LWP threads allowed for the ptserver and
|
||
|
vlserver from 16 to 64 (-lwp).
|
||
|
|
||
|
* Remove an unused file server command line option (-k).
|
||
|
|
||
|
* Fix an incorrect assertion in Demand Attach File Server which could cause
|
||
|
the file server process to abort in certain rare conditions.
|
||
|
|
||
|
* Deprecate the -bitmap-later configure option for non-Demand-Attach File
|
||
|
Servers (DAFS).
|
||
|
|
||
|
* Add -vhashsize support to non-Demand-Attach File Servers (DAFS).
|
||
|
|
||
|
* Add support for subnet ranges in the NetInfo and NetRestrict
|
||
|
configuration files.
|
||
|
|
||
|
* Add the GetXStats RPC to the audit log.
|
||
|
|
||
|
* Fix directory creation by bosserver when built for non-Transarc paths.
|
||
|
|
||
|
* Fix incomplete list of server addresses retreived by vos listaddr when the
|
||
|
vldb contains unreferenced multi-homed server entries.
|
||
|
|
||
|
* Remove obsolete bos blockscanner and unblockscanner commands that
|
||
|
were only needed for the removed MR-AFS functionality.
|
||
|
|
||
|
* Remove obsolete bos salvage options that were only used by the
|
||
|
removed MR-AFS functionality..
|
||
|
|
||
|
* Remove calls to the deprecated sbrk() function.
|
||
|
|
||
|
* Add an experimental feature to database servers to support ubik reads
|
||
|
while write transactions are in progress, enabled at build time with the
|
||
|
--enable-ubik-read-while-write configure option. This feature is not
|
||
|
considered ready for production usage at this time.
|
||
|
|
||
|
* Avoid filling the FileLog with "Volume x offline: not in service" when
|
||
|
a volume is administratively taken offline with vos offline.
|
||
|
|
||
|
* Print an error message when bosserver is started with an unknown
|
||
|
command line option.
|
||
|
|
||
|
* Modify the volume updateDate when the volume is changed by a salvage.
|
||
|
|
||
|
* Volume usage statistics are now preserved during reclone and restore
|
||
|
operations by default, the behavior previously enabled by
|
||
|
the -preserve-vol-stats flag to the volserver. The historical behavior
|
||
|
can be retained via the -clear-vol-stats argument.
|
||
|
|
||
|
All Client Platforms
|
||
|
|
||
|
* Use rxkad_crypt by default for connections to fileservers. This matches
|
||
|
the existing behavior of the Windows client and has been applied by
|
||
|
the distribution packaging on many platforms already.
|
||
|
|
||
|
* Add support for relative ACL changes with fs setacl. If a single plus (+)
|
||
|
or minus (-) character is appended to the rights' letters argument, the
|
||
|
new rights are computed relatively to the existing ones.
|
||
|
|
||
|
* Remove afsd -settime and afsd -nosettime support.
|
||
|
|
||
|
* Add the afsd -inumcalc option to specify the method used to calculate
|
||
|
inode numbers presented by AFS.
|
||
|
|
||
|
* Add the afsd -volume-ttl option to specify set the maximum amount of time
|
||
|
information retrieved from the vlserver will be cached, regardless of
|
||
|
callback expiry times.
|
||
|
|
||
|
* Return EIO on internal errors instead of the misleading ENOENT.
|
||
|
|
||
|
* Log ICMP errors received, if any, for unreachable servers.
|
||
|
|
||
|
* Improve performance of clients with multiple PAGs for different cells.
|
||
|
|
||
|
* Fix race condition between changing and using user tokens among cache
|
||
|
manager threads.
|
||
|
|
||
|
* Fix fs sysname for users with UID 2748 and 2750 when not running
|
||
|
in -rmtsys mode.
|
||
|
|
||
|
* Add Perl bindings for the user-space cache manager library (libuafs).
|
||
|
|
||
|
* Fixes to the bypasscache feature.
|
||
|
|
||
|
* Fix fs getcacheparms miscounts.
|
||
|
|
||
|
* Remove the obsolete Netscape plugin.
|
||
|
|
||
|
* Fix building gtx when ncurses is linked against libtinfo.
|
||
|
|
||
|
* Update to the GCO CellServDB update from 14 March 2017.
|
||
|
|
||
|
Linux
|
||
|
|
||
|
* Remove Linux 2.2 and 2.4 support.
|
||
|
|
||
|
* Changes to avoid EIO errors with multiple processes doing intensive mmap
|
||
|
writing. (Drop PageReclaim AOP_WRITEPAGE_ACTIVATE.)
|
||
|
|
||
|
* Prevent fakestat data inconsistencies in certain cases (131855).
|
||
|
|
||
|
* Fix dentry leak which can cause a crash on shutdown.
|
||
|
|
||
|
* Fix improper use of ENOENT and avoid incorrect use of linux negative
|
||
|
dentry cache.
|
||
|
|
||
|
* Use a more correct (less aggressive) scheme to react to downward
|
||
|
pressure on cache usage, avoiding d_invalidate(), which can cause
|
||
|
getcwd() failures on RHEL 7.4.
|
||
|
|
||
|
* Improve error reporting when encountering corrupt directories.
|
||
|
|
||
|
* Improve rx error handling in the Linux cache manager.
|
||
|
|
||
|
* Rename kpasswd to kapasswd when packaging RPMs to avoid colliding with
|
||
|
Kerberos kpasswd.
|
||
|
|
||
|
* Do not use the obsolete --enable-largefile-fileservers configure option
|
||
|
when packaging RPMs.
|
||
|
|
||
|
* In Red Hat packaging, use a separate rpm for kmod debuginfo,
|
||
|
removing a needless tight version dependency on the userspace package.
|
||
|
(12822, 12875)
|
||
|
|
||
|
* Use the RemainAfterExit systemd feature to avoid premature exit
|
||
|
when -afsdb is not given, for RPM packages.
|
||
|
|
||
|
* Remove Debian packaging files from the OpenAFS source tree. Debian
|
||
|
packaging files are currently maintained in the downstream Debian
|
||
|
infrastructure.
|
||
|
|
||
|
* Add the sparc_linux26 sysname.
|
||
|
|
||
|
* Desupport 32-bit Linux kernels on s390/s390x.
|
||
|
|
||
|
* Fix Debian/Ubuntu build regression on kernel 3.16.39.
|
||
|
|
||
|
* Fix --enable-kernel-debug for linux 4.8+.
|
||
|
|
||
|
* Fix a hang encountered when accessing a previously removed
|
||
|
directory entry (12811).
|
||
|
|
||
|
* Support linux 4.10, 4.11, 4.12, 4.13, 4.14, 4.15
|
||
|
|
||
|
Solaris
|
||
|
|
||
|
* Remove support for all Solaris and SunOS platforms prior to Solaris 8.
|
||
|
|
||
|
* Build 64-bit binaries for Solaris x86 by default.
|
||
|
|
||
|
* Use one-group PAGs on Solaris 11, which is required for PAG support
|
||
|
on Solaris 11 since supplemental groups must be sorted starting with
|
||
|
Solaris 11.1.
|
||
|
|
||
|
* Update search paths for solaris cc for recent versions Solaris Studio.
|
||
|
|
||
|
* Modernize declaration of module dependences by converting from the
|
||
|
deprecated _depends_on symbol to ELF dependencies.
|
||
|
|
||
|
* Avoid BAD TRAP panic due to invalid opcodes on x86 with Studio 12.5.
|
||
|
|
||
|
* Add ctf debug records to Solaris kernel modules when debug builds
|
||
|
are enabled and the ctf tools are present (ctfconvert/ctfmerge).
|
||
|
|
||
|
* Save kernel module function arguments on x86 for debugging purposes.
|
||
|
|
||
|
MacOS
|
||
|
|
||
|
* Stop processing upcalls once rx shutdown starts.
|
||
|
|
||
|
* Enable atomics for the darwin kernel.
|
||
|
|
||
|
* Add a syscall to enable/disable bulkstat at run-time, which is
|
||
|
disabled by default.
|
||
|
|
||
|
* Fix path to binaries in the prefpane.
|
||
|
|
||
|
* Fix builds on MacOS 10.12 by building only the active architecture
|
||
|
by default.
|
||
|
|
||
|
* Support versions up through 10.13 (High Sierra) and APFS
|
||
|
|
||
|
FreeBSD
|
||
|
|
||
|
* Use the native kernel module build system instead of an ad hoc
|
||
|
replacement build system.
|
||
|
|
||
|
* Remove FreeBSD packaging files from the OpenAFS source tree. FreeBSD
|
||
|
packaging files are currently maintained in the downstream FreeBSD Ports
|
||
|
Collection.
|
||
|
|
||
|
* Stay up to date with new FreeBSD releases (through 10.3).
|
||
|
|
||
|
* Do not claim AFS_VM_RDWR_ENV
|
||
|
|
||
|
* Add sysnames and files for i386 and amd64 10.4, 11.1, and 12.0
|
||
|
(12-CURRENT, at present). (12887, 12888)
|
||
|
|
||
|
* Remove trailing semicolons to fix the build on FreeBSD (12899)
|
||
|
|
||
|
NetBSD
|
||
|
|
||
|
* Stay up to date with new NetBSD releases (through 7.x)
|
||
|
|
||
|
* Update to use cprng(9) as the randomness source on NetBSD 6.99/7.x.
|
||
|
|
||
|
* Build system updates for NetBDS 6.99.x
|
||
|
|
||
|
* Do not claim AFS_VM_RDWR_ENV
|
||
|
|
||
|
OpenBSD
|
||
|
|
||
|
* Stay up to date with new OpenBSD releases (through 4.7)
|
||
|
|
||
|
* Do not claim AFS_VM_RDWR_ENV
|
||
|
|
||
|
AIX
|
||
|
|
||
|
* Updates for AIX support.
|
||
|
|
||
|
* Fix build system for AIX exports.
|
||
|
|
||
|
* Add the uidpag and localuid runtime options to the aklog LAM plugin.
|
||
|
(These runtime options override the use of UID-based PAGs, which were
|
||
|
introduced to appease the CDE screensaver.)
|
||
|
|