Accepting request 604055 from home:Guillaume_G:branches:openSUSE:Factory:ARM

- 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

OBS-URL: https://build.opensuse.org/request/show/604055
OBS-URL: https://build.opensuse.org/package/show/filesystems/openafs?expand=0&rev=15
This commit is contained in:
Christof Hanke 2018-05-07 04:15:49 +00:00 committed by Git OBS Bridge
parent 5b37094eaf
commit 882dc0c539
21 changed files with 94352 additions and 481 deletions

93800
ChangeLog

File diff suppressed because it is too large Load Diff

27
RELNOTES-1.8.0 Normal file
View File

@ -0,0 +1,27 @@
<!--NO-FRAMELESS-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3c.org/TR/html4/frameset.dtd">
<html><head>
<meta name="verify-v1" content="I/X2Wfxkt50ZaXkdbfIow6iFQIZ71o0o2b6sPTOGmPE=" /><!-- shadow -->
<META name="verify-v1" content="THAFicQcPIBMrawRwzaJg3JK8FArpvoecAy5Zx7v9DM=" /><!-- cg2v -->
<META name="verify-v1" content="VMsthPusbXnedJuKjM0/lhH0uzVj79aQ/lPfk2FLXsA=" /><!-- jaltman -->
<META name="verify-v1" content="fijqhqC5PvhJOATNi4e6h2uSK0v1deFiKXL+yItw/5w=" /><!-- jhutz -->
<title>OpenAFS</title>
<link href="/openafs.css" rel="stylesheet" type="text/css">
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
var pageTracker = _gat._getTracker("UA-5995928-1");
pageTracker._trackPageview();
</script>
</head>
<frameset cols="265,*" border=0>
<frame src="/navbar.html" name="navbar">
<frameset rows="170,*" border=0>
<frame src="/top.html" scrolling=no name="top">
<frame src="/dl/openafs/1.8.0/RELNOTES-1.8.0" name="openafs_main">
</frameset>
</frameset>
</html>

View File

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

View File

@ -0,0 +1,38 @@
From f5794e029903db79f345f42582230a1fd0f7d823 Mon Sep 17 00:00:00 2001
From: Andrew Deason <adeason@sinenomine.net>
Date: Mon, 5 Feb 2018 00:07:10 -0600
Subject: [PATCH] util: Add the AFS_STRINGIZE() macro
Add a macro to help with easily printing the value of #define'd
constants, called AFS_STRINGIZE(). For example:
printf("The value of AFS_SYSCALL is: " AFS_STRINGIZE(AFS_SYSCALL) "\n");
Change-Id: I19a3e9d930f1ca2085506957b4e96dff5bf1c22e
Reviewed-on: https://gerrit.openafs.org/12893
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Ian Wienand <iwienand@redhat.com>
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
---
src/util/afsutil.h | 5 +++++
1 files changed, 5 insertions(+), 0 deletions(-)
diff --git a/src/util/afsutil.h b/src/util/afsutil.h
index bd78946..bbebcc1 100644
--- a/src/util/afsutil.h
+++ b/src/util/afsutil.h
@@ -121,6 +121,11 @@ extern int re_exec(const char *p1);
/* b64_string_t is 8 bytes, in stds.h */
typedef char lb64_string_t[12];
+/* A simple macro to help show the value of #define'd constants. e.g. If 'FOO'
+ * is defined as 5, then AFS_STRINGIZE(FOO) expands to "5" */
+#define AFS_STRINGIZE_(s) #s
+#define AFS_STRINGIZE(s) AFS_STRINGIZE_(s)
+
#include <afs/ktime.h>
#include "afsutil_prototypes.h"
--
1.7.1

View File

