commit 7073408688da021864bba59c592e8924e05adb91 Author: Seth Forshee Date: Tue Aug 22 07:59:11 2017 -0500 Linux: Include linux/uaccess.h rather than asm/uaccess.h if present Starting with Linux 4.12 there is a module build error on s390 due to asm/uaccess.h using a macro defined in the common header. The common header has been around since 2.6.18 and has always included asm/uaccess.h, so switch to using the common header whenever it is present. Signed-off-by: Seth Forshee Reviewed-on: https://gerrit.openafs.org/12714 Reviewed-by: Benjamin Kaduk Tested-by: BuildBot (cherry picked from commit 962f4838dc461567d896304f617a0923745d13d5) Change-Id: I5a7834b982458159804bc4d940e39ef283253299 Reviewed-on: https://gerrit.openafs.org/12718 Tested-by: BuildBot Reviewed-by: Mark Vitale Reviewed-by: Michael Meffie Reviewed-by: Benjamin Kaduk commit a3812407f28439bb69f052f0115171cdf04927da Author: Benjamin Kaduk Date: Tue Aug 1 20:43:41 2017 -0500 Make OpenAFS 1.8.0pre2 Update the version strings for the second 1.8.0 prerelease. Change-Id: I3e3f950d0565b877a4da4f8843a015ac392484d5 Reviewed-on: https://gerrit.openafs.org/12683 Tested-by: BuildBot Reviewed-by: Mark Vitale Reviewed-by: Stephan Wiesand Reviewed-by: Benjamin Kaduk commit bfc5d1ada2f5ce12bfafe65d352982adbefe9911 Author: Benjamin Kaduk Date: Tue Aug 1 20:57:52 2017 -0500 Remove src/mcas This lock-free library toolkit is intriguing and may be the subject of future work, but such development will occur on the master branch, and these files are just clutter on openafs-stable-1_8_x. Remove them to give the tree a more clean start. Remove src/mcas and stop mentioning it in SOURCE-MAP; don't reference it in the rpctests, either. Change-Id: I21b1b6b64a709fe40aa53aaf3470d128c0dc2f86 Reviewed-on: https://gerrit.openafs.org/12682 Tested-by: Benjamin Kaduk Reviewed-by: Mark Vitale Reviewed-by: Stephan Wiesand Reviewed-by: Benjamin Kaduk commit 7c2ce4040e94e954e51945daac03cc39e885d3ce Author: Benjamin Kaduk Date: Tue Aug 1 20:55:52 2017 -0500 Remove src/rxgk These files were commited slightly prematurely to the tree; rxgk support is intended for the 2.0 release, and will not appear in the 1.8.x release series. Remove src/rxgk and drop mentions of rxgk from configure/Makefile.in/etc. Change-Id: Ib7d40eaac85b05d920781b61f73dbdf8fedfcc2b Reviewed-on: https://gerrit.openafs.org/12681 Tested-by: Benjamin Kaduk Reviewed-by: Mark Vitale Reviewed-by: Stephan Wiesand Reviewed-by: Benjamin Kaduk commit e739eaa650ee30dcce54d05908b062839eafbf73 Author: Michael Meffie Date: Fri Apr 14 20:38:27 2017 -0400 redhat: move bosserver and fssync-debug man pages Move the bosserver and fssync-debug/dafssync-debug man pages to the openafs-server package, which distributes those programs. Change-Id: I9c84ad485834177fd43b28acd444d3d54c648cc8 Reviewed-on: https://gerrit.openafs.org/12601 Reviewed-by: Stephan Wiesand Reviewed-by: Benjamin Kaduk Tested-by: Benjamin Kaduk commit 5b79f95f7457f203213a9170389b17ffcc0208f7 Author: Michael Meffie Date: Thu Apr 13 21:48:06 2017 -0400 redhat: kauth client and server sub-packages Move the kaserver and kauth client programs to conditionally built packages called openafs-kauth-server and openafs-kauth-client. Packagers can build these by specifying '--with kauth'. They are not built by default to discourage use. This commit subsumes the openafs-kpasswd package into the openafs-kauth-client package. Change-Id: I1322f05d7fe11d466c9ed71a5059c21b759d95ab Reviewed-on: https://gerrit.openafs.org/12600 Reviewed-by: Stephan Wiesand Reviewed-by: Benjamin Kaduk Tested-by: Benjamin Kaduk commit 54e478328fa24aa2629398c5ddfad7b50d353dd7 Author: Michael Meffie Date: Mon Apr 10 15:06:02 2017 -0400 redhat: do not package kauth by default Do not package kaserver and related programs by default to discourage use. Add the '--with kauth' rpmbuild option to allow packagers to continue include the kauth programs for compatibility. Change-Id: I8bf9f6dc221afc22ed6c9a33cf101d705e6c4920 Reviewed-on: https://gerrit.openafs.org/12597 Reviewed-by: Stephan Wiesand Reviewed-by: Benjamin Kaduk Tested-by: Benjamin Kaduk commit 6d59b7c4b4b712160a6d60491c95c111bb831fbb Author: Benjamin Kaduk Date: Sun Jul 30 20:57:05 2017 -0500 Default to crypt mode for unix clients Though the protection offered by rxkad, even with rxkad-k5 and rxkad-kdf, is insufficient to protect traffic from a determined attacker, it remains the case that the internet is not a safe place for user data to travel in the clear, and has not been for a long time. The Windows client encrypts by default, and all or nearly all the Unix client packaging scripts set crypt mode by default. Catch up to reality and default to crypt mode in the Unix cache manager. Change-Id: If0061ddca3bedf0df1ade8cb61ccb710ec1181d4 Reviewed-on: https://gerrit.openafs.org/12668 Reviewed-by: Benjamin Kaduk Tested-by: BuildBot commit f7ccf0aa00459cda4579a3838b5bd59ba69c03ea Author: Marcio Barbosa Date: Mon Jul 31 15:27:10 2017 -0400 ubik: remove useless signal call The current version does not have a corresponding LWP_WaitProcess call for the beacon_globals.ubik_amSyncSite global. As a result, the LWP_NoYieldSignal(&beacon_globals.ubik_amSyncSite) signal call can be safely removed. Change-Id: I72c4ccfe8e68551673dc728dd699ba8c561d76d1 Reviewed-on: https://gerrit.openafs.org/12673 Reviewed-by: Mark Vitale Reviewed-by: Benjamin Kaduk Tested-by: BuildBot commit b4c3baa2e24890face6433fcb160e85b7409df4c Author: Michael Meffie Date: Wed Aug 2 15:25:45 2017 -0400 doc: add a document to describe rx debug packets This document gives a basic description of Rx debug packets, the protocol to exchange debug packets, and the version history. Change-Id: Ic040d336c1e463f7da145f1a292c20c5d5f215df Reviewed-on: https://gerrit.openafs.org/12677 Tested-by: BuildBot Reviewed-by: Benjamin Kaduk commit b8e8145fa97e3edb6e4157f0d60d3d5e8db597fe Author: Michael Meffie Date: Tue Aug 1 20:36:18 2017 -0400 doc: add kolya's rx-spec to doc/txt Add rx protocol spec and rx debug spec written by Nickolia Zeldovich. Rx protocol specification draft (2002) Nickolai Zeldovich, kolya@MIT.EDU Change-Id: I65a9a83a8889503f3a82c8fde7a87f84d2736c8d Reviewed-on: https://gerrit.openafs.org/12676 Tested-by: BuildBot Reviewed-by: Benjamin Kaduk commit c6f5ebc4cf95b0f1d3acc7a0a8678ba0d4378243 Author: Michael Meffie Date: Tue Aug 1 20:10:32 2017 -0400 doc: relocate notes from arch to txt The doc/txt directory has become the de facto home for text-based technical notes. Relocate the contents of the doc/arch directory to doc/txt. Relocate doc/examples to doc/txt/examples. Update the doc/README file to be more current and remove old work in progress comments. Change-Id: Iaa53e77eb1f7019d22af8380fa147305ac79d055 Reviewed-on: https://gerrit.openafs.org/12675 Tested-by: BuildBot Reviewed-by: Benjamin Kaduk commit 57d32c29146167ff54d3221ed761a5973776ae93 Author: Benjamin Kaduk Date: Tue Aug 1 20:50:37 2017 -0500 Add NEWS entry for recent ubik changes Of the ubik-fix-write-after-recovery topic, this seems like the most noteworthy portion, with the other bits wrapped up in the preface. Change-Id: Icc1afb9f851ef2d7ade49c2382cc023997f1bf26 Reviewed-on: https://gerrit.openafs.org/12679 Tested-by: BuildBot Reviewed-by: Benjamin Kaduk commit da704137f4bf766250ca87dbdc5a85c2024cb0a6 Author: Marcio Barbosa Date: Thu Jul 20 23:02:15 2017 -0400 ubik: update epoch as soon as sync-site is elected The ubik_epochTime represents the time at which the coordinator first received its coordinator mandate. However, this global is currently not updated at the moment when a new sync-site is elected. Instead, ubik_epochTime is only updated at the very end of the first write transaction, when a new database label is written (in udisk_commit). This causes at least 2 different issues: For one, this means that we change ubik_epochTime while a remote transaction is in progress. If VOTE_Beacon is called after ubik_epochTime is updated, but before the remote transaction ends, the remote sites will detect that the transaction id in ubik_currentTrans is wrong (via urecovery_CheckTid(), since the epoch doesn't match), and they will abort the transaction. This means the transaction will fail, and it may cause a loss of quorum until another election is completed. Another issue is that ubik_epochTime can be 0 at the beginning of a write transaction, if this is the first election that this site has won. Since ubik_epochTime is used to construct transaction ids, this means that we can have different transactions that originate from different sites at different times, but they have the same epoch in their tid. For example, say a write transaction starts with epoch 0, but the originating site is killed/interrupted before finishing. That write transaction will linger on remote sites in ubik_currentTrans with an epoch of 0 (since the originating site will never call DISK_ReleaseLocks, or DISK_Abort, etc). Normally the sync site will kill such a lingering transaction via urecovery_CheckTid, but since the epoch is 0, and the election winner's epoch is also 0, the transaction looks valid and may never be killed. If that transaction is holding a lock on the database, this means that the database will forever remain locked, effectively preventing any access to the db on that site. To fix both of these issues, update ubik_epochTime with the current time as soon as we win the election. This ensures that the epoch is not updated in the middle of a transaction, and it ensures that all transactions are created with a unique epoch: the epoch of the election that we won. Note that with this commit, we do not ever set ubik_epochTime to the magic value of '2' during database init. The special '2' epoch only needs to be set in the database itself, and it is never an actual epoch that represents a real quorum that went through the election process. The database will be labelled with a 'real' epoch after the first write, like normal. [kaduk@mit.edu: comment the locking strategy in ubeacon_Interact()] Change-Id: I6cdcf5a73c1ea564622bfc8ab7024d9901af4bc8 Reviewed-on: https://gerrit.openafs.org/12609 Tested-by: BuildBot Reviewed-by: Marcio Brito Barbosa Reviewed-by: Benjamin Kaduk commit 32ddf88547f921b33dd93473883928051faab950 Author: Joe Gorse Date: Thu Jul 6 15:47:24 2017 -0400 LINUX: afs_create infinite fetchStatus loop For a file in a directory with the CStatd bit cleared, we can get an infinite fetchStatus loop. In afs_create(), afs_getDCache() may return NULL due to an error. If unchecked it will loop which may produce multiple fetchStatus() calls to the fileserver. Credit: Yadav Yadavendra for identifying and analysing this issue. Change-Id: Iecd77d49a5f3e8bb629396c57246736b39aa935f Reviewed-on: https://gerrit.openafs.org/12651 Tested-by: BuildBot Reviewed-by: Benjamin Kaduk commit 18fabf9aecf358e0f45e25f6249685f7f2e32485 Author: Benjamin Kaduk Date: Wed Aug 2 19:31:17 2017 -0500 Update NEWS for volume stats default change Change-Id: I1a184bf638609866f6f7f1d11c224dfee1113eef Reviewed-on: https://gerrit.openafs.org/12678 Tested-by: BuildBot Reviewed-by: Michael Meffie Reviewed-by: Benjamin Kaduk commit 8e1ca72b1cbed930d3661dee5cb742cab52737e9 Author: Michael Meffie Date: Tue Aug 1 17:21:13 2017 -0400 volser: preserve volume stats by default Commit dfceff1d3a66e76246537738720f411330808d64 added the -preserve-vol-stats flag to the volume server. This enabled a change in the volume server to preserve volume usage statistics during reclone and restore operations. Otherwise, volume usage counters of read-only volumes are cleared when volumes are released, making it difficult to track usage with the volume stats. Make this feature the default behavior of the volume server and provide the option -clear-vol-stats to use the old behavior if so desired. This change makes the -preserve-vol-stats the default, and keeps it as a hidden flag for sites which may already have that flag set in the BosConfig. Since this changes a default behavior of the volume server, this change is only appropriate on a major or minor release boundary, not in the middle of a stable series. Change-Id: I3706ede64b7b18a80b39ebd55f2e1824bb7dbc57 Reviewed-on: https://gerrit.openafs.org/12674 Tested-by: BuildBot Reviewed-by: Benjamin Kaduk commit 7c7085061580ccce7b2d9c17df5604e5e97fcd81 Author: Marcio Barbosa Date: Mon May 22 12:55:32 2017 -0400 ubik: avoid early DISK_Begin calls we know will fail Currently, we can start a write transaction on a site immediately after it is elected as the sync site. However, after commit d47beca1, SDISK_Begin on remote sites will fail right after an election occurs (since lastYesState is not set, and so urecovery_AllBetter will fail). And after commit fac0b742, this error is always noticed and propagated back to the application. As a result, when we try to write immediately after a sync site is elected, the transaction will fail with UNOQUORUM, the remote sites will be marked as down, and we may lose quorum and require another election to be performed. This can easily happen repeatedly for a site that frequently tries to make changes to a ubik database. To avoid marking other sites down and going through another election process, do not allow write transactions until we know that lastYesState is set on the remote sites. We do this by waiting until the next wave of beacons are sent, which tell the remote sites that we are the sync site. In other words, only allow write transactions after the sync site knows that the remote sites also know that the sync site has been elected. With this commit, a write transaction immediately after an election will still fail with UNOQUORUM, but we avoid triggering an error on the remote sites, and avoid losing quorum in this situation. Change-Id: I9e1a76b4022e6d734af1165d94c12e90af04974d Reviewed-on: https://gerrit.openafs.org/12592 Reviewed-by: Andrew Deason Reviewed-by: Benjamin Kaduk Tested-by: Benjamin Kaduk commit 8f46ca082653116c9c42a69e2535be1bb2f0a2a9 Author: Marcio Barbosa Date: Wed Jun 21 17:42:37 2017 -0300 ubik: allow remote dbase relabel if up to date When a site is elected the sync-site, its database is not immediately relabeled. The database in question will be relabeled at the end of the first write transaction (in udisk_commit). To do so, the dbase->version is updated on the sync-site first (1) and then the versions of the remote sites are updated through SDISK_SetVersion() (2). In order to make sure that the remote site holds the same database as the sync-site, the SDISK_SetVersion() function checks if the current version held by the remote site (ubik_dbVersion) is equal to the original version stored by the sync-site (oldversionp). If ubik_dbVersion is not equal to oldversionp, SDISK_SetVersion() will fail with USYNC. However, ubik_dbVersion can be updated by the vote thread at any time. That is, if the sync site calls VOTE_Beacon() on the remote site between events (1) and (2), the remote site will set ubik_dbVersion to the new version, while ubik_dbase->version is still set to the old version. As a result, ubik_dbVersion will not be equal to oldversionp and SDISK_SetVersion() will fail with USYNC. This failure may cause a loss of quorum until another election is completed. To fix this problem, let SDISK_SetVersion() relabel the database when ubik_dbase->version is equal to oldversionp. In order to try to only affect the scenario described above, also check if ubik_dbVersion is equal to newversionp. Change-Id: I97e6f8cacd1c9bca0b4c72374c058c5fe5b638b3 Reviewed-on: https://gerrit.openafs.org/12613 Tested-by: BuildBot Reviewed-by: Benjamin Kaduk commit 3c12ff9fbb2724b6e430f3eeeb2c2a1d2ae3f884 Author: Joe Gorse Date: Wed May 10 11:38:25 2017 -0400 afs: fix repeated BulkStatus calls for directories. There is a filetype comparison check in afs_DoBulkStat just after BulkFetch RPC. This check will fail for directories even though bulkStatus was done for directories. This code is apparently necessary for Darwin, but it causes this problem otherwise. Thus it is removed from the rest of the builds using the AFS_DARWIN_ENV preprocessor variable. Credit: Yadav Yadavendra for identifying and analysing this issue. Change-Id: I9645f0e7a3327cb5f20cdf3ba2bf1cc5b1509bb5 Reviewed-on: https://gerrit.openafs.org/12610 Reviewed-by: Benjamin Kaduk Tested-by: BuildBot commit 90acda692a589eb177dc5dee99490947106f8141 Author: Michael Meffie Date: Thu Jul 20 00:12:05 2017 -0400 relocate old afs docs to doc/txt Move the afs/DOC files to the top-leve doc/txt directory, since this has become the home for developer oriented documentation. Change-Id: I128d338c69534b4ee6043105a7cfd390b280afe3 Reviewed-on: https://gerrit.openafs.org/12662 Tested-by: BuildBot Reviewed-by: Benjamin Kaduk commit 5a88209a0ff0cefb7ec1a810e25011ee9795d2fe Author: Michael Meffie Date: Wed Jul 19 23:48:42 2017 -0400 Incorporate old release notes into NEWS Cleanup the doc/txt directory by incorporating the old release notes into the NEWS file. Change-Id: I63911fc5cb0b476e201148c6d3fa3441f4746ab7 Reviewed-on: https://gerrit.openafs.org/12661 Tested-by: BuildBot Reviewed-by: Benjamin Kaduk commit 3629ae4a682d648d6830bf551ed78faaa4cfc477 Author: Michael Meffie Date: Wed Jul 19 22:39:51 2017 -0400 Update NEWS for 1.8.0pre2 Change-Id: I5f83e81f25177bde1ea691e756359563e80ee3f2 Reviewed-on: https://gerrit.openafs.org/12660 Tested-by: BuildBot Reviewed-by: Benjamin Kaduk commit 1d5b255ff68af03da891a0babefdadd85f48def0 Author: Michael Meffie Date: Wed Jul 19 23:09:01 2017 -0400 Import NEWS from openafs-stable-1_6_x Import change descriptions for 1.6.20.1, 1.6.20.2, 1.6.21. Change-Id: Ib4f06c7046eb6e1bb0a1ccfb9f6c45191154fe0e Reviewed-on: https://gerrit.openafs.org/12659 Tested-by: BuildBot Reviewed-by: Benjamin Kaduk commit 77c5e4f3fba57c85fd664f64dba2c44a44a4fb5c Author: Stephan Wiesand Date: Wed Jul 26 15:18:08 2017 +0200 Linux: fix whitespace in osi_sysctl.c Remove dozens of trailing spaces and make consistent use of tabs for indentation throughout the file. Change-Id: Ibbd17d2b9828590ffd84b76aac70646e9fe9cb2c Reviewed-on: https://gerrit.openafs.org/12665 Reviewed-by: Benjamin Kaduk Tested-by: BuildBot commit b0461f2def17fe3d3f49e51e3c4a1df81a921eee Author: Andrew Deason Date: Thu Jun 15 15:32:41 2017 -0500 LINUX: Workaround d_splice_alias/d_lookup race Before Linux kernel commit 4919c5e45a91b5db5a41695fe0357fbdff0d5767, d_splice_alias in some cases can d_rehash the given dentry without attaching it to the given inode, right before the dentry is unhashed again. This means that for a few moments, that negative dentry is visible to __d_lookup, and thus is visible to path lookup and can be given to afs_linux_dentry_revalidate. Currently, afs_linux_dentry_revalidate will say that the dentry is valid, because d_time and other fields are set; it's just not attached to an inode. This causes an ENOENT error on lookup, even though the file is there (and no OpenAFS code said otherwise). Normally this race is rare, but it can be frequently exercised if we access the same directory via different names at the same time. This can happen with multiple mountpoints to the same volume, or by accessing an @sys directory via its abbreviated and expanded forms. To get around this, make afs_linux_dentry_revalidate check negative 'dentry's to see if they are unhashed. We also lock the parent inode, in order to guarantee that a problematic d_splice_alias call isn't running at the same time (and thus, we know the dentry will not be unhashed immediately afterwards). This slows down afs_linux_dentry_revalidate for valid negative 'dentry's a little, but it allows us to use negative dentry's at all. Linux kernel commit 4919c5e45a91b5db5a41695fe0357fbdff0d5767 fixes this issue, which was included in 2.6.34, so don't do this workaround for 2.6.34 and on. Change-Id: I8e58ebed4441151832054b1ef3f1aa5af1c4a9b5 Reviewed-on: https://gerrit.openafs.org/12638 Tested-by: BuildBot Reviewed-by: Benjamin Kaduk commit d55b41072ce873210481baa4cae5c7143011869b Author: Stephan Wiesand Date: Mon Jul 24 11:37:54 2017 +0200 Linux 4.13: use designated initializers where required struct path is declared with the "designated_init" attribute, and module builds now use -Werror=designated-init. Cope. And as pointed out by Michael Meffie, struct ctl_table has the same requirement now, so use a designated initializer for the final element of the sysctl table too. Change-Id: I0ec45aac961dcefa0856a15ee218085626a357c7 Reviewed-on: https://gerrit.openafs.org/12663 Reviewed-by: Benjamin Kaduk Tested-by: Benjamin Kaduk commit 030a9849e22f443492342794f436e2c86c98a903 Author: Michael Meffie Date: Fri Jul 7 11:11:12 2017 -0400 afs: fix afs_xserver deadlock in afsdb refresh When setting up a new volume, the cache manager calls afs_GetServer() to setup the server object for each fileserver associated with the volume. The afs_GetServer() function locks afs_xserver and then, among other things, calls afs_GetCell() to lookup the cell info by cell number. When the cache manager is running in afsdb mode, afs_GetCell() will attempt to refresh the cell info if the time-to-live has been exceeded since the last call to afs_GetCell(). During this refresh the AFSDB calls afs_GetServer() to update the vlserver information. The afsdb handler thread and the thread processing the volume setup become deadlocked since the afs_xserver lock is already held at this point. This bug will manifest when the DNS SRV record TTL is smaller than the time the fileservers respond to the GetCapabilities RPC within afs_GetServer() and there are multiple read-only servers for a volume. Avoid the deadlock by using the afs_GetCellStale() variant within afs_GetServer(). This variant returns the memory resident cell info without the afsdb upcall and the subsequent afs_GetServer() call. Change-Id: Iad57870f84c5e542a5ee20f00ea03b3fc87683a1 Reviewed-on: https://gerrit.openafs.org/12652 Tested-by: BuildBot Reviewed-by: Benjamin Kaduk commit a6ad67485bf23084c06e1de1a424b2e375ee70f3 Author: Michael Meffie Date: Tue Jul 11 08:51:08 2017 -0400 afs: restore force_if_down check when getting connections Commit cb9e029255420608308127b0609179a46d9983ad removed the force_if_down check in afs_ConnBySA, which effictively turned on force_if_down flag for every call to afs_ConnBySA. This caused afs_ConnBySA to always return connections, even for server addresses marked down and force_if_down set to 0. One serious consequence of this bug is the cache manager will retry the preferred vlserver indefinitely when it is unreachable. This is because the loop in afs_ConnMHosts always tries hosts in preferred order and expects afs_ConnBySA to return a NULL if the server address has no connections because it is marked down. Restore the check for server addresses marked down to honor the force_if_down flag again so we do not get connections for down servers unless requested. Change-Id: Ia117354929a62b0cedc218040649e9e0b8d8ed23 Reviewed-on: https://gerrit.openafs.org/12653 Tested-by: BuildBot Reviewed-by: Benjamin Kaduk commit a1c072ac562ccf74e5afb8449db1bcef86aef362 Author: Michael Meffie Date: Mon Apr 10 14:23:12 2017 -0400 redhat: fix rpmbuild command line option defaults Fix the handling of default values for the various rpmbuild options which can be given. These have been broken as code was shuffled around over the years. Remove obsolete comments about detecting what to build based on the architecture. Provide the '--without authlibs' option to disable the openafs-authlibs package. Change-Id: I6c8db1f3163ee241f9a4d1282345a0ddeabd284c Reviewed-on: https://gerrit.openafs.org/12596 Reviewed-by: Stephan Wiesand Reviewed-by: Michael Meffie Reviewed-by: Benjamin Kaduk Tested-by: Benjamin Kaduk commit a5bedda935c8147517bcbb56858dd88288fdf9da Author: Christof Hanke Date: Tue Jul 18 12:04:11 2017 +0200 mkvers: fix potential buffer overflow The space allocated for outputFileBuf is only 2 bytes larger than sizeof(VERS_FILE). But we add potentially 4 extra bytes like ".txt" or ".xml". Just allocate enough space for all file suffices. Change-Id: Ic0f97590be208deaf9c4a5c25e21056ea9d2cd6f Reviewed-on: https://gerrit.openafs.org/12657 Tested-by: BuildBot Reviewed-by: Benjamin Kaduk commit d7211350eec18b30e9ccf30f5e95fb58162c637d Author: Andrew Deason Date: Thu Jun 15 15:29:17 2017 -0500 afs_linux_lookup: Avoid d_add on afs_lookup error Currently, afs_linux_lookup looks roughly like this pseudocode: { code = afs_lookup(&vcp); if (!code) { ip = AFSTOV(vcp); error = process_ip(ip); if (error) { goto done; } } process_dp(dp); newdp = d_splice_alias(ip, dp); done: cleanup(); } Note that if there is an error while processing the looked-up inode (ip), we jump over d_splice_alias. But if we encounter an error from afs_lookup itself, we do not jump over d_splice_alias. This means that if afs_lookup encounters any error, we initialize the given dentry (dp) as a negative entry, effectively telling the Linux kernel that the requested name does not exist. This is correct for ENOENT errors, of course, but is incorrect for any other error. For non-ENOENT errors we later return an error from the function, but this does not invalidate the generated dentry. The result is that when afs_lookup encounters an error, that error will be propagated to userspace, but subsequent lookups for the same name will yield an ENOENT error (until the dentry is invalidated). This can easily cause a file to seem to mysteriously disappear, if a transient error like network problems caused the afs_lookup call to fail. To fix this, treat ENOENT as a non-error, like the comments already suggest. In our case, ENOENT is not really an error; it just means we populate the given dentry differently. So if we get ENOENT from afs_lookup, set our vcache to NULL and clear the error, and continue. This also has the side effect of not treating ENOENT errors from afs_CreateAttr identically to ENOENT errors from afs_lookup. That shouldn't happen, but there have been abuses of the ENOENT error code in the past, so it is probably better to be cautious. Many thanks to Gaja Sophie Peters for assistance in tracking down and testing fixes for this issue, including providing access to test systems experiencing the buggy behavior. FIXES 133654 Change-Id: Ia9aab289d5c041557ab6b00f1d41de2edfc97a89 Reviewed-on: https://gerrit.openafs.org/12637 Reviewed-by: Benjamin Kaduk Tested-by: BuildBot Reviewed-by: Joe Gorse Reviewed-by: Michael Meffie Tested-by: Michael Meffie commit 5dd2ce2043f53e80e1ded25abcfd565b4071a3ad Author: Andrew Deason Date: Thu Jun 15 15:29:48 2017 -0500 LINUX: Rearrange afs_linux_lookup cleanup Currently, the cleanup and error handling in afs_linux_lookup is structured similar to this pseudocode: if (!code) { if (!IS_ERR(newdp)) { return no_error; } else { return newdp_error; } } else { return code_error; } The multiple different nested error cases make this a little complex. To make this easier to follow for subsequent changes, alter this structure to be more like this: if (IS_ERR(newdp)) { return newdp_error; } if (code) { return code_error; } return no_error; There should be no functional change in this commit; it is just code reorganization. Technically the ordering of these checks is changed, but there is no combination of conditions that actually results in different code being hit. That is, if 'code' is nonzero and IS_ERR(newdp) is true, then we would go through a different path. But that cannot happen, since if 'code' is nonzero, we have no inode and so IS_ERR(newdp) cannot be true (d_splice_alias cannot return an error for a NULL inode). So there is no functional change. Change-Id: I94a3aef5239358c3d13fe5314044dcc85914d0a4 Reviewed-on: https://gerrit.openafs.org/12636 Reviewed-by: Benjamin Kaduk Tested-by: BuildBot Reviewed-by: Joe Gorse Reviewed-by: Michael Meffie Tested-by: Michael Meffie commit d0b64a4a1b61b5e22f0e3fe509f8facd30bc2b74 Author: Stephan Wiesand Date: Thu Jun 29 16:57:42 2017 +0200 doc: Add introduction and credits to ubik.txt Credit where it's due. And the remainder of the introduction may provide some useful context too. Change-Id: I99c7e599363126c581ae1ac00da67c33acc3687f Reviewed-on: https://gerrit.openafs.org/12644 Tested-by: BuildBot Reviewed-by: Benjamin Kaduk commit d1c4dbf28ae28bbfac3d8bc96d0fa5ae3d422bfd Author: Benjamin Kaduk Date: Sun Jun 25 13:56:04 2017 -0500 Put jhutz's ubik analysis in doc/txt A file in the source tree is much easier to locate than an old mailing list post; it's quite handy to have this at hand as a reference. Change-Id: I5267a2f86b36e92b05249364085bdd33aeb28d1b Reviewed-on: https://gerrit.openafs.org/12642 Tested-by: BuildBot Reviewed-by: Michael Meffie Reviewed-by: Stephan Wiesand Reviewed-by: Benjamin Kaduk commit 0327ead297e3cf395cced1e6690b901e445f074c Author: Andrew Deason Date: Fri Jun 23 17:20:11 2017 -0500 afs: Improve "Corrupt directory" warning This warning is a bit confusing to see, since it doesn't say anything about AFS (making it unclear where it's coming from), and it lacks a trailing newline (making it ugly). Fix both of these. Change-Id: I92a3d07fd193bf99b545aef9b21f52d23c356a2d Reviewed-on: https://gerrit.openafs.org/12641 Tested-by: BuildBot Reviewed-by: Benjamin Kaduk commit cdb92f94598e5b25fbcdfc6fb1650218ec05d63f Author: Jeffrey Altman Date: Thu Jun 1 22:25:49 2017 -0400 vol: modify volume updateDate upon salvage change If the salvager changed the volume, set the VolumeDiskData.updateDate field so that 1. the change is visible via "vos examine" 2. backup services will backup the corrected volume Teradactyl pointed out the problem which forces cell administrators to manually trigger a backup for each volume that has been salvaged. Change-Id: I9a35b92e8abbe3b54b08e64ac13de44442736c72 Reviewed-on: https://gerrit.openafs.org/12629 Tested-by: BuildBot Reviewed-by: Stephan Wiesand Reviewed-by: Benjamin Kaduk commit f5491119ff7d422b1c0c311a50e30bec1c15296c Author: Michael Meffie Date: Fri Jun 2 15:19:26 2017 -0400 bozo: do not fail silently on unknown bosserver options Instead of failing silently when the bosserver is started with an unknown option, print an error message and exit with a non-zero value. Continue to exit with 0 when the -help option is given to request the usage message. This change should help make bosserver startup failures more obvious when an unsupported option is specified. Example systemd status message: systemd[1]: Starting OpenAFS Server Service... bosserver[32308]: Unrecognized option: -bogus bosserver[32308]: Usage: bosserver [-noauth] .... systemd[1]: openafs-server.service: main process exited, code=exited, status=1/FAILURE Change-Id: I8717fb4a788fbcc3d1e2d271dd03511c5b504f10 Reviewed-on: https://gerrit.openafs.org/12630 Tested-by: BuildBot Reviewed-by: Benjamin Kaduk commit aaa47dc1077f0dd5b0040006c831f64cc8a303b5 Author: Jeffrey Altman Date: Sat May 27 14:59:04 2017 -0400 rx: wake up send after 'twind' has been updated Beginning in AFS 3.4 and 3.5 the ack trailer includes the size of the peer's receive window. This value is used to update the sender's transmit window (twind). When the twind is increased the application thread is signaled to indicate that more packets can be sent. This change wakes the application thread after twind is updated by the peer's receive window instead of beforehand. Failure to do so can result in 100ms transmit delays when the receive window transitions from closed to open. Change-Id: Id129ea93e94612a4b8cce9f8cbddde9c779ff26b Reviewed-on: https://gerrit.openafs.org/12625 Reviewed-by: Benjamin Kaduk Tested-by: BuildBot commit 63e530e7df0b8013bcc4421b0bba558d4f1d2d57 Author: Joe Gorse Date: Tue May 16 07:29:30 2017 +0000 LINUX: Switch to new bdi api for 4.12. super_setup_bdi() dynamically allocates backing_dev_info structures for filesystems and cleans them up on superblock destruction. Appears with Linux commit fca39346a55bb7196888ffc77d9e3557340d1d0b Author: Jan Kara Date: Wed Apr 12 12:24:28 2017 +0200 Change-Id: I67eed0fcb8c96733390579847db57fb8a4f0df3e Reviewed-on: https://gerrit.openafs.org/12614 Tested-by: BuildBot Reviewed-by: Benjamin Kaduk commit b47dc5482da614742b01dcc62d5e11d766a9432f Author: Joe Gorse Date: Wed May 10 19:46:38 2017 +0000 LINUX: CURRENT_TIME macro goes away. Check if the macro exists, define it if it does not. Change-Id: I9990579f94bfba0804e60fa6ddcc077984cc46c3 Reviewed-on: https://gerrit.openafs.org/12611 Reviewed-by: Mark Vitale Reviewed-by: Benjamin Kaduk Tested-by: BuildBot commit 7af9554bed2d906615e0f5a94537d3d553ca2d1e Author: Michael Meffie Date: Thu Apr 6 22:50:41 2017 -0400 redhat: update rpm spec file Update the spec file to keep up with accumulated changes. * Correct installation location of db check programs. * Install afsd to the legacy location to avoid breaking init scrips and systemd configs. * Exclude yet another duplicated copy of kpwvalid. * libubik_pthread.a is gone. * Install the kpwvalid man page. * Continue to remove the obsolete kdb program. * Update the names of the pam_afs symlinks. * Add libkopenafs to authlibs. * Package dafssync-debug man pages. * Package opr/queue.h in devel. * Package akeyconvert and man page. * Do not package fuse version of afsd. A separate sub-package for afsd.fuse is warrented, since it adds new libfuse dependencies. * Package new server man pages, including dafsssync-* pages. * Package libafsrfc3961.a as a devel lib. * Continue to package kauth programs. Change-Id: I875c3b8dee53abbc67b0f05f8b291bb58abf41a5 Reviewed-on: https://gerrit.openafs.org/12595 Reviewed-by: Michael Meffie Reviewed-by: Stephan Wiesand Reviewed-by: Benjamin Kaduk Tested-by: Benjamin Kaduk commit dd80f081663c50f93618da7a309b390f2fbdbc59 Author: Tim Creech Date: Sun Mar 5 18:13:45 2017 -0500 FBSD: build fix for FreeBSD 11 r285819 eliminated b_saveaddr from struct buf, while r292373 changed the arguments to VOP_GETPAGES. The approach used by this patch to address these changes was inspired by FreeBSD's nfs and samba clients. Change-Id: Ibcf6b6fde6c86f96aa814af2bca08f1a8b286740 Reviewed-on: https://gerrit.openafs.org/12575 Reviewed-by: Benjamin Kaduk Tested-by: BuildBot commit dcfebc7ca2923c1f93df9105e493bd4228ea8a0e Author: Michael Meffie Date: Wed Apr 5 16:48:36 2017 -0400 redhat: convert rpm spec file to make install Convert the build and install from the deprecated 'make dest' to the modern 'make install' method. * Clarify the install section by unrolling the shell scripts, reorganizing, and improving the comments. * Remove the gzip glob of the man pages; rpmbuild automatically compresses the man pages and will handle symlinks correctly. * Remove the generated temporary list file and specify files directly. * Remove the extra tar commands to install the man pages out of the doc directory; 'make install..' installs the man pagess. * Remove code in the install section which determines the sysname. This is no longer needed during the install. * Update the kernel module install commands to accommodate the conversion from 'make dest'. Change-Id: I97ec80185a2b11704b27ea74941b50ff4a5aca8c Reviewed-on: https://gerrit.openafs.org/12594 Reviewed-by: Benjamin Kaduk Tested-by: Benjamin Kaduk commit bd8bec5b474315cd28df5a4741c1e07d48c7250a Author: Michael Meffie Date: Tue Apr 25 18:34:47 2017 -0400 redhat: fix whitespace errors in the rpm spec file Remove trailing whitespace characters that have crept into the rpm spec file over the years. Change-Id: I08c7ad926ddb524d6938b26513963c28c70b4195 Reviewed-on: https://gerrit.openafs.org/12606 Reviewed-by: Stephan Wiesand Reviewed-by: Benjamin Kaduk Tested-by: Benjamin Kaduk commit 6b7b4239ab22fbb301e3b50e2ca4072445ba4e9e Author: Stephan Wiesand Date: Tue Apr 11 11:58:55 2017 +0200 Linux: only include cred.h if it exists Commit c89fd17df1032ec2eacc0d0c9b73e19c5e8db7d2 introduced an explicit include of linux/cred.h since the latest kernel no longer includes it implicitly in sched.h. Alas, older kernels (like 2.6.18) don't have this file. Add a configure test for the existence of cred.h and only include it if actually present. Change-Id: Ia7e38160492b1e03cdb257e4b2bef4d18c4a28fb Reviewed-on: https://gerrit.openafs.org/12593 Reviewed-by: Benjamin Kaduk Tested-by: BuildBot commit c89fd17df1032ec2eacc0d0c9b73e19c5e8db7d2 Author: Mark Vitale Date: Thu Mar 23 18:36:44 2017 -0700 Linux v4.11: cred.h is no longer included in sched.h With Linux commit e26512fea5bcd6602dbf02a551ed073cd4529449, cred.h is no longer included in sched.h. Several components of libafs which require cred.h were picking it by including sched.h. Instead, explicitly add an include for cred.h. cred.h begins with a customary one-shot to prevent multiple loads: #ifndef _LINUX_CRED_H #define _LINUX_CRED_H Therefore we don't need a new autoconf test or preprocessor conditional to prevent redundant includes on older Linux releases. Change-Id: Ifc496c83141d2cfbd417133feb6d87c1146e5014 Reviewed-on: https://gerrit.openafs.org/12574 Tested-by: Mark Vitale Tested-by: BuildBot Reviewed-by: Joe Gorse Tested-by: Joe Gorse Reviewed-by: Benjamin Kaduk Reviewed-by: Michael Meffie commit ad001550949b612ff6b4899fa8da50ee58f87533 Author: Mark Vitale Date: Thu Mar 23 15:10:03 2017 -0700 Linux v4.11: signal stuff moved to sched/signal.h In Linux commit c3edc4010e9d102eb7b8f17d15c2ebc425fed63c, signal_struct and other signal handling declarations were moved from sched.h to sched/signal.h. This breaks existing OpenAFS autoconf tests for recalc_sigpending() and task_struct.signal->rlim, so that the OpenAFS kernel module can no longer build. Modify OpenAFS autoconfig tests to cope. Change-Id: Ic9f174b92704eabcbd374feffe5fbeb92c8987ce Reviewed-on: https://gerrit.openafs.org/12573 Tested-by: BuildBot Reviewed-by: Joe Gorse Tested-by: Joe Gorse Reviewed-by: Benjamin Kaduk Reviewed-by: Michael Meffie commit de5ee1a67d1c3284d65dc69bbbf89664af70b357 Author: Joe Gorse Date: Mon Mar 20 14:30:46 2017 +0000 Linux v4.11: getattr takes struct path With Linux commit a528d35e8bfcc521d7cb70aaf03e1bd296c8493f statx: Add a system call to make enhanced file info available The Linux getattr inode operation is altered to take two additional arguments: a u32 request_mask and an unsigned int flags that indicate the synchronisation mode. This change is propagated to the vfs_getattr*() function. - int (*getattr) (struct vfsmount *, struct dentry *, struct kstat *); + int (*getattr) (const struct path *, struct kstat *, + u32 request_mask, unsigned int sync_mode); The first argument, request_mask, indicates which fields of the statx structure are of interest to the userland call. The second argument, flags, currently may take the values defined in include/uapi/linux/fcntl.h and are optionally used for cache coherence: (1) AT_STATX_SYNC_AS_STAT tells statx() to behave as stat() does. (2) AT_STATX_FORCE_SYNC will require a network filesystem to synchronise its attributes with the server - which might require data writeback to occur to get the timestamps correct. (3) AT_STATX_DONT_SYNC will suppress synchronisation with the server in a network filesystem. The resulting values should be considered approximate. This patch provides a new autoconf test and conditional compilation to cope with the changes in our getattr implementation. Change-Id: Ie4206140ae249c00a8906331c57da359c4a372c4 Reviewed-on: https://gerrit.openafs.org/12572 Reviewed-by: Joe Gorse Tested-by: Joe Gorse Tested-by: BuildBot Reviewed-by: Michael Meffie Reviewed-by: Mark Vitale Reviewed-by: Benjamin Kaduk commit c666bfee8848183ccbc566c9e0fa019088e56505 Author: Jonathon Weiss Date: Thu Nov 10 17:06:18 2016 -0500 Prevent double-starting client on RHEL7 On RHEL7 if the AFS client is stopped with 'service openafs-client stop', but that fails for some reason (most commonly because some process has a file or directory in AFS open) systemd will decide that the openafs-client is in a failed state when it is actually running. If one then runs 'service openafs-client start' systemd will start a new AFS client. At this point AFS access will continue to work until the functional AFS client is (successfully) stopped, at which point a reboot is required to recover. Have systemd check the status of 'fs sysname' before starting the AFS client, so we avoid getting into a state that requires a reboot. Change-Id: I28a5cca746823d69183ea5ce65c10e1725009c5c Reviewed-on: https://gerrit.openafs.org/12443 Tested-by: BuildBot Reviewed-by: Michael Meffie Reviewed-by: Benjamin Kaduk commit d2721be299c124d76b611ab2980c51be148fa1a7 Author: Benjamin Kaduk Date: Mon Feb 20 22:18:09 2017 -0600 XBSD: do not claim AFS_VM_RDWR_ENV The AFS_VM_RDWR_ENV configuration parameter (defined or not defined in each platform's param.h) is undocumented, but appears to be an indication of a property of the platform OS's VFS layer, or perhaps just of the complexity of the read/write vnops that we implement for it. That is, AFS_VM_RDWR_ENV is defined when the read/write vnops implement partial write logic (and presumably when they interact with the OS VM layer in ways not expressed by the afs_write() abstraction); systems that do not define AFS_VM_RDWR_ENV can use the afs_write() function fairly directly as the vnode operation. Use of AFS_VM_RDWR_ENV evolved over time, with the original (AFS 3.2/3.3-era) code using a simple scheme that handled partial writes directly in afs_write() and avoided complexity in callers. In AFS 3.4, sunos and solaris gained a more complicated read/write vnop that incorporated the afs_DoPartialWrite() call itself, and eventually in 3.6 we see the behavior established at the original IBM import, with all the (Unix) OSes supported at that time defining AFS_VM_RDWR_ENV. When DARWIN support was brought in in commit a41175cfbbf4d06ccfe14ae54bef8b7464ecd80b, its param.h properly did not define AFS_VM_RDWR_ENV, as OS X uses a VFS interface that shares some level of abstraction with the traditional BSD VFS and its read/write/getpages/putpages operations, so the afs_write() behavior was natural and no extra complications needed for integration with the VM layer or other optimizations. However, when the initial FreeBSD support came in a few months later, it seems to have taken inspiration from the OSes that were supported in the initial IBM import, and kept the AFS_VM_RDWR_ENV definition. This was then propagated to all the later BSDs as they were added. Perhaps the most noticeable consequence of this definition is that the calls to afs_DoPartialWrite() from afs_write() are bypassed, with a comment that "[i]f write is implemented via VM, afs_DoPartialWrite() is called from the high-level write op" (and calls to afs_FakeOpen() and afs_FakeClose() are similarly skipped). This means that attempting to write a file larger than the local cache will hang waiting for more space to be freed, which will never happen as the vcache remains locked and will not be written out in the background. In the absence of a documented meaning for AFS_VM_RDWR_ENV, this also gives us a proxy that can be used to indicate whether a given OS's support intended to claim the AFS_VM_RDWR_ENV -- such platforms will actually contain the call to afs_DoPartialWrite() in the appropriate vnode operation. This can be used to sanity-check the places where AFS_VM_RDWR_ENV is removed by this commit. Interestingly, HP-UX does not call afs_DoPartialWrite() but also is clearly in a VFS that uses a rdwr()-based approach, as the corresponding vnode operation is implemented by mp_afs_rdwr(), so leave it unchanged for now. Tim Creech is responsible for noting the lack of calls to afs_DoPartialWrite() on FreeBSD, and Chaskiel Grundman for the historical research into pre-OpenAFS AFS behavior. Designing and implementing more complicated BSD read/write vnops that incorporate afs_DoPartialWrite() and other improvements is left for future work. Change-Id: I8e89855ac31303934f97d0753b64899fb7e3867c Reviewed-on: https://gerrit.openafs.org/12520 Tested-by: BuildBot Reviewed-by: Antoine Verheijen Reviewed-by: Tim Creech Reviewed-by: Benjamin Kaduk commit 2421da2bf327525216ec7e79b9aa81fa2c4f77d5 Author: Marcio Barbosa Date: Tue Jan 31 11:43:18 2017 -0300 vol: detach offline volumes on dafs Taking a volume offline always clears the inService bit. Taking a volume out of service also takes it offline. Therefore, if the inService flag is false, the volume in question should be offline. On dafs, an offline volume should be unattached. The attach2() function does not change the state of the volume received as an argument to unattached when the inService flag is false. Instead, this function changes the state of the volume in question to pre-attached and returns VNOVOL to the client. As result, subsequent accesses to this volume will make the server try and fail to attach this offline volume over and over again, writing to the FileLog each time. To fix this problem, detach the volume received as an argument if the inService flag is false. Since the new state of this volume will be unattached, subsequent accesses will not hit attach2(). This situation where a volume is not offline but is also not in service can occur if a volume is taken offline with vos offline and some time later the DAFS fileserver is shutdown and restarted; the volume is placed into the preattach state by default when the server restarts. Each access to the volume by clients then causes the fileserver to attempt to attach the volume, which fails, since the in-service flag in the volume header is false from the previous vos offline. The fileserver will log a warning to the FileLog on each attempt to attach the volume, and this will fill the FileLog with duplicate messages corresponding to the number of attempted accesses. Change-Id: Ifce07c83c1e8dbf250b88b847d331234bdaa9df5 Reviewed-on: https://gerrit.openafs.org/12515 Tested-by: BuildBot Reviewed-by: Benjamin Kaduk commit 22d841a45fff7026318b529a41dd957ce8bb0ddf Author: Mark Vitale Date: Tue Feb 28 18:02:39 2017 -0500 SOLARIS: prevent BAD TRAP panic with Studio 12.5 Starting with Solaris Studio 12.3, it is documented that Solaris kernel modules (such as libafs) must not use any floating point, vector, or SIMD/SSE instructions on x86 hardware. However, each new Studio compiler release (12.4 and especially 12.5) is more likely to use these types of instructions by default. If the libafs kernel module includes any forbidden kernel instructions, Solaris will panic the system with: BAD TRAP: type=7 (#nm Device not available) Provide a new autoconfig test to specify the required compiler options (-xvector=%none -xregs=no%float) when building the OpenAFS kernel module for Solaris, so that no invalid x86 instructions are used. In addition, reinstate default kernel module optimization for Solaris. It had been disabled in commit 80592c53cbb0bce782eb39a5e64860786654be9f to address this same issue in Studio 12.3 and 12.4. However, Studio 12.5 started using some SSE instructions even with no optimization. This commit has been tested with OpenAFS master and Studio 12.5 at all optimization levels (none, -xO1 through -xO5) and verified to contain no XMM register instructions via the following command: $ gobjdump -dlr libafs64.o | grep xmm | wc -l Change-Id: Ic3c7860f7d524162fd9178a1dab5dd223722ee43 Reviewed-on: https://gerrit.openafs.org/12558 Tested-by: BuildBot Reviewed-by: Benjamin Kaduk commit 38a3f51fb8b3910ecdd7cacb06f35ec681990aea Author: Mark Vitale Date: Mon Feb 20 20:16:47 2017 -0500 DAFS: do not save or restore host state if CPS in progress If a fileserver is shutdown while one or more PR_GetHostCPS calls are in progress, this state is saved in the fsstate.dat file as hostFlags HCPS_WAITING, HCPS_INPROGRESS. Other hosts that are merely waiting will have HCPS_WAITING recorded. However, it makes no sense to restore host structs in this state, because the GetCPS calls will no longer be in progress. Once these hosts become active, they will block server threads and quickly cause all server threads to be exhausted as other CPS requests are blocked behind them. Instead, exclude these states from both save and restore. Change-Id: I3fad67b70c96dc967d6f8e3a7b393cfda076c91d Reviewed-on: https://gerrit.openafs.org/12561 Reviewed-by: Benjamin Kaduk Tested-by: BuildBot commit bd15a5f56fde98983464acf5fd4cdd731d206d9f Author: Stephan Wiesand Date: Thu Mar 2 12:52:10 2017 +0100 doc: clarify the fs wscell manpage What's displayed by fs wscell is not necessarily the current content of ThisCell, but that at the time of starting the client. Say so. FIXES 133339 Change-Id: Id3351f1236e5061340eb07041d4ce3e4de69a1a1 Reviewed-on: https://gerrit.openafs.org/12537 Tested-by: BuildBot Reviewed-by: Benjamin Kaduk commit d39e7c7af77b4e1b043611e1a6e78267f5f956ef Author: Marcio Barbosa Date: Thu Mar 2 18:01:48 2017 -0300 osx: build afscell only for active architecture The InstallerPlugins framework provided by the MacOSX10.12.sdk does not define symbols for architecture i386. As a result, the OpenAFS code cannot be built on OS X 10.12. To fix this problem, build the afscell xcode project only for active architecture. Change-Id: I2a2bd5694826b668fceb7402567fba1d0f128479 Reviewed-on: https://gerrit.openafs.org/12531 Reviewed-by: Benjamin Kaduk Tested-by: BuildBot commit 2a13973985bc7e190364d208c590ec42dbccf81b Author: Michael Meffie Date: Thu Jun 11 13:14:27 2015 -0400 libafs: vldb cache timeout option (-volume-ttl) The unix cache manager caches VLDB information for read-only volumes as long as a volume callback is held for a read-only volume. The volume callback may be held as long as files in the read-only volume are being accessed. The cache manager caches VLDB information for read/write volumes as long as volume level errors (such as VMOVED) are not returned by a fileserver while accessing files within the volume. Add a new option to set the maximum amount of time VLDB information will be cached, even if a callback is still held for a read-only volume, or no volume errors have been encounted while accessing files in read/write volumes. This avoids situations where the vldb information is cached indefinitely for read-only and read/write volumes. Instead, the VL servers will be periodically probed for volume information. Change-Id: I5f2a57cdaf5cbe7b1bc0440ed6408226cc988fed Reviewed-on: https://gerrit.openafs.org/11898 Tested-by: BuildBot Reviewed-by: Michael Meffie Reviewed-by: Benjamin Kaduk commit 3893ed397283b0c3605def102004a645a325d476 Author: Michael Meffie Date: Mon Feb 27 01:40:51 2017 -0500 SOLARIS: update convert from ancient _depends_on Commit 37db7985fde9e6a5e71ae628d0b7124a27bf31c3 modernized how we declare module dependencies on Solaris 10 and newer. Instead of explicitly specifying recent Solaris version numbers, specify old versions for the old method. This should be more future proof. Thanks to Ben Kaduk for the suggestion. Change-Id: I7b3c90803825e2c0736548b56deb354183e81b15 Reviewed-on: https://gerrit.openafs.org/12529 Tested-by: BuildBot Reviewed-by: Benjamin Kaduk commit 69aadea298825f1f224406064b83d1a947abf96b Author: Michael Meffie Date: Sat Feb 25 20:33:00 2017 -0500 build: update search paths for solaris cc Move the macros to search for the solaris cc to a separate macro and update the search paths to keep up with released versions. Change-Id: Iaba816f1acf5f45d4e147ae517e73949eb8fe949 Reviewed-on: https://gerrit.openafs.org/12528 Reviewed-by: Benjamin Kaduk Tested-by: BuildBot commit 6ea6c182c7fb6c22dafbbf203abcc23726e06cba Author: Sergio Gelato Date: Wed Feb 22 13:55:33 2017 -0800 LINUX: Debian/Ubuntu build regression on kernel 3.16.39 Now that kernel 4.9 has hit jessie-backports, it becomes desirable to also backport the associated openafs patches. Unfortunately, Linux-4.9-inode_change_ok-becomes-setattr_prepare.patch causes a build failure against jessie's current default kernel, 3.16.39-1, due to the fact that setattr_prepare() is available (it was cherrypicked to address CVE-2015-1350) but file_dentry() is not (it was introduced in kernel 4.6). This makes it difficult to have a version of openafs for jessie that supports both kernels. To deal with this, follow the implementation of file_dentry() in 4.6, and simplify it to account for the lack of d_real() support in older kernels. Note that inode_change_ok() has been added back to 3.16.39-1 to avoid ABI changes. That means the current openafs packages in jessie continue to work with kernel 3.16.39-1 since they do not include Linux-4.9-inode_change_ok-becomes-setattr_prepare.patch. Originally reported at https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=855366 FIXES RT134158 Change-Id: I157aa2ff25945c1c6e3b8e4a600557125711a681 Reviewed-on: https://gerrit.openafs.org/12523 Tested-by: BuildBot Reviewed-by: Michael Meffie Reviewed-by: Benjamin Kaduk commit 789319bf0f2b26ad67995f8cbe88cee87a1bbdc0 Author: Mark Vitale Date: Wed Dec 7 11:11:45 2016 -0500 Linux 4.10: have_submounts is gone Linux commit f74e7b33c37e vfs: remove unused have_submounts() function (v4.10-rc2) removes have_submounts from the tree after providing a replacement (path_has_submounts) for its last in-tree caller, autofs. However, it turns out that OpenAFS is better off not using the new path_has_submounts. Instead, OpenAFS could/should have stopped using have_submounts() much earlier, back in Linux v3.18 when d_invalidate became void. At that time, most in-tree callers of have_submounts had already been converted to use check_submounts_and_drop back in v3.12. At v3.18, a series of commits modified check_submounts_and_drop to automatically remove child submounts (instead of returning -EBUSY if a submount was detected), then subsumed it into d_invalidate. The end result was that VFS now implicitly handles much of the housekeeping previously called explicitly by the various filesystem d_revalidate routines: - shrink_dcache_parent - check_submounts_and_drop - d_drop - d_invalidate All in-tree filesystem d_revalidate routines were updated to take advantage of this new VFS support. Modify afs_linux_dentry_revalidate to no longer perform any special handling for invalid dentries when D_INVALIDATE_IS_VOID. Instead, allow our VFS caller to properly clean up any invalid dentry when we return 0. Change-Id: I0c4d777e6d445857c395a7b5f9a43c9024b098e9 Reviewed-on: https://gerrit.openafs.org/12506 Reviewed-by: Michael Meffie Tested-by: BuildBot Reviewed-by: Benjamin Kaduk commit 961cee00b8f5c302de5f66beb81caa33242c7971 Author: Joe Gorse Date: Thu Feb 16 18:01:50 2017 -0500 LINUX: Bring debug symbols back to the Linux kernel module. Starting with 4.8 Linux kernels our existing build script generator, make_kbuild_makefile.pl, does not pass the debugging symbols CFLAGS that were present when building for previous kernels. This fix appends the $(KERN_DBG) variable which will only be defined when the configuration includes the --enable-debug-kernel option. Change-Id: I9a85dc0311a3a706239bc9e471b2d7197ebe1946 Reviewed-on: https://gerrit.openafs.org/12519 Reviewed-by: Benjamin Kaduk Tested-by: Benjamin Kaduk commit 9bc6fd9312a2be591cc831d9b0afd91e53eec6fc Author: Michael Meffie Date: Fri Feb 10 10:39:09 2017 -0500 build: add --without-swig to override swig check Add the --without-swig option to disable the automatic swig detection and disable the optional features which depend on swig. This allows builders to avoid swig even if present on the build system. Also, add the --with-swig option to force the check and fail if not detected. This allows builders to declare the swig features are mandatory. The default continues to be to check for swig, and if present, build the optional features which require swig. To disable the automatic check for swig and disable the features which depend on swig: ./configure --without-swig # or --with-swig=no To force the check and fail if swig is not present on the system: ./configure --with-swig # or --with-swig=yes If --with-swig is given and swig is not detected, then configure will fail with the message: configure: error: swig requested but not found The Perl 5 bindings for libuafs is the only feature which requires swig at this time. Change-Id: I0726658a9cc7b1b2a9d5e5d306adb6e36ad3c0f6 Reviewed-on: https://gerrit.openafs.org/12518 Tested-by: BuildBot Reviewed-by: Benjamin Kaduk commit dd97cb7a7447313dbc1da65104786fe03ede7c8d Author: Andrew Deason Date: Fri Feb 10 01:29:28 2017 -0600 PERLUAFS: Modernize lang-specific swig typemaps Currently, our swig bindings for PERLUAFS define a couple of typemaps like so: %typemap(in, numinputs=1, perl5) (char *READBUF, int LENGTH) { [...] } Embedding the target language name in the typemap arguments is a very old way of specifying what language the typemap is for; they were removed after swig 1.1. With swig 3.0.x releases (and possibly others), the specific combination of this deprecated syntax and some other features we're using causes a segfault. That's clearly a bug in swig, but we shouldn't be using the deprecated syntax anyway. Update this to instead use preprocessor symbols to specify language-specific typemaps (#ifdef SWIGPERL). We only actually define these for perl right now, so make sure to throw an error if we're not running for perl. FIXES 134103 Change-Id: I14264a2dfada53d99413808ed5d60b79b1ee44f3 Reviewed-on: https://gerrit.openafs.org/12517 Tested-by: BuildBot Reviewed-by: Michael Meffie Reviewed-by: Benjamin Kaduk commit 5dc53812df9e5a42fa822c9b890c1b8a442bed64 Author: Anders Kaseorg Date: Tue Dec 6 10:48:31 2016 -0500 AFS_component_version_number.c: Respect SOURCE_DATE_EPOCH if set To improve build reproducibility, if the SOURCE_DATE_EPOCH environment variable is set, use it to deterministically replace the embedded build date, and do not include the username or hostname in this case. https://wiki.debian.org/ReproducibleBuilds/TimestampsProposal Change-Id: I9ba951f1836385ffd14aad95f071bf8c672a01bb Reviewed-on: https://gerrit.openafs.org/12471 Tested-by: BuildBot Reviewed-by: Benjamin Kaduk commit 872a63bbfb04addbdc17dc5c09ec018bb9ddf515 Author: Michael Meffie Date: Mon Jan 9 23:55:32 2017 -0500 redhat: move the klog.krb5 man page to openafs-krb5 Move the klog.krb5 man page to the openafs-krb5 package, which distributes the klog.krb5 binary, instead of the general openafs package. Change-Id: I6dc3896f330bb0c639cc75155f611ddaf11b9b75 Reviewed-on: https://gerrit.openafs.org/12509 Tested-by: BuildBot Reviewed-by: Benjamin Kaduk commit b146c2d54ff3bd99f2c4674eb88d5af417a194d7 Author: Michael Meffie Date: Thu Jan 12 12:27:36 2017 -0500 SOLARIS: fix for AFS_PAG_ONEGROUP_ENV for Solaris 11 Fix a bug introduced in commit aab1e71628e6a4ce68c5e59e2f815867438280d1 in which a pointer was incorrectly checked for a NULL value. Fixes a crash when a PAG is set on Solaris. # mdb unix.1 vmcore.1 > ::status ... panic message: BAD TRAP: type=e (#pf Page fault) rp=fffffffc802ba8f0 addr=0 occurred in module "afs" due to a NULL pointer dereference > ::stack pag_to_gidset+0x145() setpag+0xcc() AddPag+0x3a() afs_setpag+0x58() Afs_syscall+0x115() The crash occurs since gidslot is NULL during the assignment: *gidslot = pagvalue; Change-Id: Ic4d50c6b046d10faa49cd4363692e0302707583d Reviewed-on: https://gerrit.openafs.org/12508 Reviewed-by: Benjamin Kaduk Tested-by: BuildBot commit a92a3a0675d941536103b60d708a6b3305b9b8fa Author: Marcio Barbosa Date: Wed Jan 11 06:05:04 2017 -0800 osx: let prefpane knows where binaries can be found Starting from OS X 10.11, the OpenAFS binaries were moved to the following directories: /opt/openafs/bin and /opt/openafs/sbin. However, the OpenAFS prefpane is not aware of the change mentioned above. As a result, some functionalities provided by the OpenAFS prefpane are not working properly. To fix this problem, add the new paths to the proper environment variable. Change-Id: Idaa2f0329af2092cf9ad1d63f1a01300b150227a Reviewed-on: https://gerrit.openafs.org/12507 Tested-by: BuildBot Reviewed-by: Benjamin Kaduk commit 19599b5ef5f7dff2741e13974692fe4a84721b59 Author: Mark Vitale Date: Sat Jan 7 06:22:47 2017 -0500 LINUX: eliminate unused variable warning Commit c3bbf0b4444db88192eea4580ac9e9ca3de0d286 added routine osi_TryEvictDentries and included new logic for D_INVALIDATE_IS_VOID. Unfortunately, this new code path no longer uses dentry; it also should have been made conditional at that time. Wrap the declaration of dentry in #ifndef D_INVALIDATE_IS_VOID to eliminate the unused variable warning. Change-Id: I89c1430ba984539ca775da2540ea966030de0701 Reviewed-on: https://gerrit.openafs.org/12505 Tested-by: BuildBot Reviewed-by: Benjamin Kaduk commit 2207dcdaad40beed29b0326153dbb76bdf91564d Author: Michael Meffie Date: Tue Jan 3 14:41:36 2017 -0500 cleanup afs_args.h Collect the syscall op code (AFSOP_) defines in one section and cleanup the use of whitespace and tabs. This should be a non-functional change. Change-Id: I1ba763a445b938fcb3677a388a703e1405ee166e Reviewed-on: https://gerrit.openafs.org/12501 Tested-by: BuildBot Reviewed-by: Benjamin Kaduk commit aab1e71628e6a4ce68c5e59e2f815867438280d1 Author: Andrew Deason Date: Sat Aug 8 16:49:50 2015 -0500 SOLARIS: Use AFS_PAG_ONEGROUP_ENV for Solaris 11 On Solaris 11 (specifically, Solaris 11.1+), the supplemental group list for a process is supposed to be sorted. Starting with Solaris 11.2, more authorization checks are done that assume the list is sorted (e.g., to do a binary search), so having them out of order can cause incorrect behavior. For example: $ echo foo > /tmp/testfile $ chmod 660 /tmp/testfile $ sudo chown root:daemon /tmp/testfile $ cat /tmp/testfile foo $ id -a uid=100(adeason) gid=10(staff) groups=10(staff),12(daemon),20(games),21(ftp),50(gdm),60(xvm),90(postgres) $ pagsh $ cat /tmp/testfile cat: cannot open /tmp/testfile: Permission denied $ id -a uid=100(adeason) gid=10(staff) groups=33536,32514,10(staff),12(daemon),20(games),21(ftp),50(gdm),60(xvm),90(postgres) Solaris sorts the groups given to crsetgroups() on versions which required the group ids to be sorted, but we currently manually put our PAG groups in our own order in afs_setgroups(). This is currently required, since various places in the code assume that PAG groups are the first two groups in a process's group list. To get around this, do not require the PAG gids to be the first two gids anymore. To more easily identify PAG gids in group processes, use a single gid instead of two gids to identify a PAG, like modern Linux currently uses (under the AFS_PAG_ONEGROUP_ENV). High-numbered groups have been possible for quite a long time on Solaris, allegedly further back than Solaris 8. Only do this for Solaris 11, though, to reduce the platforms we affect. [mmeffie@sinenomine.net: Define AFS_PAG_ONEGROUP_ENV in param.h.] Change-Id: I44023ee8aa42f3f69bb0c8a8e9178abd513951a1 Reviewed-on: https://gerrit.openafs.org/11979 Reviewed-by: Benjamin Kaduk Tested-by: BuildBot commit 97fec642e591762391e6d453874ff9b5c9ba0c1e Author: Benjamin Kaduk Date: Mon Dec 26 12:15:35 2016 -0600 afsd_kernel: remove gratuitous OS dependence Commit 94c15f62 in 2010 gave NetBSD and only NetBSD the debug printing of errno and the strerror() output, with no justification in the commit message. In the interest of unifying behavior and avoiding unnecessary OS dependence, give all platforms the errno and strerror() behavior. [mmeffie@sinenomine.net: print errno iff syscall returns -1.] Change-Id: If3c4e0ded54bbd4d5c2573f7d7ee1c82ee3e7223 Reviewed-on: https://gerrit.openafs.org/12500 Tested-by: BuildBot Reviewed-by: Benjamin Kaduk commit 481047d2a2660609091dc04253d136f527469ceb Author: Michael Meffie Date: Mon Sep 12 22:21:59 2016 -0400 afsd: print syscalls on separate lines with afsd -debug afsd prints information to standard out for testing and debugging when the -debug option is given. However, syscall tracing is emitted without trailing newlines on all platforms except netbsd, creating an unreadable wall of text. # afsd -debug ... afsd: Forking 4 background daemons. SScall(183, 28, 0)=0 183, 28, 6583200)=0 SScall(183, 28, 6583 200)=0 SScall(183, 28, 6583200)=0 SScall(183, 28, 6583200)=0 S Scall(183, 28, 6583200)=0 SScall(183, 28, 6583200)=0 SScall(18 ... Make the syscall call tracing usable by printing each one on a separate line. # afsd -deubg ... afsd: Forking 4 background daemons. SScall(183, 28, 0)=0 183, 28, 6583200)=0 SScall(183, 28, 6583200)=0 SScall(183, 28, 6583200)=0 ... Change-Id: Ic9208243c1e05352744fb6f575384e00d0e3e59c Reviewed-on: https://gerrit.openafs.org/12385 Tested-by: BuildBot Reviewed-by: Benjamin Kaduk commit 9c0db059b6585959e151f7acce845de280952c55 Author: Michael Meffie Date: Mon Sep 26 11:19:13 2016 -0400 vol: convert vnode macros to inline functions Convert the vnode macros to inline functions to fix integer overflows for very large vnode numbers (and generally improve the code robustness and readability). The macro version of vnodeIndexOffset() will evaluate to an incorrect offset for very large vnode numbers due to 32-bit integer overflow. The vnode index file will then be corrupted when writing to the incorrect offset. In code paths where the vnode number incorrectly defined as a signed 32-bit integer, this change prevents vnodeIndexOffset() from evaluating to a negative result when a vnode number is larger than 2^31. Thanks to Mark Vitale for reporting and providing analysis. Change-Id: Ia6e0f2d2f97fa1091e0b5a4029d40098692ee681 Reviewed-on: https://gerrit.openafs.org/12397 Tested-by: BuildBot Reviewed-by: Benjamin Kaduk commit 0ae62bfa99df8ef5d85b4848783f59a041f82828 Author: Michael Meffie Date: Fri Jun 3 15:33:19 2016 -0400 doc: add the PtLog man page Clone the VLLog man page to create a man page for ptserver log as well. Fix the spelling of the PtLog file and add a link to the new PtLog man page in the ptserver man page. Add the missing PtLog log file name to the bos getlog man page. Change-Id: I95ad4a2cf380077780160ec78fd1f9bdec132ba7 Reviewed-on: https://gerrit.openafs.org/12294 Tested-by: BuildBot Reviewed-by: Benjamin Kaduk commit 9ec765d8b4a327ae36c26e38a84dae215d3a2664 Author: Anders Kaseorg Date: Fri Dec 16 02:43:48 2016 -0500 opr: Make opr_uuid_hash endian-independent And also make sure it doesn’t use unaligned accesses. Fixes a ‘make check’ failure on big-endian architectures. Change-Id: I490174f8d1eecb5f20969b4ef12ff16d0dd3806a Reviewed-on: https://gerrit.openafs.org/12495 Tested-by: BuildBot Reviewed-by: Benjamin Kaduk Reviewed-by: Michael Meffie Tested-by: Michael Meffie commit 5151c03351e8a4d2bd1e212720d7ec9144bf23f0 Author: Anders Kaseorg Date: Fri Dec 16 03:04:18 2016 -0500 opr: Make opr_jhash_opaque consistent with opr_jhash Change-Id: I42e1030f8c841dcb974476012a774b91c87d3fb0 Reviewed-on: https://gerrit.openafs.org/12494 Tested-by: BuildBot Reviewed-by: Michael Meffie Tested-by: Michael Meffie Reviewed-by: Benjamin Kaduk commit 958120b89d62c8567ab00bc697c4fabdfecd46b4 Author: Anders Kaseorg Date: Fri Dec 16 02:16:20 2016 -0500 opr: Make opr_jhash_opaque endian-independent gcc -O2 produces exactly the same code for this on little-endian systems, but now big-endian systems have a chance of passing ‘make check’. Change-Id: Ifc6350648355a0a9f79184439e3f9522cd6f2ffa Reviewed-on: https://gerrit.openafs.org/12493 Reviewed-by: Michael Meffie Tested-by: Michael Meffie Reviewed-by: Benjamin Kaduk commit eb7d3ac4bbd30fc31741cea74fe2b23577deb61e Author: Anders Kaseorg Date: Wed Dec 14 17:52:35 2016 -0500 opr: ExitHandler: re-raise the signal instead of exiting with that code This fixes a ‘make check’ failure introduced by commit 803d15b6aa1e65b259ba11ca30aa1afd2e12accb “vlserver: convert the vlserver to opr softsig”: $ make check … volser/vos..............FAILED 6 … $ cd tests $ ./libwrap ../lib ./runtests -o volser/vos 1..6 ok 1 - Successfully got security class ok 2 - Successfully built ubik client structure ok 3 - First address registration succeeds ok 4 - Second address registration succeeds ok 5 - vos output matches Server exited with code 15 # wanted: 0 # seen: -1 not ok 6 - Server exited cleanly # Looks like you failed 1 test of 6 afstest_StopServer has a check for the process terminating with signal 15 (SIGTERM), but not for the process exiting with code 15. Change-Id: I022965ea2b5440486ea1cf562551d3bbd0516104 Reviewed-on: https://gerrit.openafs.org/12489 Tested-by: Anders Kaseorg Tested-by: BuildBot Reviewed-by: Michael Meffie Reviewed-by: Benjamin Kaduk commit eee532ac13a680bfb4cc857485cbaf5e454ab492 Author: Anders Kaseorg Date: Fri Dec 16 00:29:21 2016 -0500 doc/man-pages/Makefile.in: mkdir man[158] in case we did regen.sh -q Fixes this error: $ git clean -xdf $ ./regen.sh -q $ ./configure $ make […] make[3]: Entering directory '/…/openafs/doc/man-pages' rm -f man*/*.noinstall if [ "no" = "no" ] ; then \ for M in man1/klog.1 man1/knfs.1 […] man8/kpwvalid.8 man1/klog.krb.1; do \ touch $M.noinstall; \ done; \ fi touch: cannot touch 'man1/klog.1.noinstall': No such file or directory touch: cannot touch 'man1/knfs.1.noinstall': No such file or directory […] touch: cannot touch 'man8/kpwvalid.8.noinstall': No such file or directory touch: cannot touch 'man1/klog.krb.1.noinstall': No such file or directory Makefile:34: recipe for target 'prep-noinstall' failed make[3]: *** [prep-noinstall] Error 1 make[3]: Leaving directory '/…/openafs/doc/man-pages' Change-Id: I95098fb2b27f1d87fc9769497b225e9f91f72266 Reviewed-on: https://gerrit.openafs.org/12492 Tested-by: BuildBot Reviewed-by: Michael Meffie Reviewed-by: Benjamin Kaduk commit 93a7e754a44c333140e75e93cac09f61320f7cc9 Author: Anders Kaseorg Date: Wed Dec 14 15:47:21 2016 -0500 tests/opr/softsig-t: Avoid hanging due to intermediate sh -c If the build directory happened to contain shell metacharacters, like the ~ in /build/openafs-vb8tid/openafs-1.8.0~pre1 used by the Debian builders, Perl was running softsig-helper via an intermediate sh -c, which would then intercept the signals we tried to send to softsig-helper. Use the list syntax to avoid this sh -c. Change-Id: I054b9c8f606e197accb414bfe3f89719255c62c4 Reviewed-on: https://gerrit.openafs.org/12488 Tested-by: BuildBot Reviewed-by: Benjamin Kaduk commit 9fd396adabaa1868517fdb3d7cfcbe9412c35b0b Author: Benjamin Kaduk Date: Thu Dec 15 22:12:01 2016 -0600 tests: use exec to call libwrap'd executables No need to leave the shell process hanging around. In particular, if we are manually running softsig-helper under libwrap to debug test failures, the child process of the shell is another shell, which interprets some signals that we wanted to be passed through, like SIGTERM. On the other hand, once the softsig-helper is exec()'d, you basically need another shell to terminate it, which is a different problem.... Change-Id: Iff7c519886a018cb68e692746d40c427b6299457 Reviewed-on: https://gerrit.openafs.org/12490 Tested-by: BuildBot Reviewed-by: Anders Kaseorg Tested-by: Anders Kaseorg Reviewed-by: Benjamin Kaduk commit 8b2c4665aabece187759157bda0e26c4b566dd2f Author: Michael Meffie Date: Tue Aug 16 12:56:47 2016 -0400 tests: fix signo to signame lookup in opr/softsig tests Fix the loop condition when scanning the signal number to name table to convert a signal number to a name. Instead of looping sizeof(size_t) times, loop for the number of elements in the table. This bug was masked on 64 bit-platforms, since the signal number to name table table currently has 8 elements, which is coincidently the same as sizeof(size_t) on 64-bit platforms. The bug becomes apparent on 32-bit systems; only the first 4 elements of the table are checked. Example error output before this fix: $ cd tests $ ./libwrap ../lib ./runtests -o opr/softsig 1..11 ok 1 ok 2 ok 3 ok 4 ok 5 not ok 6 # Failed test in ./opr/softsig-t at line 57. # got: 'Received UNK # ' # expected: 'Received TERM # ' not ok 7 # Failed test in ./opr/softsig-t at line 60. # got: 'Received UNK # ' # expected: 'Received USR1 # ' not ok 8 # Failed test in ./opr/softsig-t at line 63. # got: 'Received UNK # ' # expected: 'Received USR2 # ' ok 9 - Helper exited on KILL signal. ok 10 - Helper exited on SEGV signal. ok 11 # skip Skipping buserror test; SIGBUS constant is not defined. # Looks like you failed 3 tests of 11. Change-Id: I863cc9f3650c4a5e9ac9159d90e063b986a8460a Reviewed-on: https://gerrit.openafs.org/12367 Tested-by: BuildBot Reviewed-by: Benjamin Kaduk commit 1d8cb56999a4ab25ae4cbc8e8a688b8100aedd3b Author: Neale Ferguson Date: Thu Dec 8 11:47:09 2016 -0500 s390: desupport 32-bit Linux kernels on s390/s390x Remove the obsolete and custom lwp assembler for the s390 and s390x architectures. That assembler is no longer needed since 32-bit mainframe Linux distributions are no longer supported and are very unlikely to be in use. The generic process.default.s is sufficient for modern 64-bit Linux distributions on s390/s390x. [mmeffie@sinenomine.net: commit message wording] Change-Id: I654b10dfc257e7de90c9a50048982427276f4d61 Reviewed-on: https://gerrit.openafs.org/12475 Reviewed-by: Mark Vitale Tested-by: BuildBot Reviewed-by: Benjamin Kaduk commit b5e4e8c14130f601bbf43dee5927222ebf7613fa Author: Mark Vitale Date: Tue Jan 12 18:06:51 2016 -0500 afs: fs getcacheparms miscounts dcaches for large files fs getcacheparms issued with the -excessive option tabulates in-memory dcaches ("DCentries") by size. However, any dcache with validPos > 2^31 is miscounted in the 4k-16k bucket. This is caused by a type mismatch between 'validPos' (afs_size_t) and 'size' (int) which leads to a negative value for size by sign-extension. The size comparison "sieve" fails for negative numbers; it skips the first bucket (0-4K) and dumps them in the second one (4k-16k). Move the declaration of 'size' closer to its use, and declare it with the same type as 'validPos' (afs_size_t) so the comparison sieve correctly places these dcaches in the last (>=1M) bucket. Change-Id: Ib0d973da92865043a4f1c068de5e9b81bcde2b9a Reviewed-on: https://gerrit.openafs.org/12347 Reviewed-by: Stephan Wiesand Tested-by: BuildBot Reviewed-by: Benjamin Kaduk commit c966c0b8414ef0a041b1a8d5261c9eccd4d39d99 Author: Mark Vitale Date: Tue Jan 12 17:50:36 2016 -0500 afs: fs getcacheparms miscounts zero-length dcaches When fs getcacheparms is issued with the -excessive option, it tabulates all in-memory dcaches ("DCentries") by size. dcaches with validPos == 0 were being tabulated in the 4k-16k bucket. Fix the first comparison in the 'sieve' so these dcaches will be counted in the correct 0-4k bucket instead. Introduced by commit 176c2fddb95ced6c13e04e7492fc09b5551f273c Change-Id: I60acb0f115dad9f7951f0b17e5b3e37dc94321b9 Reviewed-on: https://gerrit.openafs.org/12346 Reviewed-by: Stephan Wiesand Reviewed-by: Benjamin Kaduk Tested-by: BuildBot