            OpenAFS Release Notes - Version 1.6.0
     _________________________________________________________________
All UNIX systems: Security bugfixes.
All systems: Major bugfixes.
     _________________________________________________________________

All platforms:

- Rx NAT pings are not enabled until peer has answered.

- Numerous fixes to command argument parsing.

All server platforms:

- Avoid crashing on host table exhaustion. Instead, defer clients.

All UNIX platforms:

- Rx connection reference counting is enabled.

- An Rx connection reference count leak is fixed in bulkstat.

- Handle unparsable directory objects.

- Handle Kerberos cred cache errors in aklog.

Linux:

- Init script properly returns status as exit code.

- RPM packaging fixes (executable libraries, no postinstall message)

- Kill i386 from RPM packaging.

MacOS:

- Fix 32 bit Lion client support.

- Avoid panic when doing FSEvent synthesis.

- Fix bug when using non-dynroot.

- Update Kerberos support in PreferencesPane.

Solaris:

- Avoid panic on shutdown when mount failed.

Windows:

- Add shutdown message to event log.

- Check offline volume status by policy rather than on each daemon thread
  run.

- Return error on directory object not found instead of crashing.

- Improve error message output.

- afslogin.dll can start afsd_service if it's not starting or started.

- Optimize away release lock RPCs for deleted files.

- Background Daemon will not perform operations on deleted files.

- Resort recently used directories to the top of the LRU if the directory
  is larger than the stat cache.

- Resort deleted objects to the bottom of the LRU.

- Use interlocked operations for state and queue fields to allow safe
  bit set and clear on multiprocessor systems.

CHANGES IN 1.6.0PRE7

All platforms:

- Substantial Rx updates to correct erroneous behavior.

- Salvager tries harder to detect linktable issues.

- Additional documentation.

- xstat tools now cope with differing timeval structures between endpoints.

All UNIX platforms:

- New build targets to make distribution tarfiles (make dist) and 
  srpms (srpm).

Demand Attach Fileserver platforms:

- Don't attach volumes with special status set.

FreeBSD:

- Avoid panic at shutdown due to vcache flushing.

- Support virtual network stacks.

Linux:

- Treat Linux 3.0 as Linux 2.6 for sysname purposes.

- Attempt to properly handle SELinux in packaging.

MacOS:

- MacOS 10.7 support.

Solaris:

- Try harder to avoid deadlocks on file-larger-than-cache operations.

Windows:

- Add support for NTFS symlinks.

- Handle file search requests for virtual syscall ioctl file.

- Process SyncOps properly to enforce ordered operations.

- Avoid recursing during NewServer operations.

- Correct lock acquisition order during SMB locking.

CHANGES IN 1.6.0PRE6

All UNIX platforms:

- Fall back to afs3-vlserver SRV record values when afs3-ptserver SRV
  record is not available.

- Avoid holding unneeded locks when probing server capabilties.

- Do not attempt page flushes for directories.

Demand Attach Fileserver platforms:

- Unlink fileserver state file on standalone salvage.

FreeBSD:

- Support for virtual network stacks.

Linux:

- Further corrections to Redhat packaging.

- Avoid showing files larger than one cache chunk size as full of NULLs.
  (129880) This bug was in unissued pre5 only, not in pre4.

- Fix lockup in 2.6.38 due to erroneous kernel feature configure test.

MacOS:

- Rework logic for bulk status operations to avoid a potential hang.

Solaris:

- Don't leave dangling function references if kernel extension fails to load.

Windows:

- aklog supports dotted Kerberos v5 principal names.

- afskfw library always attempts afs/cell@USER-REALM

- afskfw library must test return code from
  krb5_cc_start_seq_get() or will trigger a null
  pointer exception when using Heimdal.

- lock protected fields must be 32-bit in order
  to avoid memory overwrite races.

CHANGES IN 1.6.0PRE5

All server platforms:

- Avoid leaking references to hosts during callback break multi-Rx
  operations. (129376)

All UNIX platforms:

- Avoid a potential deadlock (which times out) when we need to allocate more
  callback returns and must flush some already in use.

- Deal with libcom_err conflicts with other packages using it (e.g. krb5)
  (128640)

AIX:

- Fix PAG usage to track by PAG identifier, not group list.

Irix:

- Properly create new vnodes to avoid crashing in the client.

Linux:

- Support 2.6.39.