@ -0,0 +1,162 @@
From 4f7550dcaf9375046514cdd97cea0f667e955e9f Mon Sep 17 00:00:00 2001
From: Andrew Deason <adeason@sinenomine.net>
Date: Sat, 7 Mar 2015 17:27:47 -0600
Subject: [PATCH] Add support for arm64_linux26
Add support for the arm64/aarch64 architecture on Linux 2.6+. The
param header file is mostly combined from arm and amd64.
Note that the code for syscall interception has not been updated for
arm64, so this will not build on arm64 without support for kernel
keyrings. This also does not define any AFS syscall number, since no
number in the Linux arm64 syscall table is "free" for us to use, as
far as I am aware.
Adapted from initial patches from Micheal Waltz <mwaltz@qualcomm.com>.
Change-Id: I1ee239ded17d8fea3b91b70405215aa1b3f7a6e9
Reviewed-on: https://gerrit.openafs.org/11940
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
---
INSTALL | 2 +-
src/afs/afs_syscall.c | 4 ++++
src/afs/sysincludes.h | 1 +
src/cf/osconf.m4 | 2 +-
src/cf/sysname.m4 | 3 +++
src/config/afs_sysnames.h | 2 ++
src/config/param.arm64_linux26.h | 38 ++++++++++++++++++++++++++++++++++++++
7 files changed, 50 insertions(+), 2 deletions(-)
create mode 100644 src/config/param.arm64_linux26.h
diff --git a/INSTALL b/INSTALL
index 3d802a72d3..920e23e615 100644
--- a/INSTALL
+++ b/INSTALL
@@ -38,7 +38,7 @@ A Configuring
amd64_fbsd_93, amd64_fbsd_100, amd64_fbsd_101
amd64_linux26
amd64_nbsd20, amd64_nbsd30, amd64_nbsd40
- arm_linux26
+ arm_linux26, arm64_linux26
hp_ux11i, hp_ux110, hp_ux1123 (See notes below for information on
getting missing header)
hp_ux102 (Client port possible, but db servers and utilities work)
diff --git a/src/afs/afs_syscall.c b/src/afs/afs_syscall.c
index b2b644ae13..ce6afdf9a8 100644
--- a/src/afs/afs_syscall.c
+++ b/src/afs/afs_syscall.c
@@ -141,6 +141,8 @@ copyin_afs_ioctl(caddr_t cmarg, struct afs_ioctl *dst)
if (test_thread_flag(TIF_31BIT))
#elif defined(AFS_S390X_LINUX20_ENV)
if (current->thread.flags & S390_FLAG_31BIT)
+#elif defined(AFS_ARM64_LINUX26_ENV)
+ if (is_compat_task())
#else
#error pioctl32 not done for this linux
@@ -416,6 +418,8 @@ copyin_iparam(caddr_t cmarg, struct iparam *dst)
if (test_thread_flag(TIF_31BIT))
#elif defined(AFS_S390X_LINUX20_ENV)
if (current->thread.flags & S390_FLAG_31BIT)
+#elif defined(AFS_ARM64_LINUX26_ENV)
+ if (is_compat_task())
#else
#error iparam32 not done for this linux platform
diff --git a/src/afs/sysincludes.h b/src/afs/sysincludes.h
index 0e09271cdb..603773cfdd 100644
--- a/src/afs/sysincludes.h
+++ b/src/afs/sysincludes.h
@@ -122,6 +122,7 @@
# include <linux/kdev_t.h>
# include <linux/ioctl.h>
# if defined(AFS_LINUX26_ENV)
+# include <linux/compat.h>
# include <linux/backing-dev.h>
# include <linux/pagemap.h>
# include <linux/namei.h>
diff --git a/src/cf/osconf.m4 b/src/cf/osconf.m4
index 214dc49b8c..469b92feb6 100644
--- a/src/cf/osconf.m4
+++ b/src/cf/osconf.m4
@@ -69,7 +69,7 @@ case $AFS_SYSNAME in
SHLIB_LINKER="${CC} -shared"
;;
- arm_linux_24 | arm_linux26)
+ arm_linux_24 | arm_linux26 | arm64_linux26)
CCOBJ="\$(CC) -fPIC"
MT_CFLAGS='-pthread -D_REENTRANT'
PAM_OPTMZ=-O2
diff --git a/src/cf/sysname.m4 b/src/cf/sysname.m4
index c4895a92a1..ff15902dc4 100644
--- a/src/cf/sysname.m4
+++ b/src/cf/sysname.m4
@@ -241,6 +241,9 @@ else
arm*-linux*)
AFS_SYSNAME="arm_linuxXX"
;;
+ aarch64*-linux*)
+ AFS_SYSNAME="arm64_linuxXX"
+ ;;
parisc-*-linux-gnu|hppa-*-linux-gnu)
AFS_SYSNAME="parisc_linuxXX"
enable_pam="no"
diff --git a/src/config/afs_sysnames.h b/src/config/afs_sysnames.h
index be27ae651e..dc9e74aab1 100644
--- a/src/config/afs_sysnames.h
+++ b/src/config/afs_sysnames.h
@@ -385,6 +385,8 @@
#define SYS_NAME_ID_amd64_obsd53 4022
#define SYS_NAME_ID_amd64_obsd54 4023
+#define SYS_NAME_ID_arm64_linux2 4100
+#define SYS_NAME_ID_arm64_linux26 4103
#define AFS_REALM_SZ 64
diff --git a/src/config/param.arm64_linux26.h b/src/config/param.arm64_linux26.h
new file mode 100644
index 0000000000..02e867a338
--- /dev/null
+++ b/src/config/param.arm64_linux26.h
@@ -0,0 +1,38 @@
+/*
+ * Copyright 2000, International Business Machines Corporation and others.
+ * All Rights Reserved.
+ *
+ * This software has been released under the terms of the IBM Public
+ * License. For details, see the LICENSE file in the top-level source
+ * directory or online at http://www.openafs.org/dl/license10.html
+ */
+
+#ifndef AFS_PARAM_H
+#define AFS_PARAM_H
+
+#ifndef UKERNEL
+
+/* This section for kernel libafs compiles only */
+#define AFS_ARM64_LINUX26_ENV 1
+#define AFS_LINUX_64BIT_KERNEL 1
+#define AFS_64BITPOINTER_ENV 1 /* pointers are 64 bits */
+#define AFS_64BITUSERPOINTER_ENV 1
+#define AFS_MAXVCOUNT_ENV 1
+
+#else /* !defined(UKERNEL) */
+
+/* This section for user space compiles only */
+#define UKERNEL 1 /* user space kernel */
+
+#endif /* !defined(UKERNEL) */
+
+#ifndef USE_UCONTEXT
+#define USE_UCONTEXT
+#endif
+
+/* Machine / Operating system information */
+#define SYS_NAME "arm64_linux26"
+#define SYS_NAME_ID SYS_NAME_ID_arm64_linux26
+#define AFSLITTLE_ENDIAN 1
+
+#endif /* AFS_PARAM_H */

