From 12fbfbb4d93fde7fb91bc87a0effd5719a553021 Mon Sep 17 00:00:00 2001
From: Bernhard M. Wiedemann <bwiedemann@suse.de>
Date: Sep 13 2019 14:29:36 +0000
Subject: restructure files


to remain below github limit of 1000 entries

---

diff --git a/ChangeLog b/ChangeLog
new file mode 100644
index 0000000..2b6e9cd
--- /dev/null
+++ b/ChangeLog
@@ -0,0 +1,1226 @@
+commit ad37d5b186c7ea62c874546472a807310acf0e75
+Author: Stephan Wiesand <stephan.wiesand@desy.de>
+Date:   Fri Apr 12 16:53:40 2019 +0200
+
+    Make OpenAFS 1.8.3
+    
+    Update version strings for the 1.8.3 release.
+    
+    Change-Id: Ie8b29765e4f45bc3ddbe1aba9e31068da0bb54cf
+    Reviewed-on: https://gerrit.openafs.org/13546
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
+    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
+
+commit 288c218fa96abd8c9ddb66bc6f6bc60a20311645
+Author: Stephan Wiesand <stephan.wiesand@desy.de>
+Date:   Fri Apr 12 16:47:28 2019 +0200
+
+    Update NEWS for 1.8.3
+    
+    Finalize the release notes for OpenAFS 1.8.3
+    
+    Change-Id: I5b5eeedde53a1135c003302719cfdeca4f67e8fd
+    Reviewed-on: https://gerrit.openafs.org/13545
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
+    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
+
+commit dc16d6fffa69fe98e8bb338daea7b35ff59651c9
+Author: Stephan Wiesand <stephan.wiesand@desy.de>
+Date:   Fri Jan 25 16:08:34 2019 +0100
+
+    Make OpenAFS 1.8.3pre1
+    
+    Update version strings for the first 1.8.3 prerelease.
+    
+    Change-Id: I62d22cfba90ec89ac6734d7e8e08ce062dedff80
+    Reviewed-on: https://gerrit.openafs.org/13444
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
+    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
+    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
+
+commit 3f902d3213ca4bc5e2072c9a729e108ec9b5a0b4
+Author: Stephan Wiesand <stephan.wiesand@desy.de>
+Date:   Fri Jan 25 18:15:00 2019 +0100
+
+    Update NEWS for 1.8.3pre1
+    
+    Release notes for the OpenAFS 1.8.3 prerelease
+    
+    Change-Id: Ie9f988d0f03f1368125d0e5894d5dd5e9ef95d88
+    Reviewed-on: https://gerrit.openafs.org/13445
+    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
+    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
+    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
+
+commit a4b3a659095cf50a4c5bb6cea69c71680817830a
+Author: Mark Vitale <mvitale@sinenomine.net>
+Date:   Mon Oct 29 16:48:14 2018 -0400
+
+    afs: avoid afs_GetDownDSlot panic on afs_WriteDCache failure
+    
+    If afs_GetDownDSlot() finds insuffcient free slots in the
+    afs_freeDSList, it will walk the afs_DLRU attempting to flush and free
+    eligible dcaches.  However, if an error occurs during the flush to
+    CacheItems (afs_WriteDCache()), e.g., -EINTR, afs_GetDownDSlot() will
+    assert.
+    
+    However, a panic in this case is overkill, since afs_GetDownDSlot() is a
+    best-effort attempt to free dslots.  The caller (afs_UFSGetDSlot()) will
+    allocate more dcaches if needed.
+    
+    Instead:
+    - Refactor afs_GetDownDSlot() by moving the QRemove() call to after the
+    afs_WriteDCache logic, so it accompanies the logic that puts the dcache
+    back on the freelist.  This is safe because we hold the afs_xdcache W
+    lock for the duration of the routine.
+    - If afs_WriteDCache() returns an error, return early and let the caller
+    handle any recovery.
+    
+    Reviewed-on: https://gerrit.openafs.org/13364
+    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
+    Tested-by: Andrew Deason <adeason@sinenomine.net>
+    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
+    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
+    (cherry picked from commit d6f52d11c358f71b2c4357cb135e898de7c6277b)
+    
+    Change-Id: I2630bf04b3e3a88a1fa00f693adf2a77290d47ef
+    Reviewed-on: https://gerrit.openafs.org/13503
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
+    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
+    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
+    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
+
+commit ff3ae28f14cb42b5e72adfceb1f6271a8f675e4a
+Author: Cheyenne Wills <cwills@sinenomine.net>
+Date:   Fri Jan 25 17:35:51 2019 -0700
+
+    Redhat: 'clean build area' error message during dkms build/install
+    
+    dkms invokes a make clean command before and after building the kernel
+    module. The make clean that is issued at the start of building results
+    in a nuisance error message because the Makefile doesn't yet exist
+    
+        Building module:
+        cleaning build area...(bad exit status: 2)
+    
+    In the dkms.conf file, built from within the openafs.spec, change the
+    command defined in the CLEAN statement to test for the existence of the
+    Makefile prior to running the actual make clean
+    
+    Reviewed-on: https://gerrit.openafs.org/13460
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
+    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
+    (cherry picked from commit 10f2c469f45eece0e12573388ae66e392e2dff1c)
+    
+    Change-Id: If3440b576ad62441bb6b970016fa9808b51abf70
+    Reviewed-on: https://gerrit.openafs.org/13479
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
+    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
+
+commit 232bd12b070e1fbeb173e31251e65e63a0d1f959
+Author: Andrew Deason <adeason@sinenomine.net>
+Date:   Tue Aug 7 17:27:24 2018 -0500
+
+    Avoid format truncation warnings
+    
+    With gcc 7.3, we start getting several warnings like the following:
+    
+    vutil.c: In function ‘VWalkVolumeHeaders’:
+    vutil.c:860:34: error: ‘%s’ directive output may be truncated writing up to 255 bytes into a region of size 63 [-Werror=format-truncation=]
+          snprintf(name, VMAXPATHLEN, "%s" OS_DIRSEP "%s", partpath, dentry->d_name);
+    
+    Most or all of these truncations should be okay, but increase the size
+    of the relevant buffers so we can build with warning checking turned
+    on.
+    
+    Reviewed-on: https://gerrit.openafs.org/13274
+    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
+    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    (cherry picked from commit 2daa413e3ec061e0653adbd1d6549f15e0659a62)
+    
+    Change-Id: I61ae1ddae4b2d84147198a1dccb280d0da100a0b
+    Reviewed-on: https://gerrit.openafs.org/13459
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
+
+commit 804fefa6b46ed75921a1560a9e6b37842eabc94a
+Author: Cheyenne Wills <cwills@sinenomine.net>
+Date:   Fri Jan 18 17:22:44 2019 -0700
+
+    Linux_5.0: replaced current_kernel_time with ktime_get_coarse_real_ts64
+    
+    In Kernel commit fb7fcc96a86cfaef0f6dcc0665516aa68611e736 the
+    current_kernel_time/current_kernel_time64 functions where renamed
+    and the calling was standardized.
+    
+    According to the Linux Documentation/core-api/timekeeping.rst
+    ktime_get_coarse_real_ts64 is the direct replacement for
+    current_kernel_time64.  Because of year 2038 issues, there is no
+    replacement for current_kernel_time.
+    
+    Updated code that used current_kernel_time to use new name and calling
+    convention.
+    
+    Updated autoconf test that sets IATTR_TAKES_64BIT_TIME as well.
+    
+    Reviewed-on: https://gerrit.openafs.org/13434
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
+    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
+    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
+    (cherry picked from commit 21ad6a0c826c150c4227ece50554101641ab4626)
+    
+    Change-Id: Idb8a2c1b74835601fb1fc699c3ebbcee75c94e3e
+    Reviewed-on: https://gerrit.openafs.org/13442
+    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
+    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
+
+commit e7d8dc01cc1f0592eaecea5b87990097e9e59b88
+Author: Cheyenne Wills <cwills@sinenomine.net>
+Date:   Fri Jan 18 16:53:58 2019 -0700
+
+    Linux_5.0: replace do_gettimeofday with ktime_get_real_ts64
+    
+    In Kernel commit e4b92b108c6cd6b311e4b6e85d6a87a34599a6e3 the
+    do_gettimeofday function was removed.
+    
+    According to the Linux Documentation/core-api/timekeeping.rst
+    ktime_get_real_ts64 is the direct replacement for do_gettimeofday
+    
+    Updated the macro osi_GetTime to use ktime_get_real_ts64 if it is
+    available.
+    
+    Reviewed-on: https://gerrit.openafs.org/13433
+    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    (cherry picked from commit b892fb127815bdf72103ae41ee70aadd87931b0c)
+    
+    Change-Id: I1a0237457e229a11d2a87a3a269cf24adc201e59
+    Reviewed-on: https://gerrit.openafs.org/13441
+    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
+    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
+
+commit 25829aaef319728e30fc45895e8945438e4dc719
+Author: Cheyenne Wills <cwills@sinenomine.net>
+Date:   Thu Jan 17 16:00:37 2019 -0700
+
+    Linux_5.0: Use super_block flags instead of Mount flags when filling sb
+    
+    In Kernel commit e262e32d6bde0f77fb0c95d977482fc872c51996
+    the mount flags (MS_) were moved from uapi/linux/fs.h to
+    uapi/linux/mount.h. This caused a compile failure in
+    src/afs/LINUX/osi_vfsops.c
+    
+    The Linux documentation in uapi/linux/mount.h indicates that the MS_
+    (mount) flags should only be used when calling sys_mount and filesystems
+    should use the SB_ (super_block) equivalent.
+    
+    src/afs/LINUX/osi_vfsops.c utilized the mount flag MS_NOATIME while
+    filling the super_block.  Changed to use SB_NOATIME (which has the same
+    numeric value as MS_NOATIME) if available.
+    
+    Reviewed-on: https://gerrit.openafs.org/13432
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
+    (cherry picked from commit 3969bbca6017eb0ce6e1c3099b135f210403f661)
+    
+    Change-Id: I66f7b758c0258ea2c0d93da030fa97b3db49bd6c
+    Reviewed-on: https://gerrit.openafs.org/13440
+    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
+    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
+
+commit 8ca82f1252db2e3f17f6a9080f56d74035bdaa16
+Author: Andrew Deason <adeason@sinenomine.net>
+Date:   Thu Jan 17 00:12:06 2019 -0600
+
+    afs: Do not ignore errors in afs_CacheFetchProc
+    
+    afs_CacheFetchProc currently has a section of code that looks like
+    this pseudocode:
+    
+        if (!code) do {
+            while (length > 0) {
+                code = read_from_rx();
+                if (code) {
+                    break;
+                }
+                code = write_to_cache();
+                if (code) {
+                    break;
+                }
+            }
+            code = 0;
+        } while (moredata);
+        return code;
+    
+    When we encounter an error when reading from rx or writing to the
+    cache, we break out of the current loop to stop processing and return
+    an error. But there are _two_ loops in this section of the code, so
+    what we actually do is break out of the inner loop, set 'code' to 0,
+    and then usually return (since 'moredata' is usually never set).
+    
+    This means that when we encounter an unexpected error either from the
+    net or disk (or the memcache layer), we ignore the error and return
+    success. This means that we'll store a subset of the relevant chunk's
+    data to disk, and flag that chunk as complete and valid for the
+    relevant DV. If the error occurred before we wrote anything to disk,
+    this means we'll store an empty chunk and flag it as valid. The chunk
+    will be flagged as valid forever, serving invalid data, until the
+    cache chunk is evicted or manually kicked out. This can result in
+    files and directories appearing blank or truncated to applications
+    until the bad chunk is removed.
+    
+    Possibly the most common way to encounter this issue is when using a
+    disk cache, and the underlying disk partition is full, resulting in an
+    unexpected ENOSPC error. Theoretically this can be seen from an
+    unexpected error from Rx, but we would have to see a short read from
+    Rx without the Rx call being aborted. If the call was aborted, we'd
+    get an error from the call to rx_EndCall() later on.
+    
+    To fix this, change all of these 'break's into 'goto done's, to be
+    more explicit about where we are jumping to. Convert all of the
+    'break's in this function in the same way, to make the code flow more
+    consistent and easier to follow. Remove the 'if () do' on a single
+    line, since it makes it a little harder to see from a casual glance
+    that there are two nested loops here.
+    
+    This problem appears to have been introduced in commit 61ae8792 (Unite
+    CacheFetchProcs and add abstraction calls), included in OpenAFS
+    1.5.62.
+    
+    Reviewed-on: https://gerrit.openafs.org/13428
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
+    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
+    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
+    (cherry picked from commit ce327b568f4ff522aa008f235d97e0d9144eb92c)
+    
+    Change-Id: Id4ec8ffef38b4c86beffc6272bd283bce2c74ffe
+    Reviewed-on: https://gerrit.openafs.org/13443
+    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
+    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
+
+commit 97f830605d5f251c58382c3f9febc4d98e949ee8
+Author: Andrew Deason <adeason@sinenomine.net>
+Date:   Mon Jan 14 17:12:27 2019 -0600
+
+    lwp: Avoid freeing 'stackmemory' on AIX32
+    
+    Commit 55013a11 (lwp: Fix possible memory leak from scan-build) added
+    some free() calls to some otherwise-leaked memory. However, one of
+    these calls frees the 'stackmemory' pointer, which on AIX32 is not a
+    pointer from malloc/calloc, but calculated from reserveFromStack().
+    
+    To avoid corrupting the heap, skip this free call on AIX32. This
+    commit adds another #ifdef to avoid this, which is unfortunate, but
+    this is also how the free is avoided in the existing code for
+    Free_PCB().
+    
+    Reviewed-on: https://gerrit.openafs.org/13426
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
+    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
+    (cherry picked from commit f6182922455aa0cbee19d138b0827eb87dc2b7ce)
+    
+    Change-Id: Id32eea373799c0cb43fb01a98210a0800899a1d6
+    Reviewed-on: https://gerrit.openafs.org/13427
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
+    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
+
+commit 4c5daaa26fbe2fd7e24ceba475e60e5e5c765e78
+Author: Pat Riehecky <riehecky@fnal.gov>
+Date:   Wed May 23 15:42:09 2018 -0500
+
+    lwp: Fix possible memory leak from scan-build
+    
+    It is possible for LWP_CreateProcess to return early. When it does, it
+    should free up any memory it allocated before leaving scope.
+    
+    Reviewed-on: https://gerrit.openafs.org/13080
+    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
+    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
+    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
+    (cherry picked from commit 55013a111394052a0253c87a744d03dfabd1be75)
+    
+    Change-Id: I9112d2039c7c58a707231568e2e84e0340407bac
+    Reviewed-on: https://gerrit.openafs.org/13122
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    Tested-by: PatRiehecky <jcpunk@gmail.com>
+    Reviewed-by: Joe Gorse <jhgorse@gmail.com>
+    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
+    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
+    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
+    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
+
+commit 05ceb67a574a8e263ce8f6738e0bf4495284f6fc
+Author: Andrew Deason <adeason@sinenomine.net>
+Date:   Thu Dec 13 12:25:32 2018 -0600
+
+    afs: Reword "cache is full" messages
+    
+    Currently, there are multiple different areas in the code that log a
+    message that look like this, when we encounter an ENOSPC error when
+    writing to the cache:
+    
+        *** Cache partition is FULL - Decrease cachesize!!! ***
+    
+    The message is a bit unclear, and doesn't even mention AFS at all.
+    Reword the message to try to explain a little more what's happening.
+    
+    Also, since we log the same message in several different places, move
+    them all to a common function, called afs_WarnENOSPC, so we only need
+    to change the message in one place.
+    
+    Reviewed-on: https://gerrit.openafs.org/13410
+    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    (cherry picked from commit d9d9571785dabc5c311111b1263fe0881b0ccda5)
+    
+    Change-Id: I8e958f2896f5d4503d3a153b52720e8ba3025261
+    Reviewed-on: https://gerrit.openafs.org/13417
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
+    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
+    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
+    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
+    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
+
+commit 036c01d2f129b7118a77ecd6d89fbc779d91c224
+Author: Andrew Deason <adeason@sinenomine.net>
+Date:   Thu Nov 2 16:41:52 2017 -0500
+
+    rx: Convert rxinit_status to rx_IsRunning()
+    
+    Currently, all rx code examines the atomic rxinit_status to determine
+    if rx is running (that is, if rx_InitHost has been called, and
+    rx_Finalize/shutdown_rx hasn't been called). This is used in rx.c to
+    see if we're redundantly calling our setup/teardown functions, and
+    outside of rx.c in a couple of places to see if rx-related resources
+    have been initialized.
+    
+    The usage of rxinit_status is a little confusing, since setting bit 0
+    indicates that rx is not running, and clearing bit 0 indicates rx is
+    running. Since using rxinit_status requires atomic functions, this
+    makes code checking or setting rxinit_status a little verbose, and it
+    can be hard to see what it is checking for. (For example, does
+    'if (!rx_atomic_test_and_clear_bit(&rxinit_status, 0))' succeed when
+    rx running, or when rx is not running?)
+    
+    The current usage of rxinit_status in rx_InitHost also does not handle
+    initialization errors correctly. rx_InitHost clears rxinit_status near
+    the beginning of the function, but does not set rxinit_status if an
+    error is encountered. This means that any code that checks
+    rxinit_status (such as another rx_InitHost call) will think that rx
+    was initialized successfully, but various resources aren't actually
+    setup. This can cause segfaults and other errors as the code tries to
+    actually use rx.
+    
+    This can easily be seen in bosserver, if bosserver is started up while
+    the local host/port is in use by someone else. bosserver will try to
+    rx_InitHost, which will fail, and then we'll try to rx_InitHost again,
+    which will immediately succeed without doing any init. We then
+    segfault quickly afterwards as we try to use unitialized rx resources.
+    
+    To fix all of this, refactor code using rxinit_status to use a new
+    function, called rx_IsRunning(), to make it a little clearer what
+    we're checking for. We also re-introduce the LOCK_RX_INIT locks to
+    prevent functions like rx_InitHost and rx_Finalize from running in
+    parallel.
+    
+    Note that non-init/shutdown code (such as rx_upcall or rx_GetIFInfo)
+    does not need to wait for LOCK_RX_INIT to check if rx is running or
+    not. These functions only care if rx is currently setup enough to be
+    used, so we can immediately return a 'yes' or 'no' answer. That is, if
+    rx_InitHost is in the middle of running, rx_IsRunning returns 0, since
+    some resouces may not be fully initialized.
+    
+    Reviewed-on: https://gerrit.openafs.org/12761
+    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
+    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    (cherry picked from commit 5ced6025b9f11fadbdf2e092bf40cc87499ed277)
+    
+    Change-Id: I38ef9e3aea8a1f20e9db488a44da4535f76432d1
+    Reviewed-on: https://gerrit.openafs.org/13416
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
+    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
+    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
+    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
+
+commit a125fc5445fb4066a5845ff29b18974a0f7b5929
+Author: Mark Vitale <mvitale@sinenomine.net>
+Date:   Fri Nov 30 12:10:50 2018 -0500
+
+    vos: restore status information to 'vos status'
+    
+    Commit d3eaa39da3693bba708fa2fa951568009e929550 'rx: Make the rx_call
+    structure private' created accessors for several rx_call members.
+    However, it simply #ifdef'd out the packet counters and timestamps
+    reported by 'vos status' (AFSVol_Monitor).  This is a regression for the
+    1.8.x 'vos status' command.
+    
+    Instead, supply an accessor so 'vos status' can again be used to monitor
+    the progress of certain volume operations.
+    
+    FIXES 134856
+    
+    Reviewed-on: https://gerrit.openafs.org/13400
+    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
+    (cherry picked from commit 59d3a8b86da648e3c5b9774183c6c8571a36f0c4)
+    
+    Change-Id: I16c995623c40a708b06f08fb09224be1baa4de21
+    Reviewed-on: https://gerrit.openafs.org/13421
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
+    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
+
+commit 53515f40f3dc980cc2c1afd369207617b88e93d1
+Author: Cheyenne Wills <cwills@sinenomine.net>
+Date:   Wed Nov 28 15:45:20 2018 -0700
+
+    Redhat: correct path to kernel module in dkms.config
+    
+    This fix corrects some annoying error and warning messages during
+    dkms install or uninstall.
+    
+    Install:
+    DKMS: build completed.
+    
+    	openafs:
+    	Running module version sanity check.
+    	ERROR: modinfo: could not open /lib/modules/2.6.32-754.6.3.el6.x
+    	86_64/weak-updates/openafs.ko: No such file or directory
+    	 - Original module
+    	   - No original module exists within this kernel
+    	 - Installation
+    	   - Installing to /lib/modules/2.6.32-754.6.3.el6.x86_64/extra/
+    	Adding any weak-modules
+    	WARNING: Can't read module /lib/modules/2.6.32-754.6.3.el6.x86_6
+    	4/weak-updates/openafs.ko: No such file or directory
+    	egrep: /lib/modules/2.6.32-754.6.3.el6.x86_64//weak-updates/open
+    	afs.ko: No such file or directory
+    
+    Remove
+    	Status: Before uninstall, this module version was ACTIVE on this
+    	kernel.
+    	Removing any linked weak-modules
+    	rmdir: failed to remove `.': Invalid argument
+    	WARNING: Can't read module /lib/modules/2.6.32-754.6.3.el6.x86_6
+    	4/weak-updates/openafs.ko: No such file or directory
+    	egrep: /lib/modules/2.6.32-754.6.3.el6.x86_64//weak-updates/open
+    	afs.ko: No such file or directory
+    
+    	openafs.ko:
+    	 - Uninstallation
+    	   - Deleting from:/lib/modules/2.6.32-754.6.3.el6.x86_64/extra/
+    	 - Original module
+    	   - No original module was found for this module on this kernel
+    	   - Use the dkms install command to reinstall any previous
+    	   module version.
+    
+    Background:
+    
+    Commit 1c96127e37c0ec41c7a30ea3e4aa68f3cc8a24f6 standardized the
+    location where the openafs.ko module is installed (from
+    /kernel/3rdparty to /extra/).  The RPM Spec file was not updated to
+    build the dkms.conf file with the corrected location.
+    
+    From the documentation for dkms
+    
+     DEST_MODULE_LOCATION is ignored on Fedora Core 6 and higher, Red Hat
+     Enterprise Linux 5 and higher, Novell SuSE Linux Enterprise Server 10
+     and higher, Novell SuSE Linux 10.0 and higher, and Ubuntu.  Instead,
+     the proper distribution-specific directory is used.
+    
+    However the DEST_MODULE_LOCATION is still used saving and restoring old
+    copies of the module.
+    
+    The NO_WEAK_MODULES parameter prevents dkms from creating a symlink into
+    weak-updates directory, which can lead to broken symlinks when
+    dkms-openafs is removed.  The weak modules facility was designed to
+    eliminate the need to rebuild kernel modules when kernel upgrades occur
+    and relies on the symbols within the kABI.  Openafs uses symbols that
+    are outside the kABI, and therefor is not a candidate for a weak module.
+    
+    Reviewed-on: https://gerrit.openafs.org/13404
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
+    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
+    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
+    (cherry picked from commit a28f9d28aef18936eb0ea02491ce64c72eeb1fe9)
+    
+    Change-Id: Ia32856c85eb61e2f023e3ae970c945aa529682ce
+    Reviewed-on: https://gerrit.openafs.org/13438
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
+    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
+
+commit bf4d7ed224738b7e04b236e2d515770b6c7f8c40
+Author: Marcio Barbosa <mbarbosa@sinenomine.net>
+Date:   Mon Oct 1 17:44:22 2018 -0400
+
+    auth: check if argument of afsconf_Close* is null
+    
+    Currently, we do not check if the argument of afsconf_Close /
+    afsconf_CloseInternal is equal to null. In order to avoid a possible
+    segmentation fault, add the checks.
+    
+    Reviewed-on: https://gerrit.openafs.org/13352
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
+    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
+    (cherry picked from commit bd58bb85004a18bb6681ff2b0c13a04e23c4d9c4)
+    
+    Change-Id: I6a99b559ab863c8485af9ec17c940b64cf844acf
+    Reviewed-on: https://gerrit.openafs.org/13372
+    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
+    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
+    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
+
+commit 82f9557c43f239c22fe1cb33d970392fdd049e29
+Author: Mark Vitale <mvitale@sinenomine.net>
+Date:   Tue Sep 11 15:59:41 2018 -0400
+
+    budb: SBUDB_FindLatestDump should check result of FillDumpEntry
+    
+    FillDumpEntry may return an error, but FindLatestDump doesn't check its
+    result.  Therefore, SBUDB_FindLatestDump may return invalid results.
+    
+    Instead, check the return code from FillDumpEntry and abort the call if
+    it fails.
+    
+    Reviewed-on: https://gerrit.openafs.org/13312
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
+    (cherry picked from commit 2d8045d67686fbb80696b47b4a60e48e7e74fec9)
+    
+    Change-Id: I47328fc61c492c82ae5e0cce8ca3a292706c7413
+    Reviewed-on: https://gerrit.openafs.org/13329
+    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
+    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
+    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
+
+commit af0636ac6f69a6f82f4fe7ab1895f4559a55c34b
+Author: Jeffrey Altman <jaltman@auristor.com>
+Date:   Wed Jun 6 21:23:14 2018 -0400
+
+    rx: reset packet header userStatus field on reuse
+    
+    OpenAFS Rx fails to set the rx packet header userStatus field for most
+    packets sent other than type RX_PACKET_TYPE_ACK.  If the userStatus
+    field is not set, its value will be random garbage based upon the
+    prior use of the memory allocated to the rx_packet.
+    
+    This change explicitly sets the userStatus field to zero for all
+    DATA and Special packet types.
+    
+    Background
+    ----------
+    
+    OpenAFS Rx allocates a pool of rx_packet structures that are reused
+    for both incoming and outgoing Rx packets throughout the lifetime
+    of the process (or kernel module).
+    
+    The rx packet header field userStatus is set by rxi_Send() to
+    rx_call.localStatus.  rxi_Send() is called from both rxi_SendAck()
+    when sending RX_PACKET_TYPE_ACK packets and from rxi_SendSpecial()
+    when called with a non-NULL call structure (RX_PACKET_TYPE_BUSY,
+    RX_PACKET_TYPE_ACKALL, or RX_PACKET_TYPE_ABORT).  rx_call.localStatus
+    defaults to zero and can be modified by the application calling
+    rx_SetLocalStatus().
+    
+    The userStatus field is neither set nor reset when sending
+    RX_PACKET_TYPE_DATA packets and all packets sent without a call
+    structure.  When allocated packets are reused in these cases, the
+    value of the userStatus leaks from the prior packet use.  The
+    userStatus field is expected to be zero unless intentionally set by
+    the application protocol to another value.
+    
+    The AFS3 suite of rx services uses the rx_header.userStatus field
+    only in the RXAFS service and only as part of the definition
+    for RXAFS_StoreData and RXAFS_StoreData64 RPCs.  The StoreData RPCs
+    use the rx_header.userStatus field as an out-of-band communication
+    mechanism that permits the fileserver to signal to the cache manager
+    when the RXAFS_StoreData[64] has been assigned to an application
+    worker (thread) and the worker has acquired all of the required locks
+    and other resources necessary to complete the RPC.  This signal can be
+    sent before all of the application data has been received.  The cache
+    manager reads the userStatus value via rx_GetRemoteStatus().  When
+    bit-0 of the remote status value equals one and CSafeStore mode is
+    disabled, the cache manager can wakeup any threads blocked waiting for
+    the store operation to complete.
+    
+    Cache managers that perform a workload heavy in RXAFS_StoreData[64] RPCs
+    will end up with an increasing percentage of packets in which the
+    userStatus field is one instead of zero.
+    
+    Fileservers processing a workload heavy in RXAFS_StoreData[64] RPCs
+    will likewise end up with an increasing percentage of packets in which
+    the userStatus field is one instead of zero.
+    
+    Cache managers and Fileservers will therefore send DATA and call free
+    special packets with a non-zero userStatus field to peer services
+    (RXAFS, RXAFSCB, VL, PR).
+    
+    The failure to reset the userStatus field has not been a problem in
+    the past because only the OpenAFS cache manager has ever queried the
+    userStatus via rx_GetRemoteStatus() and only when issuing
+    RXAFS_StoreData[64] RPCs.
+    
+    Failure to correct this flaw interferes with future use of the userStatus
+    field in yet to be registered AFS3 RPCs and existing non-AFS3 services
+    that make use of the userStatus when sending data to a service.
+    
+    FIXES: 134554
+    Reviewed-on: https://gerrit.openafs.org/13165
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
+    
+    (cherry picked from commit c553170bcf3b97ba3745f21040c8e07b128ef983)
+    
+    Change-Id: I4e3c7fea876225ec401988a16b21ed3bb0760ee0
+    Reviewed-on: https://gerrit.openafs.org/13332
+    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
+    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
+    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
+
+commit 6b119a79a0dce1448e21cc14be8aa1db823f6513
+Author: Jeffrey Altman <jaltman@auristor.com>
+Date:   Sat Mar 24 01:22:54 2018 -0400
+
+    volser: DoVolDelete returning VNOVOL is success
+    
+    When moving, copying or releasing volumes, do not treat a failure
+    to delete a volume because the volume no longer exists as an error.
+    The volume clone has flags
+    
+      VTDeleteOnSalvage | VTOutOfService
+    
+    assigned to it which means that the fileserver won't attach the volume
+    and volume has its deleteMe field assigned the value of DESTROY_ME.
+    Such a volume will be deleted the next time the salvager scans the
+    partition.  Once the transaction is complete the volume might be
+    removed.
+    
+    Reviewed-on: https://gerrit.openafs.org/12976
+    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    (cherry picked from commit 328590dc5669cae3db6c509871b612b0384ea33d)
+    
+    Change-Id: Iea98049a3948b75a5e7c13c068add663c9276515
+    Reviewed-on: https://gerrit.openafs.org/13235
+    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
+    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
+    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
+    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+
+commit 6f41efd6c85d4d759bc2fc6d6e787fc8dbe1e1c0
+Author: Marcio Barbosa <mbarbosa@sinenomine.net>
+Date:   Sun Sep 30 17:38:53 2018 -0400
+
+    macos: packaging support for MacOS X 10.14
+    
+    This commit introduces the new set of changes / files required to
+    successfully create the dmg installer on OS X 10.14 "Mojave".
+    
+    Reviewed-on: https://gerrit.openafs.org/13349
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
+    (cherry picked from commit 2aeabf8c5bca22b400653e2bc88b6f36d47b05ca)
+    
+    Change-Id: Ia271ca69d8102a93da50c59e2d92d3c803a13b0e
+    Reviewed-on: https://gerrit.openafs.org/13413
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
+
+commit 170dd4a6a2ac7a08e4c94e82e664dcfd5816bbbf
+Author: Marcio Barbosa <mbarbosa@sinenomine.net>
+Date:   Wed Sep 26 00:18:38 2018 -0300
+
+    macos: add support for MacOS 10.14
+    
+    This commit introduces the new set of changes / files required to
+    successfully build the OpenAFS source code on OS X 10.14 "Mojave".
+    
+    Reviewed-on: https://gerrit.openafs.org/13348
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
+    (cherry picked from commit 72b2670a9e2e3937ed4e47485b9e9fa6953b5444)
+    
+    Change-Id: Ida25278d68d875a630af1d916d2d6add9b6c1f9e
+    Reviewed-on: https://gerrit.openafs.org/13412
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
+
+commit 318330ca51a3ba780471f4c05221be1f8e3897d1
+Author: Mark Vitale <mvitale@sinenomine.net>
+Date:   Fri Aug 17 18:48:08 2018 -0400
+
+    volser: ensure GCTrans transaction walk remains valid
+    
+    Commit bc56f5cc97a982ee29219e6f258b372dbfe1a020 ("volser: Delete
+    timed-out temporary volumes") introduced new logic to GCTrans().
+    Unfortunately, part of this logic temporarily drops VTRANS_LOCK in order
+    to call VPurgeVolume().  While this lock is dropped, other volser_trans
+    may be added or deleted from the allTrans list.  Therefore, GCTrans
+    should not trust the next pointer (nt = tt->next) which was obtained
+    before the lock was dropped.
+    
+    One symptom observed in the field was a segfault while examining
+    tt->volume.  Neither tt nor volume were valid any longer, since tt had
+    been set from a stale nt at the top of the loop.
+    
+    To repair, improve, and clarify this logic:
+    - Refactor so nt is assigned correctly and as late as possible.
+    - Add comments to explain the placement of the assigns to future
+    maintainers.
+    
+    Reviewed-on: https://gerrit.openafs.org/13286
+    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    (cherry picked from commit 930d8ee638112ca8bf27a9528c0a527cfab54c7d)
+    
+    Change-Id: I9ed2c0440b03137cb0e0ef536167be9535c90dbb
+    Reviewed-on: https://gerrit.openafs.org/13337
+    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
+    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
+    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
+
+commit b0920d0a07a2aec55269002960bc71a9a9b99411
+Author: Mark Vitale <mvitale@sinenomine.net>
+Date:   Thu Sep 6 14:09:26 2018 -0400
+
+    volser: combine GCTrans conditional clauses
+    
+    In preparation for a future commit, combine two conditional clauses in
+    GCTrans().
+    
+    No functional change should be incurred by this commit.
+    
+    Reviewed-on: https://gerrit.openafs.org/13303
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
+    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
+    (cherry picked from commit 95b0641ad8cfd0358576c6e1a93266fc59ecf710)
+    
+    Change-Id: If808a00cf935235cdeb20bf73f03ad235f8b2c39
+    Reviewed-on: https://gerrit.openafs.org/13336
+    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
+    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
+    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
+
+commit a19404d0903e1a015b71c8f23d1bb045e080c81d
+Author: Mark Vitale <mvitale@sinenomine.net>
+Date:   Fri Oct 26 09:12:44 2018 -0400
+
+    viced: fix typo in help for option -unsafe-nosalvage
+    
+    Reviewed-on: https://gerrit.openafs.org/13367
+    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
+    (cherry picked from commit 84b3e1c43685862c147603627a020a68650d6e1c)
+    
+    Change-Id: Ie264fbd0064a3e22b1c474cea59040ecb0804b73
+    Reviewed-on: https://gerrit.openafs.org/13411
+    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
+    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
+
+commit 0b1f77b4563a2ea5484a403d6c838ff06aeecdb0
+Author: Mark Vitale <mvitale@sinenomine.net>
+Date:   Thu Nov 15 15:41:24 2018 -0500
+
+    afs: remove dead code afs_osi_SetTime
+    
+    afs_osi_SetTime() has been dead code since -settime support was removed
+    with commit 1d9888be486198868983048eeffabdfef5afa94b 'Remove
+    -settime/RXAFS_GetTime client support'.
+    
+    Remove the dead code.
+    
+    No functional change is incurred by this commit.
+    
+    Reviewed-on: https://gerrit.openafs.org/13393
+    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
+    Tested-by: Benjamin Kaduk <kaduk@mit.edu>
+    (cherry picked from commit 16b981ec6697b511c36c09adfeb8b79eaf2345b0)
+    
+    Change-Id: I3fa92cbe1598703b4eddd78e4c7afdc04c525750
+    Reviewed-on: https://gerrit.openafs.org/13407
+    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
+
+commit 5a77ac9a3a0ce6114b6b4b2ccd9cd8d51154530c
+Author: Mark Vitale <mvitale@sinenomine.net>
+Date:   Thu Nov 15 15:31:37 2018 -0500
+
+    Linux 4.20: do_settimeofday is gone
+    
+    With Linux commit 976516404ff3fab2a8caa8bd6f5efc1437fed0b8 'y2038:
+    remove unused time interfaces', do_settimeofday() is gone.
+    
+    However, OpenAFS only calls do_settimeofday() from afs_osi_SetTime(),
+    which has been dead code since -settime support was removed from afsd
+    with commit 1d9888be486198868983048eeffabdfef5afa94b 'Remove
+    -settime/RXAFS_GetTime client support'.
+    
+    Instead of fixing afs_osi_SetTime() to use a current Linux API, remove
+    it as dead code.
+    
+    No functional change is incurred by this commit.  However, this change
+    is required in order to build OpenAFS on Linux 4.20.
+    
+    Reviewed-on: https://gerrit.openafs.org/13392
+    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
+    Tested-by: Benjamin Kaduk <kaduk@mit.edu>
+    (cherry picked from commit aa80f892ec39e2984818090a6bb2047430836ee2)
+    
+    Change-Id: I7f5ee9c21bc87cd261d87126bc3848d941ff5409
+    Reviewed-on: https://gerrit.openafs.org/13406
+    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
+
+commit 7fb6d488156e673e78b462faf93f2c5b2214fe59
+Author: Mark Vitale <mvitale@sinenomine.net>
+Date:   Tue Nov 13 11:20:09 2018 -0500
+
+    Linux 4.20: current_kernel_time is gone
+    
+    With Linux commit 976516404ff3fab2a8caa8bd6f5efc1437fed0b8 'y2038:
+    remove unused time interfaces' (4.20-rc1), current_kernel_time() has
+    been removed.
+    
+    Many y2038-compliant time APIs were introduced with Linux commit
+    fb7fcc96a86cfaef0f6dcc0665516aa68611e736 'timekeeping: Standardize on
+    ktime_get_*() naming' (4.18).  According to
+    Documentation/core-api/timekeeping.rst, a suitable replacement for:
+    
+      struct timespec current_kernel_time(void)
+    
+    would be:
+    
+      void ktime_get_coarse_real_ts64(struct timespec64 *ts))
+    
+    Add an autoconf test and equivalent logic to deal.
+    
+    Reviewed-on: https://gerrit.openafs.org/13391
+    Tested-by: Mark Vitale <mvitale@sinenomine.net>
+    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
+    (cherry picked from commit 3c454b39d04f4886536267c211171dae30dc0344)
+    
+    Change-Id: I3f00cf4bd3a1ffb7c90e3920113964d74c6df403
+    Reviewed-on: https://gerrit.openafs.org/13405
+    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
+
+commit fc9211be1b242e7026a679a41e5f53f3b4a7e818
+Author: Andrew Deason <adeason@sinenomine.net>
+Date:   Tue Aug 7 17:08:26 2018 -0500
+
+    afs: Return memcache allocation errors
+    
+    During cache initialization, we can fail to allocate our dcache
+    entries for memcache. Currently when this happens, we just log a
+    message and try to disable dcache access. However, this results in at
+    least one code path that causes a panic anyway during startup, since
+    afs_CacheTruncateDaemon will try to trim the cache, and afs_GetDownD
+    will call afs_MemGetDSlot, and we cannot find the given dslot.
+    
+    To avoid this, change our cache initialization to return an error,
+    instead of trying to continue without a functional dcache. This causes
+    afs_dcacheInit to return an error in this case, and by extension
+    afs_CacheInit and the AFSOP_CACHEINIT syscall. Also change afsd to
+    actually detect errors from AFSOP_CACHEINIT, and to bail out when it
+    does.
+    
+    Thanks to gsgatlin@ncsu.edu for reporting the relevant panic.
+    
+    Reviewed-on: https://gerrit.openafs.org/13273
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
+    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
+    (cherry picked from commit 0da5ac4d9fb2a9b46c7415403a3cd26e711554e2)
+    
+    Change-Id: I00b0d3dac1f4d8edc46389fe3c59501fd23c18f8
+    Reviewed-on: https://gerrit.openafs.org/13307
+    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
+    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
+    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
+
+commit eca7ade855e0f9b14d0bb763be2d2d3e925dcd86
+Author: Benjamin Kaduk <kaduk@mit.edu>
+Date:   Wed May 30 19:38:57 2018 -0500
+
+    CellServDB update 14 May 2018
+    
+    Update all three copies in the tree, and the rpm specfile.
+    
+    Reviewed-on: https://gerrit.openafs.org/13134
+    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
+    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    (cherry picked from commit 4a2b5101afda24b2d937e7350ca35b0b3d3c4af8)
+    
+    Change-Id: I47dad888b71c798132f2841375f9ebb2f6b263f7
+    Reviewed-on: https://gerrit.openafs.org/13409
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
+
+commit 39272929fc528a4c6af05e74b98518a3bae18462
+Author: Andrew Deason <adeason@sinenomine.net>
+Date:   Thu May 10 16:22:52 2018 -0500
+
+    ubik: Buffer log writes with stdio
+    
+    Currently, when we write ubik i/o operations to the db log, we tend to
+    issue several syscalls involving small writes and fstat()s. This is
+    because each "log" operation involves at least one write, and each log
+    operation tends to be pretty small.
+    
+    Each logged operation hitting disk separately is unnecessary, since
+    the db log does not need to hit the disk at all until we are ready to
+    commit the transaction. So to reduce the number of syscalls when
+    writing to the db, change our log writes to be buffered in memory
+    (using stdio calls). This also avoids needing to fstat() the
+    underlying log file, since we open the underlying file in append-only
+    mode, since we only ever append to (and truncate) the log file.
+    
+    To implement this, we introduce a new 'buffered_append' phys
+    operation, to explicitly separate our buffered and non-buffered
+    operations, to try to avoid any bugs from mixing buffered and
+    non-buffered i/o. This new operation is only used for the db log.
+    
+    Reviewed-on: https://gerrit.openafs.org/13070
+    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
+    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
+    Reviewed-by: Joe Gorse <jhgorse@gmail.com>
+    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
+    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    (cherry picked from commit 800318b43fdf461ad95cd7f3940718f3f0a609a7)
+    
+    Change-Id: Ia40d75e7bdeb6a9f6c316aaea6fd20d5c8d80625
+    Reviewed-on: https://gerrit.openafs.org/13353
+    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
+    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
+    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
+    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
+
+commit b71f75cad51cf58260d0593635d66dd367a2af1a
+Author: Mark Vitale <mvitale@sinenomine.net>
+Date:   Fri May 4 15:42:14 2018 -0400
+
+    ubik: make ContactQuorum_* routines static
+    
+    Most of the ContactQuorum_* routines are only used in ubik.c, so make
+    them all static - except for ContactQuorum_DISK_SetVersion, which is
+    called from disk.c.
+    
+    Reviewed-on: https://gerrit.openafs.org/13078
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
+    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
+    (cherry picked from commit 27d7b8fe4603c39362983758fe6a749fa5ffa4e5)
+    
+    Change-Id: I70721aef02f5f2e203c1877428c46c49ea1cb7c9
+    Reviewed-on: https://gerrit.openafs.org/13188
+    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
+    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
+    Reviewed-by: Joe Gorse <jhgorse@gmail.com>
+    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
+    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
+    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
+
+commit 88db0996e3287a62e519ef4cc09f0b8516f6a9b9
+Author: Mark Vitale <mvitale@sinenomine.net>
+Date:   Wed May 9 16:50:55 2018 -0400
+
+    ubik: remove unused ContactQuorum_DISK_Write
+    
+    This function is not used; remove it.
+    
+    No functional change is incurred by this commit.
+    
+    Reviewed-on: https://gerrit.openafs.org/13077
+    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
+    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
+    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
+    (cherry picked from commit 8b1e730c11a6ed7dc067ef185302bd57a69f6d1e)
+    
+    Change-Id: I548e2442684a26ab017afebb1c42bdef9bd7c7bf
+    Reviewed-on: https://gerrit.openafs.org/13187
+    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
+    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
+    Reviewed-by: Joe Gorse <jhgorse@gmail.com>
+    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
+    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
+    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
+
+commit 10157d82c3e8f7cbdec768d92119ed5be126b844
+Author: Michael Meffie <mmeffie@sinenomine.net>
+Date:   Thu Jun 14 15:01:18 2018 -0400
+
+    ubik: do not assign variables in logging argument lists
+    
+    Several logging statements in ubik contain an assignment statement
+    within the logging function call argument list, which would set a
+    variable as side effect of evaluating the function call arguments.
+    
+    These embedded assignments are problematic since the logging function
+    calls have been replaced by ViceLog macros, which avoid the overhead of
+    a function call depending on logging levels.
+    
+    Remove the embedded assignments within the logging argument lists so the
+    variables are always set regardless of the logging level.
+    
+    Reviewed-on: https://gerrit.openafs.org/13211
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    Reviewed-by: Joe Gorse <jhgorse@gmail.com>
+    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
+    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
+    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
+    (cherry picked from commit 472d6b1ee2f7de415e0fa0f8be0636f86956b6fc)
+    
+    Change-Id: I230f71022a58445c99adc67ae1b888caa4ce260e
+    Reviewed-on: https://gerrit.openafs.org/13218
+    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
+    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
+    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
+    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
+    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
+
+commit b9603bfb27c3c1d5ae90ed68545a4dd9fe9da862
+Author: Mark Vitale <mvitale@sinenomine.net>
+Date:   Mon May 8 17:50:00 2017 -0400
+
+    ubik: disambiguate "Synchonize database with server" msgs
+    
+    Ubik issues the same message in two very different cases:
+    - sync server issues DISK_GetFile to obtain the latest version
+    - non-sync server receives DISK_SendFile from the sync server
+    
+    Modify the messages so they provide more information and are
+    distinguishable from each other.
+    
+    Reviewed-on: https://gerrit.openafs.org/12615
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
+    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
+    (cherry picked from commit b9fe4d4290ad19faf3b5fb5dc0c3b1ee3ee5ab69)
+    
+    Change-Id: I806c2ce5ada097b07022d8c4da81f613a3f9989c
+    Reviewed-on: https://gerrit.openafs.org/13186
+    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
+    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
+    Reviewed-by: Joe Gorse <jhgorse@gmail.com>
+    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
+    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
+    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
+
+commit 354fef1f0af9272cd5bf1e8a6466a3b727dcc08d
+Author: Michael Meffie <mmeffie@sinenomine.net>
+Date:   Mon Apr 25 11:06:11 2016 -0400
+
+    ubik: convert ubik_print to ViceLog
+    
+    Use the server logging macros instead of the utility functions to avoid
+    function call overhead, especially at logging level 25.  The server
+    logging macros perform a logging level check in-line to avoid the
+    unnecessary ubik_dprint* calls.
+    
+    Reviewed-on: https://gerrit.openafs.org/12619
+    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
+    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
+    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
+    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
+    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    (cherry picked from commit 343234d221ae8388f55748f5c494a42d5d69bfa0)
+    
+    Change-Id: Icdb60f75a0c6c6efc7793d545f0565c0cd587eae
+    Reviewed-on: https://gerrit.openafs.org/13153
+    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
+    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
+    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
+    Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
+    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
+
+commit 3143627f9b7f91743a85cd8fd8f00f913a31f17c
+Author: Mark Vitale <mvitale@sinenomine.net>
+Date:   Tue Sep 11 16:29:59 2018 -0400
+
+    butc: repair build error
+    
+    Commit c43169fd36348783b1a5a55c5bb05317e86eef82 introduced a build error
+    by invoking TLog with an extraneous set of internal parentheses.
+    
+    Remove the offending parentheses.
+    
+    Reviewed-on: https://gerrit.openafs.org/13311
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
+    (cherry picked from commit 91bab84e7a3b7de2591c475ba4912b0db8899f05)
+    
+    Change-Id: I06df561daf37330e6fdd9c9d41b55daa4d6b3886
+    Reviewed-on: https://gerrit.openafs.org/13328
+    Tested-by: BuildBot <buildbot@rampaginggeek.com>
+    Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
+    Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
+    Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
+    Reviewed-by: Andrew Deason <adeason@sinenomine.net>
+    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
diff --git a/README.SUSE.openafs b/README.SUSE.openafs
new file mode 100644
index 0000000..806e061
--- /dev/null
+++ b/README.SUSE.openafs
@@ -0,0 +1,109 @@
+Here is described installation of openafs server and client on SUSE linux.
+
+This text is based on AFS Quick Start Guide. The differences are:
+  - paths are adapted to SUSE installation
+  - uses Kerberos 5 authentization
+
+Complete OpenAFS documentation is at http://openafs.org
+
+SERVER SETUP
+============
+
+# choose an AFS cell name and a Kerberos realm name, the simplest setup is:
+# - AFS cell name equal to DNS domain name
+# - Kerberos realm name equal to uppercase AFS cell name 
+
+# create a partition for AFS filesystem and mount it under /vicepa
+
+# start bosserver
+/usr/sbin/bosserver -noauth &
+
+# setup basic cell information
+bos setcellname your.afs.server your.cell.name -noauth 
+
+# setup database servers processes
+bos create your.afs.server ptserver simple /usr/lib/openafs/ptserver -cell your.cell.name -noauth
+bos create your.afs.server buserver simple /usr/lib/openafs/buserver -cell your.cell.name -noauth
+bos create your.afs.server vlserver simple /usr/lib/openafs/vlserver -cell your.cell.name -noauth
+
+# If you want to use the old afs authentization (not recommended):
+# bos addkey your.afs.server -kvno 0 -cell your.cell.name -noauth
+
+# Authentication against heimdal krb5 server
+
+# Here you can set up kerberos realm if you dont have any, 
+# see documentation in package krb5-doc
+
+# restart kdc
+rckrb5kdc restart
+rckrb524d restart
+
+# create afs principal in kerberos database
+kadmin.local
+  add_principal afs@YOUR.KERBEROS.REALM     # create afs key, use random password
+  ktremove -k /etc/krb5.keytab afs all      # delete old afs key if any
+  
+  # export the afs key to external keytab
+  # note the key version number (kvno), you will need it later for asetkey
+  ktadd -e des-cbc-crc:v4 afs@YOUR.KERBEROS.REALM 
+  
+  add_principal admin@YOUR.KERBEROS.REALM   # create admin principal
+  
+  quit # end kadmin.local
+  
+rm /etc/openafs/server/KeyFile # delete the old afs key file if any
+
+# convert the afs key from /etc/krb5.keytab to /etc/openafs/server/KeyFile
+# use <kvno> displayed by ktadd
+asetkey add <kvno> /etc/krb5.keytab afs
+
+# give admin the permissions to control bosserver
+bos adduser your.afs.server admin -cell your.cell.name -noauth
+
+# add admin to group system:administrators
+pts createuser -name admin -id <user id> -cell your.cell.name -noauth
+pts adduser admin system:administrators -cell your.cell.name -noauth
+
+# restart bos server
+bos restart your.afs.server -all -cell your.cell.name -noauth
+
+# create fileserver processes
+bos create your.afs.server fs fs /usr/lib/openafs/fileserver /usr/lib/openafs/volserver /usr/lib/openafs/salvager -cell your.cell.name -noauth
+
+# create root volume
+vos create your.afs.server /vicepa root.afs -cell your.cell.name -noauth
+
+# restart bosserver with security enabled
+rcopenafs-fileserver restart
+
+
+CLIENT SETUP
+============
+
+IMPORTANT: Unfortunately, openafs client for linux kernel 2.6 has not reached 
+stable state yet. There may be problems.
+
+edit /etc/sysconfig/openafs-client, set at least
+  REGENERATE_CELL_INFO="yes"
+  THIS_CELL="your.cell.name"
+  THIS_CELL_SERVER="your.afs.server"
+
+  If you are configuring first afs server and the volume root.cell does not
+  exist yet, you have to set also DYNROOT=no. After finishing the server 
+  installaton it is better to change DYNROOT back to 'yes' as the client
+  behaves better on startup with network outage.
+
+# start afs client
+rcopenafs-client start
+
+# login as admin
+kinit admin
+aklog -d # convert Kerberos 5 ticket to AFS token
+
+To enable transparent login via pam, install package pam_krb5
+and add 'call_modules=krb5afs' to /etc/security/pam_unix2.conf
+For details look at pam_krb5afs(5), pam_krb5afs(8) and pam_unix2(8) manpages.
+
+Now you have working afs server and client. You can continue with chapter
+"Configuring the Top Levels of the AFS Filespace" of AFS Quick Start Guide.
+
diff --git a/RELNOTES-1.8.3 b/RELNOTES-1.8.3
new file mode 100644
index 0000000..a5c230f
--- /dev/null
+++ b/RELNOTES-1.8.3
@@ -0,0 +1,59 @@
+                       User-Visible OpenAFS Changes
+
+OpenAFS 1.8.3
+
+  All platforms
+
+    * Improved diagnostics and error messages (13186 13411 13417)
+
+    * Avoid sending RX packets with random garbage in the userStatus field
+      (13332)
+
+    * Fixed detection of the RX initialization status (13416)
+
+    * Assorted fixes to avoid segmentation faults and other potential problems
+      by detecting internal errors rather than letting them go unnoticed
+      (13329 13372)
+
+  All server platforms
+
+    * Fixed a build problem accidentally introduced in release 1.8.2 (13328)
+
+    * Assorted efficiency improvements in the ubik implementation (13153 13218
+      13188 13353)
+
+    * Fixed locking around transaction list processing in volserver to avoid
+      segmentation faults and other potential problems (13336 13337)
+
+    * When the volserver attempts to remove a temporary volume after a
+      transaction, but the volume was already removed, e.g., by the salvager,
+      this is no longer treated as an error (13235)
+
+  All client platforms
+
+    * Update the CellServDB to the latest version from grand.central.org from
+      May 14th 2018 (13409)
+
+    * Avoid a panic during cache initialization when allocating the required
+      memory fails (13307)
+
+    * Add back the packet counters and timestamps to "vos status" output
+      which had been missing since release 1.8.0 (13421)
+
+    * Correctly handle errors encountered while reading data from the server
+      and writing it to the cache, e.g., due to a full cache partition (13443)
+
+    * Avoid a panic due to a recoverable error while flushing cache items
+      (13503)
+
+  Linux clients
+
+    * Support mainline kernels 4.20 and 5.0 and distribution kernels with
+      backports from those (13405 13406 13440 13441 13442)
+
+    * DKMS-related fixes in Red Hat packaging (13438 13479)
+
+  macOS
+
+    * Support building and packaging on macOS 10.14 "Mojave" (13412 13413)
+
diff --git a/add_arch_to_linux_kernel_make.patch b/add_arch_to_linux_kernel_make.patch
new file mode 100644
index 0000000..e9fd03a
--- /dev/null
+++ b/add_arch_to_linux_kernel_make.patch
@@ -0,0 +1,11 @@
+--- openafs-1.8.0//src/libafs/MakefileProto.LINUX.in.orig	2018-06-27 07:57:10.916249040 +0200
++++ openafs-1.8.0//src/libafs/MakefileProto.LINUX.in	2018-06-27 07:57:56.492849436 +0200
+@@ -320,7 +320,7 @@
+ ${LINUX_LIBAFS_NAME}.ko afspag.ko: .FORCE
+ 	env EXTRA_CFLAGS="${EXTRA_CFLAGS}" @TOP_SRCDIR@/libafs/make_kbuild_makefile.pl ${KDIR} $@ @TOP_OBJDIR@/src/config/Makefile.config Makefile.afs Makefile.common
+ 	( env EXTRA_CFLAGS="${EXTRA_CFLAGS}" \
+-		$(MAKE) -C ${LINUX_KERNEL_BUILD} M=@TOP_OBJDIR@/src/libafs/${KDIR} modules 2>&1 \
++		$(MAKE) -C ${LINUX_KERNEL_BUILD} ${LINUX_MAKE_ARCH} M=@TOP_OBJDIR@/src/libafs/${KDIR} modules 2>&1 \
+ 		|| echo "FAILURE: make exit code $$?" ) | tee .makelog
+ 	@if grep -E -q '^(FAILURE|WARNING)' .makelog; then \
+ 		grep -q '^WARNING' .makelog && echo "Error: Undefined symbols in modules" ; \
diff --git a/dir_layout.patch b/dir_layout.patch
new file mode 100644
index 0000000..3896588
--- /dev/null
+++ b/dir_layout.patch
@@ -0,0 +1,17 @@
+--- openafs-1.8.3/src/cf/dirpaths.m4.orig	2019-04-30 13:38:33.411870333 +0200
++++ openafs-1.8.3/src/cf/dirpaths.m4	2019-04-30 13:48:06.182604169 +0200
+@@ -20,10 +20,10 @@
+     afssrvbindir=${afssrvbindir='${bindir}'}
+     afssrvsbindir=${afssrvsbindir='${sbindir}'}
+     afssrvlibexecdir=${afssrvlibexecdir='${libexecdir}/openafs'}
+-    afsdbdir=${afsdbdir='${localstatedir}/openafs/db'}
+-    afslogsdir=${afslogsdir='${localstatedir}/openafs/logs'}
+-    afslocaldir=${afslocaldir='${localstatedir}/openafs'}
+-    afsbackupdir=${afsbackupdir='${localstatedir}/openafs/backup'}
++    afsdbdir=${afsdbdir='/var/lib/openafs/db'}
++    afslogsdir=${afslogsdir='/var/log/openafs'}
++    afslocaldir=${afslocaldir='/var/lib/openafs'}
++    afsbackupdir=${afsbackupdir='/var/lib/openafs/backup'}
+     afsbosconfigdir=${afsbosconfigdir='${sysconfdir}/openafs'}
+     afsdatadir=${afsdatadir='${datadir}/openafs'}
+ fi
diff --git a/kernel-source.build-modules.sh b/kernel-source.build-modules.sh
new file mode 100644
index 0000000..aefea60
--- /dev/null
+++ b/kernel-source.build-modules.sh
@@ -0,0 +1,55 @@
+#!/bin/sh
+
+if [ $# != 1 ]; then
+    echo building a openafs-kernel module for the running kernel
+    echo Need one of: build build_debug install 
+    exit 1
+fi
+
+LOGFILE=libafs_tree/build.log
+kernel_flavour=`uname -r | awk -F- '{print $NF}'` 
+kernel_version=`uname -r | sed "s/-$kernel_flavour//"`
+arch=`uname -m`
+
+suse_flavour=`cat /etc/SuSE-release | head -1 | awk '{print $1}' ` 
+suse_version=`cat /etc/SuSE-release | grep VERSION | awk '{print $NF}' ` 
+
+echo This SuSE is version \"$suse_version\" of flavour \"$suse_flavour\"
+echo you are running the kernel \"$kernel_version\" of flavour \"$kernel_flavour\" on \"$arch\"
+echo all output is saved into $LOGFILE
+
+if [ $1 == "build_debug" ]; then
+   DEBUG_OPT="--enable-debug-kernel"
+fi
+
+if [ $1 == "build" -o $1 == "build_debug" ]; then
+   cd libafs_tree
+   echo calling configure...
+   ./configure --with-linux-kernel-headers=/usr/src/linux/ --with-linux-kernel-build=/usr/src/linux-obj/$arch/$kernel_flavour $DEBUG_OPT > build.log 2>&1 
+   if [ $? != 0 ]; then 
+       echo configure failed! See $LOGFILE for details
+       exit $?
+   fi
+   echo calling make
+   make >> build.log 2>&1 
+   if [ $? != 0 ]; then 
+       echo make failed! See $LOGFILE for details
+       exit $?
+   fi
+   echo
+   echo build sucessfull!
+   echo Now run $0 install to install the kernel-modules
+   exit 0
+fi
+
+
+if [ $1 == "install" ]; then
+   module_files="afspag.ko libafs.ko"
+   build_dir=libafs_tree/src/libafs/MODLOAD-$kernel_version-$kernel_flavour-MP/
+   install_dir=/lib/modules/$kernel_version-$kernel_flavour
+   echo installing kernel-modules into 
+   for mod in $module_files; do
+      cp -v $build_dir/$mod $install_dir/$mod 
+   done
+   /sbin/depmod -a
+fi
diff --git a/ld.conf.openafs b/ld.conf.openafs
new file mode 100644
index 0000000..c03158b
--- /dev/null
+++ b/ld.conf.openafs
@@ -0,0 +1 @@
+/usr/lib64/openafs
diff --git a/logrotate.openafs-server b/logrotate.openafs-server
new file mode 100644
index 0000000..55f0523
--- /dev/null
+++ b/logrotate.openafs-server
@@ -0,0 +1,11 @@
+/var/log/openafs/*Log {
+    daily
+    compress
+    dateext
+    rotate 7
+    olddir /var/log/openafs/old
+    missingok
+    notifempty
+    create 640 root root
+    copytruncate
+}
diff --git a/openafs-1.8.3-doc.tar.bz2.md5 b/openafs-1.8.3-doc.tar.bz2.md5
new file mode 100644
index 0000000..4be2b26
--- /dev/null
+++ b/openafs-1.8.3-doc.tar.bz2.md5
@@ -0,0 +1 @@
+a10f9d79400352cdec886308c1936b52  openafs-1.8.3-doc.tar.bz2
diff --git a/openafs-1.8.3-doc.tar.bz2.sha256 b/openafs-1.8.3-doc.tar.bz2.sha256
new file mode 100644
index 0000000..79daeb1
--- /dev/null
+++ b/openafs-1.8.3-doc.tar.bz2.sha256
@@ -0,0 +1 @@
+58da20546b5ad6ab8aebf3e701f13e61910a1a95f275bef762c319172c6c5593  openafs-1.8.3-doc.tar.bz2
diff --git a/openafs-1.8.3-src.tar.bz2.md5 b/openafs-1.8.3-src.tar.bz2.md5
new file mode 100644
index 0000000..b51f80d
--- /dev/null
+++ b/openafs-1.8.3-src.tar.bz2.md5
@@ -0,0 +1 @@
+1ede289bbfacf71dab09b20978b7e11a  openafs-1.8.3-src.tar.bz2
diff --git a/openafs-1.8.3-src.tar.bz2.sha256 b/openafs-1.8.3-src.tar.bz2.sha256
new file mode 100644
index 0000000..10878c5
--- /dev/null
+++ b/openafs-1.8.3-src.tar.bz2.sha256
@@ -0,0 +1 @@
+ead9c16c50404b98b06e1d22fb6359880bfc6e93a6108a12e5e4e1c73b64cea5  openafs-1.8.3-src.tar.bz2
diff --git a/openafs-1.8.x.ncurses6.patch b/openafs-1.8.x.ncurses6.patch
new file mode 100644
index 0000000..7c86855
--- /dev/null
+++ b/openafs-1.8.x.ncurses6.patch
@@ -0,0 +1,13 @@
+--- a/src/cf/curses.m4.orig	2018-01-07 08:17:41.815732371 +0100
++++ b/src/cf/curses.m4	2018-01-07 08:23:50.585670554 +0100
+@@ -19,7 +19,9 @@
+     AC_CHECK_LIB([ncurses], [initscr],
+ 		 [AC_CHECK_LIB([ncurses], [LINES], [openafs_cv_curses_lib=-lncurses],
+ 			       [AC_CHECK_LIB([tinfo], [LINES],
+-					     [openafs_cv_curses_lib="-lncurses -ltinfo"])])])
++					     [openafs_cv_curses_lib="-lncurses -ltinfo"],  
++		                             [AC_CHECK_LIB([ncurses], [_nc_LINES], [openafs_cv_curses_lib=-lncurses], 
++                                                          [AC_CHECK_LIB([tinfo], [_nc_LINES], [openafs_cv_curses_lib="-lncurses -ltinfo"])])])])])
+     AS_IF([test "x$openafs_cv_curses_lib" = x],
+ 	  [AC_CHECK_LIB([Hcurses], [initscr], [openafs_cv_curses_lib=-lHcurses])])
+     AS_IF([test "x$openafs_cv_curses_lib" = x],
diff --git a/openafs-client.service b/openafs-client.service
new file mode 100644
index 0000000..7ae040b
--- /dev/null
+++ b/openafs-client.service
@@ -0,0 +1,21 @@
+[Unit]
+Description=OpenAFS Client
+Wants=network-online.target
+After=syslog.target network-online.target
+Before=remote-fs.target
+
+[Service]
+Type=forking
+RemainAfterExit=true
+EnvironmentFile=/etc/sysconfig/openafs-client
+ExecStartPre=/sbin/modprobe libafs
+ExecStart=/usr/sbin/afsd $AFSD_ARGS
+ExecStartPost=/usr/bin/fs sysname $SYSNAME
+ExecStartPost=/usr/bin/fs setcrypt $CRYPT
+ExecStop=/usr/bin/umount /afs
+ExecStop=/usr/sbin/afsd -shutdown
+ExecStop=/sbin/rmmod libafs
+KillMode=none
+
+[Install]
+WantedBy=multi-user.target remote-fs.target
diff --git a/openafs-fuse-client.service b/openafs-fuse-client.service
new file mode 100644
index 0000000..043a106
--- /dev/null
+++ b/openafs-fuse-client.service
@@ -0,0 +1,19 @@
+[Unit]
+Description=OpenAFS Client Service
+Wants=network-online.target
+After=syslog.target network-online.target
+Before=remote-fs.target
+
+[Service]
+Type=forking
+RemainAfterExit=true
+EnvironmentFile=/etc/sysconfig/openafs-fuse-client
+ExecStart=/usr/sbin/afsd.fuse $AFSD_ARGS
+ExecStartPost=/usr/bin/fs sysname $SYSNAME
+ExecStartPost=/usr/bin/fs setcrypt $CRYPT
+ExecStop=/usr/bin/umount /afs
+ExecStop=/usr/sbin/afsd.fuse -shutdown
+KillMode=none
+
+[Install]
+WantedBy=multi-user.target remote-fs.target
diff --git a/openafs-server.service b/openafs-server.service
new file mode 100644
index 0000000..3bca87e
--- /dev/null
+++ b/openafs-server.service
@@ -0,0 +1,11 @@
+[Unit]
+Description=OpenAFS Server
+After=syslog.target network.target
+
+[Service]
+EnvironmentFile=-/etc/sysconfig/openafs-server
+ExecStart=/usr/sbin/bosserver -nofork $BOSSERVER_ARGS
+ExecStop=/usr/sbin/bos shutdown localhost -wait -localauth
+
+[Install]
+WantedBy=multi-user.target
diff --git a/openafs.CellAlias b/openafs.CellAlias
new file mode 100644
index 0000000..5e63ab6
--- /dev/null
+++ b/openafs.CellAlias
@@ -0,0 +1 @@
+openafs.org openafs
diff --git a/openafs.SuidCells b/openafs.SuidCells
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/openafs.SuidCells
diff --git a/openafs.ThisCell b/openafs.ThisCell
new file mode 100644
index 0000000..83ef971
--- /dev/null
+++ b/openafs.ThisCell
@@ -0,0 +1 @@
+openafs.org
diff --git a/openafs.cacheinfo b/openafs.cacheinfo
new file mode 100644
index 0000000..b2dc131
--- /dev/null
+++ b/openafs.cacheinfo
@@ -0,0 +1 @@
+/afs:/var/cache/openafs:102400
diff --git a/openafs.changes b/openafs.changes
new file mode 100644
index 0000000..522d40f
--- /dev/null
+++ b/openafs.changes
@@ -0,0 +1,580 @@
+-------------------------------------------------------------------
+Sun Jul 28 18:34:40 UTC 2019 - Christof Hanke <christof.hanke@mpcdf.mpg.de>
+
+- disable compilation with LTO, does not work yet. 
+
+-------------------------------------------------------------------
+Tue Apr 30 10:17:44 UTC 2019 - Christof Hanke <christof.hanke@mpcdf.mpg.de>
+
+- update to 1.8.3
+- Require krb5-client for package openafs-client 
+- fix broken directory layout
+- fix broken post-install script
+- allow crypt to be set/unset on startup of client
+- clean up source-filenames
+
+-------------------------------------------------------------------
+Mon Mar 25 11:32:32 UTC 2019 - Jan Engelhardt <jengelh@inai.de>
+
+- Use source URLs.
+
+-------------------------------------------------------------------
+Thu Mar 14 08:37:04 UTC 2019 - Christof Hanke <christof.hanke@mpcdf.mpg.de>
+
+- update to pre-release 1.8.3pre1
+  * fix builds for Linux-kernels 4.20 and 5.0 
+  * other fixes, see RELNOTES-1.8.3pre1
+  * remove obsolete Linux-4.20.patch
+
+-------------------------------------------------------------------
+Wed Jan 16 11:28:27 UTC 2019 - christof.hanke@mpcdf.mpg.de
+
+- Fix build for Lunux-4.20: Linux-4.20.patch
+- use proper log-directory: dir_layout.patch
+
+-------------------------------------------------------------------
+Fri Sep 28 12:47:02 UTC 2018 - Guillaume GARDET <guillaume.gardet@opensuse.org>
+
+- Fix build for aarch64
+
+-------------------------------------------------------------------
+Wed Sep 12 12:37:15 UTC 2018 - Jan Engelhardt <jengelh@inai.de>
+
+- Quote "*.c", and avoid unnecessary pass through xargs.
+
+-------------------------------------------------------------------
+Wed Sep 12 10:41:43 UTC 2018 - christof.hanke@mpcdf.mpg.de
+
+- update to security-release 1.8.2
+  * fix CVE-2018-16947 (OPENAFS-SA-2018-001)
+  * fix CVE-2018-16948 (OPENAFS-SA-2018-002)
+  * fix CVE-2018-16949 (OPENAFS-SA-2018-003)
+
+-------------------------------------------------------------------
+Wed Sep 12 05:46:01 UTC 2018 - christof.hanke@mpcdf.mpg.de
+
+- add retpoline support
+
+-------------------------------------------------------------------
+Sun Sep  9 08:14:26 UTC 2018 - christof.hanke@mpcdf.mpg.de
+
+- update to version 1.8.1.1
+- Remove use_timespec64_for_kernel_4.18.patch. It is now integrated. 
+
+-------------------------------------------------------------------
+Thu Aug 16 14:02:44 UTC 2018 - christof.hanke@mpcdf.mpg.de
+
+- Fix 32Bit build by adding 
+  commit 554176bd236d772d670df9bdd2496facd5a4209a as
+  use_timespec64_for_kernel_4.18.patch
+
+-------------------------------------------------------------------
+Thu Aug 16 07:53:42 UTC 2018 - christof.hanke@mpcdf.mpg.de
+
+- Update to 1.8.1 
+- Remove backporting patches for AArch64 build:
+  * add_support_fo_arm64_linux26.patch
+  * dont_require_AFS_SYSCALL.patch
+  * add_AFS_STRINGIZE_macro.patch
+  * avoid_double_param_in_arm64_kernel.patch
+
+-------------------------------------------------------------------
+Wed Jun 27 19:09:41 UTC 2018 - christof.hanke@mpcdf.mpg.de
+
+- adjust building of KMP to new kernels (see boo 1098050)
+  add patch add_arch_to_linux_kernel_make.patch for this
+- add libtirpc-devel to BuildRequires:
+- minor cleanups 
+
+-------------------------------------------------------------------
+Fri May  4 07:29:15 UTC 2018 - guillaume.gardet@opensuse.org
+
+- Update to 1.8.0
+- Fix AArch64 build by updating spec and backporting patches:
+  * add_support_fo_arm64_linux26.patch
+  * dont_require_AFS_SYSCALL.patch
+  * add_AFS_STRINGIZE_macro.patch
+  * avoid_double_param_in_arm64_kernel.patch
+
+-------------------------------------------------------------------
+Thu Apr 19 16:53:21 UTC 2018 - christof.hanke@mpcdf.mpg.de
+
+- remove package krb5-mit. It contained binaries for server and client.
+  Besides, client and server already had an implicit dependency on krb5.
+  Put the binaries to client and server-package respectively.
+- Remove openafs-1.8.x.heimdal.patch and everything heimdal-related.
+  SUSE does not provide a proper heimdal and it's untested for a long
+  time.
+
+-------------------------------------------------------------------
+Mon Apr 16 15:35:15 UTC 2018 - christof.hanke@mpcdf.mpg.de
+
+- fdupes: use symlinks instead of hardlinks. Do not fdupe
+  /etc and /var
+
+-------------------------------------------------------------------
+Fri Apr  6 10:53:13 UTC 2018 - christof.hanke@mpcdf.mpg.de
+
+- fix dependencies between packages, so that fuse-client
+  can be installed.
+- cleanup old sys-v sysconfig files and other minor fixes
+- fix unit file for fuse-client
+
+-------------------------------------------------------------------
+Mon Apr  2 20:59:53 UTC 2018 - christof.hanke@mpcdf.mpg.de
+
+- build fuse-client unconditionally.
+- do not build KMP on unsupported architectures so that overall
+  build succeeds. 
+
+Wed Mar 28 05:39:53 UTC 2018 - christof.hanke@mpcdf.mpg.de
+
+- rename binary backup to afs_backup.
+  - rename man pages and prefix "backup" in content
+- prefix "scout" by "afs_" in man-page     
+- remove unnecessary macro indirection %ARCH
+- replace hard-coded paths by macros 
+- make whitespace more consistent
+- minor syntax and typo fixes
+
+-------------------------------------------------------------------
+Sun Mar 18 23:34:56 UTC 2018 - jengelh@inai.de
+
+- Replace old $RPM_* vars (most of them) by macros.
+- Replace unnecessary macro indirections like %bindir by %_bindir.
+
+-------------------------------------------------------------------
+Thu Mar 15 08:28:10 UTC 2018 - christof.hanke@mpcdf.mpg.de
+
+- cleanup last cleanup: also remove rc.* files
+
+-------------------------------------------------------------------
+Tue Mar  6 10:03:44 UTC 2018 - christof.hanke@mpcdf.mpg.de
+
+- cleanup package for Factory:
+   - rename package to openafs.
+   - remove sys-v init stuff.
+   - apply recommendations given in Request 581009
+
+-------------------------------------------------------------------
+Wed Feb 28 09:25:52 UTC 2018 - christof.hanke@mpcdf.mpg.de
+
+- add compat macro for new _fillupdir macro introduced in Nov 2017
+
+-------------------------------------------------------------------
+Wed Feb 28 08:30:33 UTC 2018 - christof.hanke@mpcdf.mpg.de
+
+- update to 1.8.0pre5 
+
+-------------------------------------------------------------------
+Sun Jan  7 08:31:00 UTC 2018 - christof.hanke@mpcdf.mpg.de
+
+- update to 1.8.0pre4
+- add patch for ncurses detection 
+
+-------------------------------------------------------------------
+Thu Dec  7 11:07:30 UTC 2017 - christof.hanke@mpcdf.mpg.de
+
+- update to 1.8.0pre3
+- add integrity check of tar-balls 
+
+-------------------------------------------------------------------
+Fri Sep  1 20:07:48 UTC 2017 - christof.hanke@mpcdf.mpg.de
+
+- do not strip binaries on install
+- fix %postun server 
+
+-------------------------------------------------------------------
+Fri Sep  1 11:51:03 UTC 2017 - christof.hanke@mpcdf.mpg.de
+
+- update to 1.8.0pre2
+- use a preamble-file for KMP
+- sort/cleanup/beautify spec-file 
+
+-------------------------------------------------------------------
+Fri Sep  1 07:05:21 UTC 2017 - christof.hanke@mpcdf.mpg.de
+
+- spec-file: 
+  + use hardlinks for fdupes to provide correct header files in
+             kernel-source
+  + minor bugfixes, reorganization 
+- rename changes file to openafs18.changes
+
+-------------------------------------------------------------------
+Thu Feb  9 14:41:57 UTC 2017 - christof.hanke@mpcdf.mpg.de
+
+- rename package to openafs18-* so they don't override 
+  stable openafs-1.6 ones
+- move ld.so to main package -- was in server-packages 
+
+-------------------------------------------------------------------
+Tue Feb  7 11:23:22 UTC 2017 - christof.hanke@mpcdf.mpg.de
+
+- enable building of KMP
+- make openafs-krb5-mit package dependend on openafs-client package
+- add ld.so - config to main package 
+
+-------------------------------------------------------------------
+Fri Jan 27 21:15:12 UTC 2017 - christof.hanke@rzg.mpg.de
+
+- remove pam, is not build on x86_64 and i596 
+
+-------------------------------------------------------------------
+Mon Dec 26 18:59:09 UTC 2016 - christof.hanke@rzg.mpg.de
+
+- first version of 1.8
+- remove docs package, put man pages in induvidual packets  
+- remove layout-patch, deal with this in spec file directly
+
+-------------------------------------------------------------------
+Sat Dec  3 14:56:56 UTC 2016 - christof.hanke@rzg.mpg.de
+
+- add new ChangeLog 
+
+-------------------------------------------------------------------
+Thu Dec  1 04:35:39 UTC 2016 - christof.hanke@rzg.mpg.de
+
+- update to version 1.6.20 
+
+-------------------------------------------------------------------
+Wed Nov 16 09:21:52 UTC 2016 - christof.hanke@rzg.mpg.de
+
+- add missing RemainAfterExit=true to client-systemd unit. 
+
+-------------------------------------------------------------------
+Tue Nov 15 09:28:55 UTC 2016 - christof.hanke@rzg.mpg.de
+
+- update to version 1.6.19 
+
+-------------------------------------------------------------------
+Tue Oct  4 11:19:50 UTC 2016 - aj@suse.com
+
+- Update README: Change SuSE to SUSE.
+
+-------------------------------------------------------------------
+Thu Jul 21 07:52:14 UTC 2016 - christof.hanke@rzg.mpg.de
+
+- update to version 1.6.18.2 
+
+-------------------------------------------------------------------
+Fri Jun 24 04:42:48 UTC 2016 - christof.hanke@rzg.mpg.de
+
+- update to version 1.6.18.1 
+
+-------------------------------------------------------------------
+Tue May 10 15:19:28 UTC 2016 - christof.hanke@rzg.mpg.de
+
+- update to version 1.6.18 
+
+Thu Mar 17 06:35:21 UTC 2016 - christof.hanke@rzg.mpg.de
+
+- update to version 1.6.17 
+- cleanup
+
+-------------------------------------------------------------------
+Fri Dec 18 06:53:08 UTC 2015 - christof.hanke@rzg.mpg.de
+
+- update to version 1.6.16
+- remove fix for configure for new ncurses, now dealt with in 
+  shipped package
+
+-------------------------------------------------------------------
+Sat Nov 21 04:47:46 UTC 2015 - christof.hanke@rzg.mpg.de
+
+- start using change.log again
+- fix configure test for new ncurses 
+
+-------------------------------------------------------------------
+Thu Jun 17 17:04:25 UTC 2010 - cseader@novell.com
+
+- update to version 1.4.12.1 
+
+-------------------------------------------------------------------
+Wed Jan 25 21:39:00 CET 2006 - mls@suse.de
+
+- converted neededforbuild to BuildRequires
+
+-------------------------------------------------------------------
+Mon Jan 23 15:58:43 CET 2006 - nadvornik@suse.cz
+
+- fixed kernel module to compile
+
+-------------------------------------------------------------------
+Wed Jan 11 05:30:18 CET 2006 - mge@suse.de
+- add openafs.SuidCells and openafs.CellServDB
+- cleanup SPEC-file(s)
+- finally adopt
+	sysconfig.transarcmode.openafs-client
+	rc.transarcmode.afs-server
+	rc.transarcmode.afs-client
+  to transarc mode; and fix a small typo in
+	rc.defaultmode.afs-client
+
+-------------------------------------------------------------------
+Fri Jan  6 01:12:31 CET 2006 - mge@suse.de
+- set "%defattr(-,root,root)" for transarcmode-file-lists
+- fix lib64 build problem in transarcmode
+
+-------------------------------------------------------------------
+Thu Jan  5 13:40:42 CET 2006 - mge@suse.de
+- introduce transarc-mode and default-mode
+- introduce "options"
+
+-------------------------------------------------------------------
+Thu Dec 29 16:07:00 CET 2005 - mge@suse.de
+- build for SLES 9
+- with heimdal krb5 support
+- enable-largefile-fileserver
+
+-------------------------------------------------------------------
+Wed Dec 21 16:09:26 CET 2005 - nadvornik@suse.cz
+
+- updated to 1.4.0
+- fixed dangerous compiler warnings
+
+-------------------------------------------------------------------
+Mon Oct 31 12:37:05 CET 2005 - dmueller@suse.de
+
+- don't build as root 
+
+-------------------------------------------------------------------
+Fri Aug 26 12:51:02 CEST 2005 - nadvornik@suse.cz
+
+- fixed kernel module to build
+- fixed sysconfig file name
+
+-------------------------------------------------------------------
+Thu Jul 14 17:25:25 CEST 2005 - nadvornik@suse.cz
+
+- updated to 1.3.85
+- used LSB conforming init script names
+
+-------------------------------------------------------------------
+Tue Jul  5 10:44:32 CEST 2005 - hare@suse.de
+
+- Update for linux 2.6.13.
+
+-------------------------------------------------------------------
+Thu May 12 12:27:01 CEST 2005 - nadvornik@suse.cz
+
+- gcc4 fixes in kernel module
+
+-------------------------------------------------------------------
+Tue Apr 12 17:02:34 CEST 2005 - nadvornik@suse.cz
+
+- fixed to compile with gcc4
+
+-------------------------------------------------------------------
+Wed Feb 23 12:08:07 CET 2005 - nadvornik@suse.cz
+
+- fixed memory leaks and 64bit fixes backported from 1.3.79
+- updated README.SUSE
+
+-------------------------------------------------------------------
+Thu Feb  3 13:19:05 CET 2005 - nadvornik@suse.cz
+
+- updated to 1.3.78 
+
+-------------------------------------------------------------------
+Mon Jan 31 15:58:33 CET 2005 - nadvornik@suse.cz
+
+- fixed afs.h to be usable from userspace [#50283]
+
+-------------------------------------------------------------------
+Tue Jan 25 10:57:09 CET 2005 - nadvornik@suse.cz
+
+- updated to latest snapshot
+
+-------------------------------------------------------------------
+Wed Sep 15 12:37:04 CEST 2004 - nadvornik@suse.cz
+
+- added requres: kernel-nongpl [#45167]
+- fixed kernel module oops [#44618]
+
+-------------------------------------------------------------------
+Wed Aug 11 15:51:03 CEST 2004 - nadvornik@suse.cz
+
+- use kernel module from openafs 1.3.70 to support kernel 2.6
+
+-------------------------------------------------------------------
+Mon Mar 08 17:18:49 CET 2004 - nadvornik@suse.cz
+
+- updated to 1.2.11
+- added note that client for kernel 2.6 is not available
+
+-------------------------------------------------------------------
+Tue Jan 20 18:48:21 CET 2004 - ro@suse.de
+
+- added pam-devel to neededforbuild 
+
+-------------------------------------------------------------------
+Sat Dec 13 00:23:45 CET 2003 - meissner@suse.de
+
+- Added hack if no MTU came from userspace.
+- Removed superflous ppc64 patch part.
+
+-------------------------------------------------------------------
+Thu Dec 11 09:29:31 CET 2003 - meissner@suse.de
+
+- ppc64 port added (status: no longer crashes, talks to the network,
+  but not successfully).
+- Change headerfiles to make it possible to do a ppc -> ppc64 crosscompile. 
+
+-------------------------------------------------------------------
+Mon Oct  6 17:30:17 CEST 2003 - olh@suse.de
+
+- build with -fPIC on ppc32
+
+-------------------------------------------------------------------
+Tue Sep 16 17:37:34 CEST 2003 - nadvornik@suse.cz
+
+- patch from cvs to use AllocLargeSpace for struct osi_file to prevent
+  oopses with some kernel configurations
+
+-------------------------------------------------------------------
+Thu Sep 11 12:58:57 CEST 2003 - nadvornik@suse.cz
+
+- added option DYNROOT to sysconfig and enabled it by default [#27205]
+
+-------------------------------------------------------------------
+Wed Sep 10 17:07:51 CEST 2003 - nadvornik@suse.cz
+
+- added cleanup before module build [#29649]
+
+-------------------------------------------------------------------
+Tue Sep 09 18:33:38 CEST 2003 - nadvornik@suse.cz
+
+- fixed possible segfault
+
+-------------------------------------------------------------------
+Thu Sep 04 12:30:00 CEST 2003 - nadvornik@suse.cz
+
+- set permissions of /var/lib/openafs to 700
+- README.SuSE fixes
+
+-------------------------------------------------------------------
+Thu Aug 28 17:11:47 CEST 2003 - nadvornik@suse.cz
+
+- use ghost for /afs, the directory is created by init-script
+- fixed README.SuSE
+
+-------------------------------------------------------------------
+Thu Aug 21 14:32:58 CEST 2003 - nadvornik@suse.cz
+
+- moved all static libraries to /usr/lib/afs, fixes conflict with libdes
+- used default value for THIS_CELL_SERVER_NAME
+- removed old patches
+
+-------------------------------------------------------------------
+Tue Aug 12 11:10:46 CEST 2003 - nadvornik@suse.cz
+
+- fixed a bug in init script
+
+-------------------------------------------------------------------
+Mon Aug 11 18:26:28 CEST 2003 - nadvornik@suse.cz
+
+- updated to final 1.2.10
+
+-------------------------------------------------------------------
+Wed Jul 30 19:34:34 CEST 2003 - nadvornik@suse.cz
+
+- updated to 1.2.10-rc4
+- do not destroy CellServDB even if REGENERATE_CELL_INFO=yes
+- fixed to compile on x86_64
+
+-------------------------------------------------------------------
+Wed Jul 30 14:25:46 CEST 2003 - sf@suse.de
+
+-  use %_lib where it was missing
+
+-------------------------------------------------------------------
+Wed Jul 09 19:20:55 CEST 2003 - nadvornik@suse.cz
+
+- fixed conflicts in filelist
+
+-------------------------------------------------------------------
+Fri Jun 20 14:59:23 CEST 2003 - nadvornik@suse.cz
+
+- improved init scripts
+
+-------------------------------------------------------------------
+Thu Jun 19 14:40:52 CEST 2003 - nadvornik@suse.cz
+
+- added README.SuSE
+- fixed init scripts [#27426]
+- installed man pages
+
+-------------------------------------------------------------------
+Thu Jun 12 17:45:39 CEST 2003 - poeml@suse.de
+
+- add /usr/src/kernel-modules to the file list
+
+-------------------------------------------------------------------
+Wed Jun  4 21:26:09 CEST 2003 - schwab@suse.de
+
+- Fix SMP configuration detection.
+
+-------------------------------------------------------------------
+Wed May 14 12:28:04 CEST 2003 - poeml@suse.de
+
+- rework filelists:
+  - package/remove unpackaged files
+  - move some files into the server & client subpackages
+  - use %defattr
+- fix deprecated tail -1 syntax (fixes building the kernel module)
+
+-------------------------------------------------------------------
+Mon May 12 14:50:05 CEST 2003 - nadvornik@suse.cz
+
+- updated to 1.2.9
+- added DATA_ENCRYPTION option to sysconfig
+
+-------------------------------------------------------------------
+Mon Mar 10 18:43:26 CET 2003 - poeml@suse.de
+
+- x86_64: add -lresolv, -fPIC
+- fix lib path on all 64 bit platforms
+
+-------------------------------------------------------------------
+Thu Mar 06 10:39:27 CET 2003 - nadvornik@suse.cz
+
+- added sysconfig metadata
+
+-------------------------------------------------------------------
+Mon Feb 24 17:28:44 CET 2003 - nadvornik@suse.cz
+
+- added dirs /afs, /etc/openafs, /var/lib/openafs to filelist
+
+-------------------------------------------------------------------
+Sun Feb 16 18:28:44 CET 2003 - olh@suse.de
+
+- workaround broken -lresolv detection, lib64 fixes
+
+-------------------------------------------------------------------
+Wed Feb 12 16:42:07 CET 2003 - nadvornik@suse.cz
+
+- fixed multiline strings in kernel module
+
+-------------------------------------------------------------------
+Fri Jan 24 11:11:23 CET 2003 - nadvornik@suse.cz
+
+- updated to 1.2.8
+- improved init script
+
+-------------------------------------------------------------------
+Fri Nov 29 10:21:04 CET 2002 - nadvornik@suse.cz
+
+- included errno.h
+- fixed multiline strings
+
+-------------------------------------------------------------------
+Fri Nov 22 16:47:51 CET 2002 - nadvornik@suse.cz
+
+- first version of init scripts
+
+-------------------------------------------------------------------
+Wed Nov 20 19:20:53 CET 2002 - poeml@suse.de
+
+- initial draft of a package. Lots of stuff missing, like init
+  scripts, or the kerberos 5 migration toolkit. 
+
diff --git a/openafs.spec b/openafs.spec
new file mode 100644
index 0000000..33f1595
--- /dev/null
+++ b/openafs.spec
@@ -0,0 +1,932 @@
+#
+# spec file for package openafs
+#
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
+#
+# All modifications and additions to the file contributed by third parties
+# remain the property of their copyright owners, unless otherwise agreed
+# upon. The license for this file, and modifications and additions to the
+# file, is the same license as for the pristine package itself (unless the
+# license for the pristine package is not an Open Source License, in which
+# case the license is the MIT License). An "Open Source License" is a
+# license that conforms to the Open Source Definition (Version 1.9)
+# published by the Open Source Initiative.
+
+# Please submit bugfixes or comments via http://bugs.opensuse.org/
+#
+# needssslcertforbuild
+
+
+#Compat macro for new _fillupdir macro introduced in Nov 2017
+%if ! %{defined _fillupdir}
+%define _fillupdir /var/adm/fillup-templates
+%endif
+%define _lto_cflags %{nil} 
+
+#
+#	TUNABLES
+#
+
+# package-wide definitions here
+
+# build authlibs
+%define build_authlibs 1
+
+# build kernel modules
+%define build_kernel_modules 1
+
+# run regen to create new configure script
+%define run_regen 1
+
+#
+# package internal directories
+#
+%define afslogsdir        /var/log/openafs
+%define afsconfdir        /etc/openafs/server
+%define viceetcdir        /etc/openafs
+%define vicecachedir	  /var/cache/openafs
+%define afslocaldir       /var/lib/openafs
+
+%ifarch ppc64le ppc64
+%define build_kernel_modules 0
+%endif
+
+%if %{_arch} == arm
+%define build_kernel_modules 0
+%endif
+
+# used for %setup only
+# leave upstream tar-balls untouched for integrity checks.
+%define upstream_version 1.8.3
+
+Name:           openafs
+
+Version:        1.8.3
+Release:        0
+Summary:        OpenAFS Distributed File System
+License:        IPL-1.0
+Group:          System/Filesystems
+Url:            http://www.openafs.org/
+
+Source0:        http://www.openafs.org/dl/openafs/%{upstream_version}/openafs-%{upstream_version}-src.tar.bz2
+Source1:        http://www.openafs.org/dl/openafs/%{upstream_version}/openafs-%{upstream_version}-doc.tar.bz2
+Source2:        http://www.openafs.org/dl/openafs/%{upstream_version}/openafs-%{upstream_version}-src.tar.bz2.md5
+Source3:        http://www.openafs.org/dl/openafs/%{upstream_version}/openafs-%{upstream_version}-doc.tar.bz2.md5
+Source4:        http://www.openafs.org/dl/openafs/%{upstream_version}/openafs-%{upstream_version}-src.tar.bz2.sha256
+Source5:        http://www.openafs.org/dl/openafs/%{upstream_version}/openafs-%{upstream_version}-doc.tar.bz2.sha256
+Source10:       README.SUSE.openafs
+Source15:       logrotate.openafs-server
+Source16:       ld.conf.openafs
+Source18:       RELNOTES-%{upstream_version}
+Source19:       ChangeLog
+Source20:       kernel-source.build-modules.sh
+Source23:       openafs-client.service
+Source25:       openafs-server.service
+Source26:       openafs-fuse-client.service
+Source27:       sysconfig.openafs-client
+Source28:       sysconfig.openafs-server
+Source29:       sysconfig.openafs-fuse-client
+Source30:       preamble
+Source55:       openafs.SuidCells
+Source56:       openafs.CellAlias
+Source57:       openafs.ThisCell
+Source58:       openafs.cacheinfo
+Source99:       openafs.changes
+# PATCH-SUSE-SPECIFIC use proper directory layout
+Patch3:         dir_layout.patch
+# PATCH-FIX-UPSTREAM make configure detect ncurses 6 correctly
+Patch4:         openafs-1.8.x.ncurses6.patch
+# PATCH-SUSE-SPECIFIC make KMP work again 
+Patch5:         add_arch_to_linux_kernel_make.patch
+BuildRoot:      %{_tmppath}/%{name}-%{version}-build
+
+#
+#	GENERAL BuildRequires and Requires
+#
+
+BuildRequires:  automake
+BuildRequires:  bison
+BuildRequires:  coreutils
+BuildRequires:  fdupes
+BuildRequires:  flex
+BuildRequires:  fuse-devel
+BuildRequires:  git
+BuildRequires:  krb5-devel
+BuildRequires:  libtirpc-devel
+BuildRequires:  libtool
+BuildRequires:  ncurses-devel
+BuildRequires:  pkg-config
+
+%if 0%{?suse_version} < 1210
+Requires(post): %insserv_prereq
+%endif
+Requires(post): %fillup_prereq
+
+%if %{build_kernel_modules} 
+BuildRequires:  %{kernel_module_package_buildreqs}
+%endif
+
+%description  
+AFS is a cross-platform distributed file system product pioneered at
+Carnegie Mellon University and supported and developed as a product by
+Transarc Corporation (now IBM Pittsburgh Labs). It offers a
+client-server architecture for file sharing, providing location
+independence, scalability, and transparent migration capabilities for
+data.
+
+In addition, among its features are authentication, encryption,
+caching, disconnected operations, replication for higher availability
+and load balancing, and ACLs.
+
+%package server
+Summary:        OpenAFS File System Server
+Group:          System/Filesystems
+Requires:       %{name} = %{version}
+
+%description server
+AFS is a cross-platform distributed file system product pioneered at
+Carnegie Mellon University and supported and developed as a product by
+Transarc Corporation (now IBM Pittsburgh Labs). It offers a
+client-server architecture for file sharing, providing location
+independence, scalability, and transparent migration capabilities for
+data.
+
+In addition, among its features are authentication, encryption,
+caching, disconnected operations, replication for higher availability
+and load balancing, and ACLs. This package contains the static
+libraries and header files needed to develop applications for OpenAFS.
+
+%if %{build_authlibs}
+%package authlibs
+Summary:        OpenAFS authentication shared libraries
+Group:          Development/Libraries/C and C++
+
+%description authlibs
+The AFS distributed filesystem.  AFS is a distributed filesystem
+allowing cross-platform sharing of files among multiple computers.
+Facilities are provided for access control, authentication, backup and
+administrative management.
+
+This package provides a shared version of libafsrpc and libafsauthent.
+None of the programs included with OpenAFS currently use these shared
+libraries; however, third-party software that wishes to perform AFS
+authentication may link against them.
+
+%package authlibs-devel
+Summary:        OpenAFS shared library development
+Group:          Development/Libraries/C and C++
+Requires:       %{name}-authlibs = %{version}
+Requires:       %{name}-devel = %{version}
+
+%description authlibs-devel
+The AFS distributed filesystem.  AFS is a distributed filesystem
+allowing cross-platform sharing of files among multiple computers.
+Facilities are provided for access control, authentication, backup and
+administrative management.
+
+This package includes the static versions of libafsrpc and
+libafsauthent, and symlinks required for building against the dynamic
+libraries.
+
+%endif
+
+%package devel
+Summary:        OpenAFS Static Libraries and Header Files
+Group:          Development/Libraries/Other
+Requires:       %{name} = %{version}
+
+%description devel
+AFS is a cross-platform distributed file system product pioneered at
+Carnegie Mellon University and supported and developed as a product by
+Transarc Corporation (now IBM Pittsburgh Labs). It offers a
+client-server architecture for file sharing, providing location
+independence, scalability, and transparent migration capabilities for
+data.
+
+In addition, among its features are authentication, encryption,
+caching, disconnected operations, replication for higher availability
+and load balancing, and ACLs. This package contains the OpenAFS server.
+
+%package kernel-source
+Summary:        OpenAFS Kernel Module source tree
+Group:          System/Filesystems
+Requires:       bison
+Requires:       flex
+Requires:       gcc
+Requires:       kernel-devel
+Provides:       openafs-kernel = %{version}
+
+%description kernel-source
+The AFS distributed filesystem.  AFS is a distributed filesystem
+allowing cross-platform sharing of files among multiple computers.
+Facilities are provided for access control, authentication, backup and
+administrative management.
+
+This package provides the source code to build your own AFS kernel
+module.
+
+%if %{build_kernel_modules}
+%package KMP
+Summary:        OpenAFS Distributed File System - kernel module
+Group:          System/Kernel
+
+%kernel_module_package -x lockdep um pae -p %{S:30}
+
+%description KMP
+This package contains the kernel module for OpenAFS. For details see
+the openafs package.
+
+%endif
+
+%package fuse_client
+Summary:        OpenAFS FUSE File System Client
+Group:          System/Filesystems
+Conflicts:      %{name}-client
+Requires:       %{name} = %{version}
+
+%description fuse_client
+AFS is a cross-platform distributed file system product pioneered at
+Carnegie Mellon University and supported and developed as a product by
+Transarc Corporation (now IBM Pittsburgh Labs). It offers a
+client-server architecture for file sharing, providing location
+independence, scalability, and transparent migration capabilities for
+data.
+
+This client is using the EXPERIMENTAL FUSE interface on LINUX.
+It does not offer authentication etc. 
+
+%package client
+Summary:        OpenAFS File System Client
+Group:          System/Filesystems
+Requires:       %{name} = %{version}
+Requires:       %{name}-kmp
+Requires:       krb5-client
+
+%description client
+AFS is a cross-platform distributed file system product pioneered at
+Carnegie Mellon University and supported and developed as a product by
+Transarc Corporation (now IBM Pittsburgh Labs). It offers a
+client-server architecture for file sharing, providing location
+independence, scalability, and transparent migration capabilities for
+data.
+
+In addition, among its features are authentication, encryption,
+caching, disconnected operations, replication for higher availability
+and load balancing, and ACLs. This package contains the OpenAFS client.
+
+
+%prep
+
+: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+: @@@
+: @@@ package-name:       %{name}
+: @@@ file-layout:	  fsh
+: @@@ lib dir:    	  %{_libdir}
+: @@@ libexec dir:    	  %{libexecdir}
+: @@@ bin dir:    	  %{_bindir}
+: @@@ sbin dir:    	  %{_sbindir}
+: @@@ include dir:    	  %{includedir}
+: @@@ sysconf dir:    	  %{_sysconfdir}
+: @@@ man dir:    	  %{_mandir}
+: @@@ build modules:      %{build_kernel_modules}
+: @@@ architecture:       %{_arch}
+: @@@ target cpu:         %{_target_cpu}
+: @@@
+: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+
+for src_file in %{S:0}  %{S:1}; do
+    if [ "`md5sum $src_file | awk '{print $1}'`" != "`cat $src_file.md5 | awk '{print $1}'`" ]; then 
+        echo "ERROR: MD5-Integrity check for $src_file failed."; 
+        exit 1
+    fi
+    if [ "`sha256sum $src_file | awk '{print $1}'`" != "`cat $src_file.sha256 | awk '{print $1}'`" ]; then 
+        echo "ERROR: SHA256-Integrity check for $src_file failed."; 
+        exit 1
+    fi
+done
+
+%setup -q -n openafs-%{upstream_version} -T -b 0 -b 1
+%patch3 -p1
+%patch4 -p1
+%patch5 -p1
+
+./regen.sh
+
+%build
+# architecture specific settings
+sysbase=%{_arch}
+
+%ifarch ppc
+perl -pi -e 's,^(XCFLAGS.*),\1 -fPIC,' src/config/Makefile.ppc_linux24.in
+%endif
+%ifarch ppc64 ppc64le
+sysbase=ppc64
+export LDFLAGS="$LDFLAGS -m64"
+%endif
+%ifarch %{arm}
+sysbase=arm
+%endif
+%ifarch aarch64
+sysbase=arm64
+%define _arch arm64
+%endif
+%ifarch s390x
+sysbase=s390
+%endif
+%ifarch x86_64
+sysbase=amd64
+perl -pi -e 's,^(XCFLAGS.*),\1 -fPIC,' src/config/Makefile.amd64_linux24.in
+perl -pi -e 's,^(XLIBS.*),\1 -lresolv,' src/config/Makefile.amd64_linux24.in
+%endif
+
+afs_sysname=${sysbase}_linux26
+
+RPM_OPT_FLAGS=`echo ${RPM_OPT_FLAGS} | sed s/-D_FORTIFY_SOURCE=2//`
+export CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing -fPIC" 
+
+export KRB5LIBS='-lcom_err -lkrb5'
+export PATH_KRB5_CONFIG=%{krb5_config}
+
+%configure \
+    --disable-transarc-paths \
+    --disable-pam \
+    --disable-strip-binaries \
+    --includedir=%{_includedir}/openafs \
+    --sysconfdir=%{_sysconfdir} \
+    --mandir=%{_mandir} \
+    --with-afs-sysname=$afs_sysname \
+    --disable-kernel-module
+
+make CCFLAGS="$CFLAGS" XCFLAGS="$CFLAGS" PAM_CFLAGS="$CFLAGS" KOPTS="$CFLAGS" all_nolibafs
+make CCFLAGS="$CFLAGS" XCFLAGS="$CFLAGS" PAM_CFLAGS="$CFLAGS" KOPTS="$CFLAGS" only_libafs_tree
+
+# the test suite need a configured KDC
+#make -C src/tests all
+
+# Kernel-module
+
+%if %{build_kernel_modules}
+mkdir obj
+
+for flavor in %flavors_to_build; do
+    rm -rf obj/$flavor
+    cp -a libafs_tree obj/$flavor
+    pushd obj/$flavor
+    find . -name "*.c" -exec sed -i '/MODULE_LICENSE(/a MODULE_INFO(retpoline, "Y");' "{}" "+"
+    ./configure  --with-linux-kernel-build=/usr/src/linux-obj/%{_target_cpu}/$flavor --with-linux-kernel-headers=/usr/src/linux \
+        --disable-transarc-paths
+    export EXTRA_CFLAGS='-DVERSION=\"%version\"'
+%ifnarch aarch64
+    export KCFLAGS='-mindirect-branch=thunk-inline -mindirect-branch-register'
+%endif
+    export LINUX_MAKE_ARCH="ARCH=%{_arch}"
+    make
+    popd
+done
+%endif
+
+%install
+
+#
+# install build binaries using  make 
+
+make DESTDIR=%{buildroot} install_nolibafs
+
+#
+# man-pages 
+
+OLD_PWD=`pwd`
+cd doc/man-pages
+%make_install
+cd $OLD_PWD
+
+#
+# create directories
+mkdir -p %{buildroot}/%_unitdir
+mkdir -p %{buildroot}/%{afslogsdir}/old
+mkdir -p %{buildroot}/%{_fillupdir}
+mkdir -p %{buildroot}/%{vicecachedir}
+mkdir -p %{buildroot}/%{viceetcdir}
+mkdir -p %{buildroot}%{_datadir}/openafs/C
+mkdir -p %{buildroot}/%{afsconfdir}
+mkdir -p %{buildroot}/%{afslocaldir}
+mkdir -p %{buildroot}/%{_sbindir}
+
+#
+# client
+cp -a src/afsd/CellServDB %{buildroot}/%{viceetcdir}/CellServDB
+cp -a %{S:55} %{buildroot}/%{viceetcdir}/SuidCells
+cp -a %{S:56} %{buildroot}/%{viceetcdir}/CellAlias
+cp -a %{S:57} %{buildroot}/%{viceetcdir}/ThisCell
+cp -a %{S:58} %{buildroot}/%{viceetcdir}/cacheinfo
+cp -a src/afs/afszcm.cat %{buildroot}%{_datadir}/openafs/C
+install -m 644 %{S:27} %{buildroot}/%{_fillupdir}/sysconfig.openafs-client
+install -m 644 %{S:23} %{buildroot}/%_unitdir
+ln -s %{_sbindir}/service %{buildroot}/%{_sbindir}/rcopenafs-client
+
+#
+# fuse client package
+install -m 644 %{S:29} %{buildroot}/%{_fillupdir}/sysconfig.openafs-fuse-client
+install -m 644 %{S:26} %{buildroot}/%_unitdir
+ln -s %{_sbindir}/service %{buildroot}/%{_sbindir}/rcopenafs-fuse-client
+
+# 
+# server
+install -m 644 %{S:28} %{buildroot}/%{_fillupdir}/sysconfig.openafs-server
+install -m 644 %{S:25} %{buildroot}/%_unitdir
+ln -s %{_sbindir}/service %{buildroot}/%{_sbindir}/rcopenafs-server
+
+#
+# kernel-source 
+mkdir -p %{buildroot}/usr/src/kernel-modules/openafs
+chmod -R o-w src/libafs
+chmod -R o-w libafs_tree
+cp -a libafs_tree %{buildroot}/usr/src/kernel-modules/openafs
+install -m 755 %{S:20} %{buildroot}/usr/src/kernel-modules/openafs/build-modules.sh
+install -m 644 LICENSE %{buildroot}/usr/src/kernel-modules/openafs/LICENSE
+
+# KMP
+%if %{build_kernel_modules}
+export INSTALL_MOD_PATH=%{buildroot}
+export INSTALL_MOD_DIR=updates
+
+for flavor in %flavors_to_build; do
+    make -C /usr/src/linux-obj/%{_arch}/$flavor %{?linux_make_arch} modules_install \
+        M=$PWD/`find obj/$flavor/ -name MODLOAD-\* -type d`
+done
+%endif
+
+#
+# main package
+cp -a %{S:10} README.SUSE
+cp -a %{S:18} RELNOTES
+cp -a %{S:19} ChangeLog
+mkdir -p %{buildroot}/etc/ld.so.conf.d
+cp -a %{S:16} %{buildroot}/etc/ld.so.conf.d/openafs.conf
+
+# move some bin to sbin
+mv %{buildroot}/%{_bindir}/asetkey %{buildroot}/%{_sbindir}/asetkey
+mv %{buildroot}/%{_bindir}/bos %{buildroot}/%{_sbindir}/bos
+mv %{buildroot}/%{_bindir}/akeyconvert %{buildroot}/%{_sbindir}/akeyconvert
+mv %{buildroot}/%{_bindir}/udebug %{buildroot}/%{_sbindir}/udebug
+
+# avoid conflicts with other packages by adding the prefix afs_ to filenames
+mv %{buildroot}%{_bindir}/scout %{buildroot}%{_bindir}/afs_scout
+cat %{buildroot}/%{_mandir}/man1/scout.1 | sed 's/\<scout\>/afs_scout/g' > %{buildroot}/%{_mandir}/man1/afs_scout.1
+rm %{buildroot}/%{_mandir}/man1/scout.1 
+mv %{buildroot}%{_sbindir}/backup %{buildroot}%{_sbindir}/afs_backup
+OLD_PWD=`pwd`
+cd %{buildroot}/%{_mandir}/man8/
+for f in $(ls backup*); do 
+    cat $f | sed 's/\<backup\>/afs_backup/g' > afs_"$f"
+    rm $f
+done
+cd $OLD_PWD
+
+# create manpage for afsd.fuse as a real file
+rm %{buildroot}/%{_mandir}/man8/afsd.fuse.8
+cp -p %{buildroot}/%{_mandir}/man8/afsd.8 %{buildroot}/%{_mandir}/man8/afsd.fuse.8
+
+# move  %%{_libdir}/afs-stuff to %%{_libdir}/openafs
+mv %{buildroot}/%{_libdir}/afs/* %{buildroot}/%{_libdir}/openafs
+mv %{buildroot}/%{_libdir}/*.* %{buildroot}/%{_libdir}/openafs
+rm -rf %{buildroot}/%{_libdir}/afs
+
+#
+# general cleanup
+#
+
+# we supposedly don't need this on linux
+rm %{buildroot}/%{_sbindir}/rmtsysd
+
+%if %{build_authlibs} == 0
+rm %{buildroot}/%{_libdir}/libafsauthent.so.*
+rm %{buildroot}/%{_libdir}/libafsrpc.so.*
+rm %{buildroot}/%{_libdir}/libkopenafs.so.*
+rm %{buildroot}/%{_libdir}/libafsauthent.so
+rm %{buildroot}/%{_libdir}/libafsrpc.so
+rm %{buildroot}/%{_libdir}/libkopenafs.so
+%endif
+
+# remove all static libraries
+find %{buildroot} -type f -name "*.a" -delete
+
+# remove unused man pages
+for x in dlog symlink symlink_list symlink_make symlink_remove; do
+    rm %{buildroot}/%{_mandir}/man1/${x}.1
+done
+for x in rmtsysd xfs_size_check aklog_dynamic_auth; do
+    rm %{buildroot}/%{_mandir}/man8/${x}.8
+done
+
+# compress man pages
+OLD_PWD=`pwd`
+for d in %{buildroot}%{_mandir}/man*; do
+    cd $d
+    for f in *; do
+        if [ -h $f ]; then
+            mv $f $f.gz
+        elif [ -f $f ];then
+            gzip -9 $f
+        else 
+            echo "Unknown thing to compress : $f"
+        fi
+    done
+done
+cd $OLD_PWD
+
+# replace duplicates by symlinks
+%fdupes -s %{buildroot}/usr
+
+#
+# main
+
+%post -p /sbin/ldconfig
+
+%postun -p /sbin/ldconfig
+
+%post kernel-source
+echo To install the kernel-module, do:
+echo cd /usr/src/kernel-modules/openafs
+echo sh ./build-modules.sh build
+echo sh ./build-modules.sh install
+
+#
+# fuse client
+
+%pre fuse_client
+%service_add_pre openafs-fuse-client.service
+
+%preun fuse_client
+%service_del_preun openafs-fuse-client.service
+%{stop_on_removal}
+
+%post fuse_client
+if [ ! -d /afs ]; then
+    mkdir /afs
+fi
+%{fillup_only -n openafs-fuse-client}
+%service_add_post openafs-fuse-client.service
+/sbin/ldconfig
+
+if [ "x$1" = "x" ]; then
+    my_operation=0
+else
+    my_operation=$1
+fi
+
+if [ $my_operation -gt 1 ]; then
+    echo Not stopping the possibly running client.
+    echo You must restart the client to put the upgrade into effect.
+else
+    echo This is the experimental FUSE implementation of the openafs-client
+    echo Please configure your cell like with the in-kernel openafs-client
+    echo authentication etc. is not implemented yet in this version.
+fi
+
+%postun fuse_client
+%service_del_postun openafs-fuse-client.service
+if [ -d /afs ]; then
+     echo make sure to remove directory /afs if unwanted.
+fi
+/sbin/ldconfig
+
+#
+# client
+
+%pre client
+%service_add_pre openafs-client.service
+
+%post client
+if [ ! -d /afs ]; then
+    mkdir /afs
+fi
+/sbin/ldconfig
+%{fillup_only -n openafs-client}
+%service_add_post openafs-client.service
+
+if [ "x$1" = "x" ]; then
+    my_operation=0
+else
+    my_operation=$1
+fi
+if [ $my_operation -gt 1 ]; then
+    echo Not stopping the possibly running client.
+    echo You must restart the client to put the upgrade into effect.
+else 
+    echo For configuring the client, please check /etc/sysconfig/openafs-client
+    echo and/or follow the instructions found on http://www.openafs.org  how to install an openafs-client. 
+fi
+
+%preun client
+%{stop_on_removal}
+%service_del_preun openafs-client.service
+
+%postun client
+if [ -d /afs ]; then
+     echo make sure to remove directory /afs if unwanted.
+fi
+/sbin/ldconfig
+%service_del_postun openafs-client.service
+
+#
+# server
+
+%pre server
+%service_add_pre openafs-server.service
+
+%post server
+/sbin/ldconfig
+%{fillup_only -n openafs-server}
+%service_add_post openafs-server.service
+
+if [ "$FIRST_ARG" -gt 1 ]; then
+    # update no new install
+    echo Not stopping the possibly running services.
+    echo You must restart the service to put the upgrade into effect.
+    if [ -d /var/openafs ]; then
+         echo To upgrade, stop the server, copy the contents of /var/openafs to /var/lib/openafs,
+         echo remove the empty directory /var/openafs and then start the server again. 
+    fi
+else 
+    echo For configuring the server, please check /etc/sysconfig/openafs-server
+    echo and/or follow the instructions found on http://www.openafs.org to install an openafs-client. 
+fi
+
+%preun server
+%service_del_preun openafs-server.service
+%{stop_on_removal}
+
+%postun server
+/sbin/ldconfig
+%service_del_postun openafs-server.service
+
+#
+# devel
+
+%post devel
+
+%postun devel
+
+#
+# authlibs
+
+%if %{build_authlibs}
+%post authlibs
+
+%postun authlibs
+%endif
+
+#
+#	FILES
+#
+
+%files           
+%defattr(-,root,root)
+%config /etc/ld.so.conf.d/openafs.conf
+%config(noreplace) %{viceetcdir}/CellAlias
+%config(noreplace) %{viceetcdir}/CellServDB
+%config(noreplace) %{viceetcdir}/ThisCell
+%dir %{viceetcdir}
+%doc %{_mandir}/man5/afsmonitor.5.gz
+%doc %{_mandir}/man1/afs.1.gz
+%doc %{_mandir}/man1/afs_compile_et.1.gz
+%doc %{_mandir}/man1/afs_scout.1.gz
+%doc %{_mandir}/man1/afsmonitor.1.gz 
+%doc %{_mandir}/man1/cmdebug.1.gz
+%doc %{_mandir}/man1/pts.1.gz
+%doc %{_mandir}/man1/pts_*.gz
+%doc %{_mandir}/man1/restorevol.1.gz
+%doc %{_mandir}/man1/rxdebug.1.gz
+%doc %{_mandir}/man1/sys.1.gz
+%doc %{_mandir}/man1/translate_et.1.gz
+%doc %{_mandir}/man1/udebug.1.gz
+%doc %{_mandir}/man1/vos.1.gz
+%doc %{_mandir}/man1/vos_*gz
+%doc %{_mandir}/man1/xstat_cm_test.1.gz
+%doc %{_mandir}/man1/xstat_fs_test.1.gz
+%doc %{_mandir}/man5/CellAlias.5.gz
+%doc %{_mandir}/man5/CellServDB.5.gz
+%doc %{_mandir}/man5/NetInfo.5.gz
+%doc %{_mandir}/man5/NetRestrict.5.gz
+%doc %{_mandir}/man5/ThisCell.5.gz
+%doc %{_mandir}/man5/afs.5.gz
+%doc %{_mandir}/man5/butc.5.gz
+%doc %{_mandir}/man5/butc_logs.5.gz
+%doc %{_mandir}/man5/fms.log.5.gz
+%doc %{_mandir}/man5/sysid.5.gz
+%doc %{_mandir}/man5/uss.5.gz
+%doc %{_mandir}/man5/uss_*.5.gz
+%doc %{_mandir}/man8/afs_backup.8.gz
+%doc %{_mandir}/man8/afs_backup_*.8.gz
+%doc %{_mandir}/man8/bos.8.gz
+%doc %{_mandir}/man8/bos_[a-t]*.8.gz
+%doc %{_mandir}/man8/bos_uninstall.8.gz
+%doc %{_mandir}/man8/butc.8.gz
+%doc %{_mandir}/man8/fms.8.gz
+%doc %{_mandir}/man8/read_tape.8.gz
+%doc %{_mandir}/man8/uss.8.gz
+%doc %{_mandir}/man8/uss_*.8.gz
+%doc %{_mandir}/man8/vsys.8.gz
+%doc NEWS README* RELNOTES ChangeLog
+%{_bindir}/afs_compile_et
+%{_bindir}/afs_scout
+%{_bindir}/afsio
+%{_bindir}/afsmonitor
+%{_bindir}/cmdebug
+%{_bindir}/pts
+%{_bindir}/restorevol
+%{_bindir}/sys
+%{_bindir}/translate_et
+%{_bindir}/xstat_cm_test
+%{_bindir}/xstat_fs_test
+%{_libdir}/openafs/libafshcrypto.so.*
+%{_libdir}/openafs/librokenafs.so.*
+%{_sbindir}/afs_backup
+%{_sbindir}/bos
+%{_sbindir}/butc
+%{_sbindir}/fms
+%{_sbindir}/read_tape
+%{_sbindir}/rxdebug
+%{_sbindir}/udebug
+%{_sbindir}/uss
+%{_sbindir}/vos
+%{_sbindir}/vsys
+
+%files fuse_client
+%defattr(-,root,root)
+%{_sbindir}/afsd.fuse
+%{_sbindir}/rcopenafs-fuse-client
+%config(noreplace) %{viceetcdir}/SuidCells
+%config(noreplace) %{viceetcdir}/cacheinfo
+%doc %{_mandir}/man8/afsd.fuse.8.gz
+%_unitdir/openafs-fuse-client.service
+%{_fillupdir}/sysconfig.openafs-fuse-client
+%{vicecachedir}
+
+%files client
+%defattr(-,root,root)
+ %{_bindir}/fs
+ %{_bindir}/aklog
+ %{_bindir}/klog.krb5
+ %{_bindir}/pagsh
+ %{_bindir}/pagsh.krb	
+ %{_bindir}/tokens
+ %{_bindir}/tokens.krb
+ %{_bindir}/unlog
+ %{_bindir}/up
+ %{_sbindir}/afsd
+ %{_sbindir}/fstrace
+%doc %{_mandir}/man1/fs.1.gz
+%doc %{_mandir}/man1/fs_*.1.gz
+%doc %{_mandir}/man1/aklog.1.gz
+%doc %{_mandir}/man1/klog.krb5.1.gz
+%doc %{_mandir}/man1/pagsh.1.gz
+%doc %{_mandir}/man1/pagsh.krb.1.gz
+%doc %{_mandir}/man1/tokens.1.gz
+%doc %{_mandir}/man1/tokens.krb.1.gz
+%doc %{_mandir}/man1/unlog.1.gz
+%doc %{_mandir}/man1/up.1.gz
+%doc %{_mandir}/man8/afsd.8.gz
+%doc %{_mandir}/man8/fstrace.8.gz
+%doc %{_mandir}/man8/fstrace_*.8.gz
+%_unitdir/openafs-client.service
+%doc %{_mandir}/man1/copyauth.1.gz
+%doc %{_mandir}/man5/cacheinfo.5.gz
+%doc %{_mandir}/man5/afs_cache.5.gz
+%dir %{_datadir}/openafs
+%dir %{_datadir}/openafs/C
+%{_datadir}/openafs/C/afszcm.cat
+%doc %{_mandir}/man5/afszcm.cat.5.gz
+%config(noreplace) %{viceetcdir}/SuidCells
+%config(noreplace) %{viceetcdir}/cacheinfo
+%{_sbindir}/rcopenafs-client
+%{_fillupdir}/sysconfig.openafs-client
+%{vicecachedir}
+
+%files server 
+%defattr(-,root,root)
+%attr(770,root,root) %dir %{afslocaldir}
+%attr(775,root,root) %dir %{afslogsdir}
+%config %{viceetcdir}/server
+%doc %{_mandir}/man5/AuthLog.5.gz
+%doc %{_mandir}/man5/AuthLog.dir.5.gz
+%doc %{_mandir}/man5/BackupLog.5.gz
+%doc %{_mandir}/man5/BosConfig.5.gz
+%doc %{_mandir}/man5/BosLog.5.gz
+%doc %{_mandir}/man5/FORCESALVAGE.5.gz
+%doc %{_mandir}/man5/FileLog.5.gz
+%doc %{_mandir}/man5/KeyFile.5.gz
+%doc %{_mandir}/man5/KeyFileExt.5.gz
+%doc %{_mandir}/man5/NoAuth.5.gz
+%doc %{_mandir}/man5/PtLog.5.gz
+%doc %{_mandir}/man5/SALVAGE.fs.5.gz
+%doc %{_mandir}/man5/SalvageLog.5.gz
+%doc %{_mandir}/man5/UserList.5.gz
+%doc %{_mandir}/man5/VLLog.5.gz
+%doc %{_mandir}/man5/VolserLog.5.gz
+%doc %{_mandir}/man5/afs_volume_header.5.gz
+%doc %{_mandir}/man5/bdb.DB0.5.gz
+%doc %{_mandir}/man5/krb.conf.5.gz
+%doc %{_mandir}/man5/krb.excl.5.gz
+%doc %{_mandir}/man5/prdb.DB0.5.gz
+%doc %{_mandir}/man5/salvage.lock.5.gz
+%doc %{_mandir}/man5/tapeconfig.5.gz
+%doc %{_mandir}/man5/vldb.DB0.5.gz
+%doc %{_mandir}/man8/akeyconvert.8.gz
+%doc %{_mandir}/man8/asetkey.8.gz
+%doc %{_mandir}/man8/bos_util.8.gz
+%doc %{_mandir}/man8/bosserver.8.gz
+%doc %{_mandir}/man8/buserver.8.gz
+%doc %{_mandir}/man8/dafileserver.8.gz
+%doc %{_mandir}/man8/dafssync-debug.8.gz
+%doc %{_mandir}/man8/dafssync-debug_*.8.gz
+%doc %{_mandir}/man8/dasalvager.8.gz
+%doc %{_mandir}/man8/davolserver.8.gz
+%doc %{_mandir}/man8/fileserver.8.gz
+%doc %{_mandir}/man8/fssync-debug.8.gz
+%doc %{_mandir}/man8/fssync-debug_*.8.gz
+%doc %{_mandir}/man8/prdb_check.8.gz
+%doc %{_mandir}/man8/pt_util.8.gz
+%doc %{_mandir}/man8/ptserver.8.gz
+%doc %{_mandir}/man8/salvager.8.gz
+%doc %{_mandir}/man8/salvageserver.8.gz
+%doc %{_mandir}/man8/state_analyzer.8.gz
+%doc %{_mandir}/man8/upclient.8.gz
+%doc %{_mandir}/man8/upserver.8.gz
+%doc %{_mandir}/man8/vldb_check.8.gz
+%doc %{_mandir}/man8/vldb_convert.8.gz
+%doc %{_mandir}/man8/vlserver.8.gz
+%doc %{_mandir}/man8/voldump.8.gz
+%doc %{_mandir}/man8/volinfo.8.gz
+%doc %{_mandir}/man8/volscan.8.gz
+%doc %{_mandir}/man8/volserver.8.gz
+%dir %{_libexecdir}/openafs
+%{_libexecdir}/openafs/buserver
+%{_libexecdir}/openafs/dafileserver
+%{_libexecdir}/openafs/dasalvager
+%{_libexecdir}/openafs/davolserver
+%{_libexecdir}/openafs/fileserver
+%{_libexecdir}/openafs/ptserver
+%{_libexecdir}/openafs/salvager
+%{_libexecdir}/openafs/salvageserver
+%{_libexecdir}/openafs/upclient
+%{_libexecdir}/openafs/upserver
+%{_libexecdir}/openafs/vlserver
+%{_libexecdir}/openafs/volserver
+%{_sbindir}/asetkey
+%{_sbindir}/akeyconvert
+%{_sbindir}/bos_util
+%{_sbindir}/bosserver
+%{_sbindir}/dafssync-debug
+%{_sbindir}/fssync-debug 
+%{_sbindir}/prdb_check
+%{_sbindir}/pt_util
+%{_sbindir}/salvsync-debug 
+%{_sbindir}/state_analyzer 
+%{_sbindir}/vldb_check
+%{_sbindir}/vldb_convert
+%{_sbindir}/voldump
+%{_sbindir}/volinfo
+%{_sbindir}/volscan
+%_unitdir/openafs-server.service
+%{_sbindir}/rcopenafs-server
+/%{_fillupdir}/sysconfig.openafs-server
+
+%files devel  
+%defattr(-,root,root)
+%dir %{_libdir}/openafs
+%doc %{_mandir}/man1/livesys.1.gz
+%doc %{_mandir}/man1/rxgen.1.gz
+%doc %{_mandir}/man3/AFS::ukernel.3.gz
+%{_bindir}/livesys
+%{_bindir}/rxgen
+%{_includedir}/openafs/
+%{_libdir}/openafs/libafshcrypto.so
+%{_libdir}/openafs/librokenafs.so
+
+%files  kernel-source 
+%defattr(-,root,root)
+%dir /usr/src/kernel-modules
+%dir /usr/src/kernel-modules/openafs
+/usr/src/kernel-modules/openafs/*
+
+%if %{build_authlibs}
+%files authlibs
+%defattr(-,root,root)
+%{_libdir}/openafs/libafsauthent.so.*
+%{_libdir}/openafs/libafsrpc.so.*
+%{_libdir}/openafs/libkopenafs.so.*
+
+%files authlibs-devel
+%defattr(-,root,root)
+%{_libdir}/openafs/libafsauthent.so
+%{_libdir}/openafs/libafsrpc.so
+%{_libdir}/openafs/libkopenafs.so
+%endif
+
+#
+#	CHANGELOG
+#
+
+%changelog
diff --git a/preamble b/preamble
new file mode 100644
index 0000000..04408d3
--- /dev/null
+++ b/preamble
@@ -0,0 +1,3 @@
+Requires:  kernel-%1
+Requires:  %{name}-client = %{version}
+Conflicts: %{name}-fuse-client = %{version}
diff --git a/sysconfig.openafs-client b/sysconfig.openafs-client
new file mode 100644
index 0000000..5ebc59a
--- /dev/null
+++ b/sysconfig.openafs-client
@@ -0,0 +1,17 @@
+#
+# startup options for the openAFS client.
+# see man afsd for details
+
+AFSD_ARGS="-fakestat -memcache -blocks 102400 -dynroot -afsdb"
+
+#
+# sysname to set after startup
+# leave empty for default setting.
+
+SYSNAME=""
+
+#
+# switch for encryption to be set after startup
+# must be one of "on" or "off"
+
+CRYPT="on"
diff --git a/sysconfig.openafs-fuse-client b/sysconfig.openafs-fuse-client
new file mode 100644
index 0000000..5ebc59a
--- /dev/null
+++ b/sysconfig.openafs-fuse-client
@@ -0,0 +1,17 @@
+#
+# startup options for the openAFS client.
+# see man afsd for details
+
+AFSD_ARGS="-fakestat -memcache -blocks 102400 -dynroot -afsdb"
+
+#
+# sysname to set after startup
+# leave empty for default setting.
+
+SYSNAME=""
+
+#
+# switch for encryption to be set after startup
+# must be one of "on" or "off"
+
+CRYPT="on"
diff --git a/sysconfig.openafs-server b/sysconfig.openafs-server
new file mode 100644
index 0000000..3c5d3b2
--- /dev/null
+++ b/sysconfig.openafs-server
@@ -0,0 +1,4 @@
+## Path:        Network/File systems/AFS server
+## Description: AFS server configuration, default mode
+
+# all is set in /etc/openafs/BosConfig