- Avoid attempting to free stat cache entries when we are below user-specified
  number of entries in use.

- Properly track user-specified number of stat cache entries to use as a
  desired usage target.

- Don't read pages beyond EOF in the cache. (128452)

MacOS:

- Properly shut down AFS, closing the Rx socket in the upcall handler to
  avoid attempting to process data after we can no longer do so.

NetBSD:

- Updates for platform support.

Windows:

- Fix caching of non-existent volumes.  The test to
  trigger an immediate CM_ERROR_NOSUCHVOLUME in
  cm_UpdateVolumeLocation() was backwards.

- Prevent the background daemon from checking the
  status of non-existent volumes.  cm_CheckOfflineVolumes()
  should skip volume groups with the CM_VOLUMEFLAG_NOEXIST
  flag set.

- The afskfw library should return an error immediately
  if the krb5_32.dll library cannot be loaded.  Affects
  afslogon.dll and afscreds.exe.

- No longer depend on leashw32.dll in afskfw library.

- NPLogonNotify must provide the user password in all
  calls to KFW_AFS_get_cred().  It cannot count on a
  credential cache being preserved between calls.  Permits
  tokens to be acquired for all cells listed in the
  TheseCells registry value for a domain.

- Improve the trace logging from NPLogonNotify().

- Avoid a race when writing the cm_scache_t mountPointString
  when acquiring mount point or symlink target data via
  cm_GetData().  The race could result in bogus target
  data being cached.

- Permit the use of des-cbc-md5 and des-cbc-md4 enctypes
  as DES keys in asetkey.exe.

CHANGES IN 1.6.0PRE4

All server platforms:

- A file descriptor leak which could result in corrupted files
  in the fileserver was fixed. An IMMEDIATE upgrade from previous
  1.6 release candidates as well as 1.5 release fileserver is 
  SUGGESTED!

- Properly support large volume numbers (larger than 2147483647).

All platforms:

- Documentation updates.

Demand Attach Fileserver platforms:

- Allow salvager to be run manually again when DAFS is being used. (129458)

FreeBSD:

- New RC script, updated packaging.

Linux:

- Improve RPM building tools.

- setpag() errors are now properly reported.

MacOS:

- Preferences Pane behavior fixed for 1.6 series (version detection
  is used to select default behavior).

- A potential kernel panic during bulkstat operations is fixed. (128511)

- 64-bit MacOS kernel performance is greatly improved. (128934)

Solaris:

- Properly report errors for AFS system call callers.

Windows:

- Properly create new cell mount points in freelance mode.

- Avoid recursive offline volume checks.

CHANGES IN 1.6.0PRE3

All platforms:

- Revert UUID support in vos.

- pt_util fixed to properly create new databases.

- Rx busy call channel error handling improved.

- MTU discovery now properly shut down on call reset.

- FUSE client support fixed for non-/afs mounts.

All server platforms:

- A deleted volume can now be recreated properly.

- Callbacks are again not broken during whole partition salvages.

- Positional vectored IO fixed for largefile (>2GB) capable systems.

- Fileserver per-client thread usage again properly enforced.

- Anonymous dropbox support improved and drawbacks documented.

Demand Attach Fileserver platforms:

- Ensure vnodes are not reallocated while in use due to volume
  bitmap errors.

Linux:

- Perform vcache eviction via a fast path before visiting vcaches
  where sleep is needed.

MacOS:

- aklog AuthorizationPlugin now provided.

Solaris:

- Corrected Solaris 11 startup script.

- vcache mappings freed on shutdown to avoid panic.

Windows:

- icon tray state now conditionally set (128591)

CHANGES IN 1.6.0PRE2

All platforms:

- Documentation updates.

- Don't stop Rx keepalives after an ackall is received, avoiding
  spurious connection timeouts. (128848)

- Don't retry Rx calls on channels returning busy errors. (128671)

- vos will not die with a double free error at command completion.

- Properly enable Rx connection hard timeouts.

- Initialize rx_multi lock before use.

- Avoid spurious crashes when initializing in "backup" client.

All unix platforms:

- Check for /afs existance before starting, unless -nomount is specified.

- Avoid a potential panic when using /afs/.:mount syntax.

- Avoid a panic in memcache mode due to missing CellItems file.

All server platforms:

- Attempt to recovery more quickly from timed out volume release
  transactions.

- Auditing now properly byte order swaps IP addresses when printing.