View File

@ -0,0 +1,62 @@
From b792dea0f1f83673b0b045adf608412901b3024c Mon Sep 17 00:00:00 2001
From: Andrew Deason <adeason@sinenomine.net>
Date: Sun, 8 Mar 2015 11:47:28 -0500
Subject: [PATCH] hcrypto: Avoid 'double' param in arm64 kernel code
Currently, the RAND_add function in hcrypto uses a floating point
argument (specifically, a 'double'), as well as any implementations of
RAND_add. On Linux arm64, we cannot use floating point code in the
kernel, since the kernel module is compiled with -mgeneral-regs-only,
which prevents the use of floating point registers. No code in the
tree actually makes use of this argument, but its mere presence is
enough to cause an error with at least some versions of gcc with
certain arguments.
To get around this, simply change all instances of 'double' in hcrypto
to be a void pointer instead. This allows the code to compile as long
as nobody actually uses that argument in the kernel. If the code is
changed such that we do actually use that argument, the argument will
be a void* and so will probably (hopefully) cause a compiler error,
and the code will need to be examined to make sure this workaround
doesn't break anything.
We already do this on Solaris, which has similar issues for different
compiler versions and compiler flags. Add arm64 Linux to the cases
where we do this, but restrict this to kernel code only, to try to
avoid doing this more often than necessary.
Change-Id: Ifd10786cd9ac6c9d5152b927e180b7362131f359
Reviewed-on: https://gerrit.openafs.org/11939
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
---
src/crypto/hcrypto/kernel/config.h | 15 ++++++++++++---
1 files changed, 12 insertions(+), 3 deletions(-)
diff --git a/src/crypto/hcrypto/kernel/config.h b/src/crypto/hcrypto/kernel/config.h
index 81c2944..b610434 100644
--- a/src/crypto/hcrypto/kernel/config.h
+++ b/src/crypto/hcrypto/kernel/config.h
@@ -98,7 +98,16 @@ static_inline int close(int d) {return -1;}
static_inline int gettimeofday(struct timeval *tp, void *tzp)
{if (tp == NULL) return -1; tp->tv_sec = osi_Time(); tp->tv_usec = 0; return 0;}
-#ifdef AFS_SUN5_ENV
-/* workaround to allow --disable-optimize-kernel on Solaris */
-#define double int
+#if defined(KERNEL) && (defined(AFS_SUN5_ENV) || defined(AFS_ARM64_LINUX26_ENV))
+/*
+ * Some functions such as RAND_add take a 'double' as an argument, but floating
+ * point code generally cannot be used in kernelspace. We never actually use
+ * that argument in kernel code, but just that it exists as an argument is
+ * enough to break the kernel code on Linux (on arm64) and Solaris (depending
+ * on the compiler version and flags). Change all instances of double to void*
+ * to avoid this; if someone does try to use that argument, hopefully the fact
+ * that it is now a void* will flag an error at compile time before it causes
+ * any further problems.
+ */
+# define double void*
#endif
--
1.7.1

View File

@ -0,0 +1,223 @@
From ed513bb516acdb28fc6bbf01714ef2e1df422a8a Mon Sep 17 00:00:00 2001
From: Andrew Deason <adeason@sinenomine.net>
Date: Wed, 11 Mar 2015 12:55:42 -0500
Subject: [PATCH] Do not require AFS_SYSCALL
Various parts of the code make use of AFS_SYSCALL in order to
communicate with the libafs kernel module. Even though most modern
platforms do not use an actual syscall anymore (instead using an
ioctl-based method or similar to emulate the traditional AFS syscall),
some code paths rely on AFS_SYSCALL as a fallback, or just use
AFS_SYSCALL because they were never updated to use the newer methods.
Even platforms that do not use the traditional AFS syscall still
define the AFS_SYSCALL number, in case someone still uses it for
something. However, some platforms do not have an AFS syscall number;
there is no "slot" allocated to us, so we cannot safely issue any
syscall.
For those platforms, we must not reference AFS_SYSCALL at all, or we
will fail to build. So, get rid of these references to AFS_SYSCALL if
it is not defined. In some places, we can just avoid the relevant code
making the syscall. In a few other places, we just pretend like the
libafs kernel module was not loaded and yield an ENOSYS error, to make
the code simpler.
Change-Id: I38e033caf7149c2b1b567f9877221ca8551db2ea
Reviewed-on: https://gerrit.openafs.org/11937
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Ian Wienand <iwienand@redhat.com>
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
---
src/afsd/afsd_kernel.c | 10 ++++++++--
src/afsd/vsys.c | 4 ++++
src/rx/rx_user.c | 4 +++-
src/sys/pioctl.c | 7 ++++++-
src/sys/setpag.c | 8 +++++++-
src/venus/fstrace.c | 18 ++++++++++++++++--
src/viced/viced.c | 13 ++++++++++++-
src/volser/volmain.c | 7 +++++++
8 files changed, 63 insertions(+), 8 deletions(-)
diff --git a/src/afsd/afsd_kernel.c b/src/afsd/afsd_kernel.c
index b15df7476c..093ba5cc0c 100644
--- a/src/afsd/afsd_kernel.c
+++ b/src/afsd/afsd_kernel.c
@@ -274,12 +274,18 @@ afsd_call_syscall(struct afsd_syscall_args *args)
error = os_syscall(args);
if (afsd_debug) {
+ const char *syscall_str;
+#if defined(AFS_SYSCALL)
+ syscall_str = AFS_STRINGIZE(AFS_SYSCALL);
+#else
+ syscall_str = "[AFS_SYSCALL]";
+#endif
if (error == -1) {
char *s = strerror(errno);
- printf("SScall(%d, %d, %d)=%d (%d, %s)\n", AFS_SYSCALL, AFSCALL_CALL,
+ printf("SScall(%s, %d, %d)=%d (%d, %s)\n", syscall_str, AFSCALL_CALL,
(int)args->params[0], error, errno, s);
} else {
- printf("SScall(%d, %d, %d)=%d\n", AFS_SYSCALL, AFSCALL_CALL,
+ printf("SScall(%s, %d, %d)=%d\n", syscall_str, AFSCALL_CALL,
(int)args->params[0], error);
}
}
diff --git a/src/afsd/vsys.c b/src/afsd/vsys.c
index 44f4281626..6b5d3b9bc8 100644
--- a/src/afsd/vsys.c
+++ b/src/afsd/vsys.c
@@ -57,9 +57,13 @@ main(int argc, char **argv)
numberFlag = 1;
}
}
+#ifdef AFS_SYSCALL
code =
syscall(AFS_SYSCALL, parms[0], parms[1], parms[2], parms[3], parms[4],
parms[5]);
+#else
+ code = -1;
+#endif
printf("code %d\n", code);
return 0;
}
diff --git a/src/rx/rx_user.c b/src/rx/rx_user.c
index f135fac0ea..4793494041 100644
--- a/src/rx/rx_user.c
+++ b/src/rx/rx_user.c
@@ -448,8 +448,10 @@ rxi_syscall(afs_uint32 a3, afs_uint32 a4, void *a5)
#if defined(AFS_SGI_ENV)
rcode = afs_syscall(AFS_SYSCALL, 28, a3, a4, a5);
-#else
+#elif defined(AFS_SYSCALL)
rcode = syscall(AFS_SYSCALL, 28 /* AFSCALL_CALL */ , a3, a4, a5);
+#else
+ rcode = -1;
#endif /* AFS_SGI_ENV */
signal(SIGSYS, old);
diff --git a/src/sys/pioctl.c b/src/sys/pioctl.c
index 031def2282..f2f9138dee 100644
--- a/src/sys/pioctl.c
+++ b/src/sys/pioctl.c
@@ -51,9 +51,14 @@ lpioctl(char *path, int cmd, void *cmarg, int follow)
rval = proc_afs_syscall(AFSCALL_PIOCTL, (long)path, cmd, (long)cmarg,
follow, &errcode);
- if(rval)
+ if(rval) {
+# ifdef AFS_SYSCALL
errcode = syscall(AFS_SYSCALL, AFSCALL_PIOCTL, path, cmd, cmarg,
follow);
+# else
+ errcode = -1;
+# endif
+ }
return (errcode);
}
diff --git a/src/sys/setpag.c b/src/sys/setpag.c
index 3c90279ee7..48570bf78a 100644
--- a/src/sys/setpag.c
+++ b/src/sys/setpag.c
@@ -55,8 +55,14 @@ lsetpag(void)
rval = proc_afs_syscall(AFSCALL_SETPAG,0,0,0,0,&errcode);
- if(rval)
+ if(rval) {
+# ifdef AFS_SYSCALL
errcode = syscall(AFS_SYSCALL, AFSCALL_SETPAG);
+# else
+ errcode = -1;
+# endif
+ }
+
#elif defined(AFS_DARWIN80_ENV)
int rval;
diff --git a/src/venus/fstrace.c b/src/venus/fstrace.c
index 12a594972f..04e7407a1a 100644
--- a/src/venus/fstrace.c
+++ b/src/venus/fstrace.c
@@ -1120,12 +1120,22 @@ afs_syscall(long call, long parm0, long parm1, long parm2, long parm3,
/* Linux can only handle 5 arguments in the actual syscall. */
if (call == AFSCALL_ICL) {
rval = proc_afs_syscall(call, parm0, parm1, parm2, (long)eparm, &code);
- if (rval)
+ if (rval) {
+#ifdef AFS_SYSCALL
code = syscall(AFS_SYSCALL, call, parm0, parm1, parm2, eparm);
+#else
+ code = -1;
+#endif
+ }
} else {
rval = proc_afs_syscall(call, parm0, parm1, parm2, parm3, &code);
- if (rval)
+ if (rval) {
+#ifdef AFS_SYSCALL
code = syscall(AFS_SYSCALL, call, parm0, parm1, parm2, parm3);
+#else
+ code = -1;
+#endif
+ }
}
#if defined(AFS_SPARC64_LINUX20_ENV) || defined(AFS_SPARC_LINUX20_ENV)
/* on sparc this function returns none value, so do it myself */
@@ -1137,7 +1147,11 @@ afs_syscall(long call, long parm0, long parm1, long parm2, long parm3,
if (!code) code = rval;
#else
#if !defined(AFS_SGI_ENV) && !defined(AFS_AIX32_ENV)
+# if defined(AFS_SYSCALL)
code = syscall(AFS_SYSCALL, call, parm0, parm1, parm2, parm3, parm4);
+# else
+ code = -1;
+# endif
#else
#if defined(AFS_SGI_ENV)
code = syscall(AFS_ICL, call, parm0, parm1, parm2, parm3, parm4); /* XXX */
diff --git a/src/viced/viced.c b/src/viced/viced.c
index a8b6e337ce..11f21e0e7e 100644
--- a/src/viced/viced.c
+++ b/src/viced/viced.c
@@ -312,7 +312,18 @@ fs_IsLocalRealmMatch(void *rock, char *name, char *inst, char *cell)
return islocal;
}
-#if !defined(AFS_NT40_ENV) && !defined(AFS_DARWIN160_ENV)
+#if defined(AFS_NT40_ENV)
+/* no viced_syscall */
+#elif defined(AFS_DARWIN160_ENV)
+/* no viced_syscall */
+#elif !defined(AFS_SYSCALL)
+int
+viced_syscall(afs_uint32 a3, afs_uint32 a4, void *a5)
+{
+ errno = ENOSYS;
+ return -1;
+}
+#else
int
viced_syscall(afs_uint32 a3, afs_uint32 a4, void *a5)
{
diff --git a/src/volser/volmain.c b/src/volser/volmain.c
index 430510f4fe..f454dd10dd 100644
--- a/src/volser/volmain.c
+++ b/src/volser/volmain.c
@@ -173,6 +173,13 @@ volser_syscall(afs_uint32 a3, afs_uint32 a4, void *a5)
}
return err;
}
+#elif !defined(AFS_SYSCALL)
+int
+volser_syscall(afs_uint32 a3, afs_uint32 a4, void *a5)
+{
+ errno = ENOSYS;
+ return -1;
+}
#else
int
volser_syscall(afs_uint32 a3, afs_uint32 a4, void *a5)

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:e26f3bb399f524b4978543eb3ec169fd58f2d409cf4bc22c75c65fb9b09f12e8
size 3801291