- vos split now has improved error handling.

- Many changes to again support Windows fileservers.

- During volume removal, data removal speed improved.

- Improve CPU utilization during volume attaching by DAFS.

- In salvager check-only mode, avoid potentially fixing a vnode.

- Fix support for large (greater than 2gb) volume special files.

- Salvager will not crash if multiple or bad volume link tables
  are encountered.

- Avoid erroneous full dump by remembering which sites were out of date
  at the start of the release.

FreeBSD:

- Remove support for "Giant" lock as we no longer need to use it.

- Don't sleep with AFS GLOCK.

- Properly enable 64 bit long long support.

- Restore support for FreeBSD 7 (128612)

- Fix locking issues at shutdown.

Linux:

- support through kernel 2.6.38.

- RedHat packaging now properly supports RHEL6.

- Use rx_Readv in cache bypass to improve performance.

- Properly handle 0-length replies during cache bypass operations.

- Properly handle non-contiguous readpage cache bypass operations.

- Do proper locking when transitioning to or from cache bypass.

- Avoid extra runs of vcache freeing routine. (128756)

MacOS:

- Check for unloaded kernel extensions when decoding AFS panics.

- Properly handle setpag errors. PAGs are not supported.

- Disable "get tokens at login" in prefs pane if AD authentication
  plugin is configured.

OpenBSD:

- support through OpenBSD 4.8.

Solaris:

- Fix support for Solaris pre-10.

Windows:

- afs_config will not longer set the Tray Icon State
  in the registry if the checkbox is not present in
  the dialog. (128591)

- AFS Explorer Shell Extension now works from folder
  backgrounds.  Overlays for mount points and symlinks
  are present in the dll, but are not registered at present
  by the installers.

- Do not use RankServerInterval registry value as the value for
  PerformanceTuningInterval.

- When the data version of a mountpoint or symlink changes,
  the target string in the cm_scache_t object must be cleared.

- "fs checkservers" now includes vldb servers in the output
  and only lists multi-homed servers once.  A multi-homed
  server that has at least one up interface is no longer
  considered to be down.

- When asynchronously storing dirty data buffers to the
  file server ensure that (a) the cm_scache_t object and
  the cm_buf_t object are for the same File ID so that
  locking and signalling work properly; and (b) if the
  FID no longer exists on the file server, do not panic,
  just discard the buffer.

- When processing VNOVOL, VMOVED and VOFFLINE errors perform
  server comparisons by UUID or address and not simply by
  cm_server_t pointer.  Otherwise, server failover may not
  succeed.

- Do not preserve status information for cm_scache_t objects
  when the issuing server is multi-homed.

- Giving up all callbacks when shutting down or suspending
  the machine is now significantly faster due to the use
  of an rx_multi implementation.  (This functionality is
  still off by default and must be activated by a registry
  value.)

- Race conditions were possible when updating the state
  of the cm_volume_t flags and when moving the volumes
  within the least recently used list.

- Ensure that the lanahelper library does not perform a
  NCBRESET of each lan adapter when enumerating the
  current network bindings.  Correcting this permits OpenAFS
  to work on Windows 7 when the network adapter settings
  change.

- Fix creation of mount points and symlinks as \\AFS\xxxx

PREVIOUS CHANGES:

All platforms:

- vos now properly deals with matching sites when servers are multihomed.

All Unix platforms:

- Servers now marked down when GetCapabilities returns error.

- In-use vcache count is now properly tracked.

All server platforms:

- Fix ptserver supergroups support on 64 bit platforms.

- Demand attach salvaging doesn't use freed volume pointers.

- Properly hold host lock during host enumeration in fileserver.

FreeBSD:

- Fix socket termination on shutdown.

- Support for 7.2, 7.3, 7.4 and 8.2 included.

- References to vcaches are no longer leaked during root or reclaim.

Linux:

- Define llseek handler to avoid ESPIPE error in 2.6.37.

- Mount interface replaces get_sb (new for 2.6.37, not yet required).

- RedHat init script allows deferring for a new binary restart.

- DEFINE_MUTEX replaces DECLARE_MUTEX for 2.6.37.

MacOS:

- Correct return value from setpag syscall.

OpenBSD:

- Bug fixes for issues introduced previously in 1.5 series.

Solaris:

- Switch to ioctl() syscall replacement for Solaris 11 since syscall 65
  is not safe.