View File

@ -0,0 +1 @@
b66890fabf87b64c8eac6ec68d4b60c5 /home/kaduk/openafs/1.8.0/openafs-1.8.0-doc.tar.bz2

View File

@ -0,0 +1 @@
e26f3bb399f524b4978543eb3ec169fd58f2d409cf4bc22c75c65fb9b09f12e8 openafs-1.8.0-doc.tar.bz2

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:63fae6b3a4339e4a40945fae1afb9b99a5e7f8e8dbde668938ab8c4ff569fd7d
size 15113300

View File

@ -0,0 +1 @@
75fa969fc39f8cf652e1283670f627dc /home/kaduk/openafs/1.8.0/openafs-1.8.0-src.tar.bz2

View File

@ -0,0 +1 @@
63fae6b3a4339e4a40945fae1afb9b99a5e7f8e8dbde668938ab8c4ff569fd7d openafs-1.8.0-src.tar.bz2

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:8755289dc2772c2d75c81960128fd4ad9ae297f6efd5b1cc4360e7fddcc70154
size 3802039

View File

@ -1 +0,0 @@
b745f553867efce8788ecb41602f929a /home/kaduk/openafs/candidate/1.8.0pre5/openafs-1.8.0pre5-doc.tar.bz2

View File

@ -1 +0,0 @@
8755289dc2772c2d75c81960128fd4ad9ae297f6efd5b1cc4360e7fddcc70154 openafs-1.8.0pre5-doc.tar.bz2

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:371e44656152bb03018bd08d16ca4e07644f9414915d78a85e0e391b7f3e27b3
size 15106627

View File

@ -1 +0,0 @@
bb23eaadefe7811277065f26dadf2c4b /home/kaduk/openafs/candidate/1.8.0pre5/openafs-1.8.0pre5-src.tar.bz2

View File

@ -1 +0,0 @@
371e44656152bb03018bd08d16ca4e07644f9414915d78a85e0e391b7f3e27b3 openafs-1.8.0pre5-src.tar.bz2

View File

@ -1,3 +1,13 @@
-------------------------------------------------------------------
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

View File

@ -56,11 +56,11 @@
# used for %setup only
# leave upstream tar-balls untouched for integrity checks.
%define upstream_version 1.8.0pre5
%define upstream_version 1.8.0
Name: openafs
Version: 1.8.0~pre5
Version: 1.8.0
Release: 0
Summary: OpenAFS Distributed File System
License: IPL-1.0
@ -92,7 +92,15 @@ Source56: openafs.CellAlias
Source57: openafs.ThisCell
Source58: openafs.cacheinfo
Source99: openafs.changes
Patch3: openafs-1.8.x.ncurses6.patch
# PATCH-FIX-UPSTREAM backport upstream patch
Patch0: add_support_fo_arm64_linux26.patch
# PATCH-FIX-UPSTREAM backport upstream patch
Patch1: dont_require_AFS_SYSCALL.patch
# PATCH-FIX-UPSTREAM backport upstream patch
Patch2: add_AFS_STRINGIZE_macro.patch
# PATCH-FIX-UPSTREAM backport upstream patch
Patch3: avoid_double_param_in_arm64_kernel.patch
Patch4: openafs-1.8.x.ncurses6.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
#
@ -302,9 +310,13 @@ for src_file in %{S:0} %{S:1}; do
done
%setup -q -n openafs-%{upstream_version} -T -b 0 -b 1
%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch3 -p1
%if %{run_regen}
%patch3 -p1
%patch4 -p1
./regen.sh
%endif
@ -319,9 +331,12 @@ perl -pi -e 's,^(XCFLAGS.*),\1 -fPIC,' src/config/Makefile.ppc_linux24.in
sysbase=ppc64
export LDFLAGS="$LDFLAGS -m64"
%endif
%ifarch armv7l
%ifarch %{arm}
sysbase=arm
%endif
%ifarch aarch64
sysbase=arm64
%endif
%ifarch s390x
sysbase=s390
%endif