commit a1c3d3eeab02eb1919bb96c653c4e2aec9e3fdb9 Author: Stephan Wiesand Date: Sun Oct 10 19:49:56 2021 +0200 Make OpenAFS 1.8.8.1 Update configure version strings for 1.8.8.1. Note that macos kext can be of form XXXX.YY[.ZZ[(d|a|b|fc)NNN]] where d dev, a alpha, b beta, f final candidate so we have no way to represent 1.8.8.1. Switch to 1.8.9 dev 1 for macOS. Change-Id: I329a48142a6baaedd190d07a1215ba93b0ecce42 Reviewed-on: https://gerrit.openafs.org/14828 Tested-by: BuildBot Reviewed-by: Michael Meffie Reviewed-by: Mark Vitale Reviewed-by: Stephan Wiesand commit ef16f671c999a371e50c79bb4e63a05f45f3c86d Author: Stephan Wiesand Date: Wed Dec 8 19:18:41 2021 +0100 Update NEWS for 1.8.8.1 Release notes for the 1.8.8.1 point release Change-Id: I5c1912439464f64a298739f9ba3e55397e86d29a Reviewed-on: https://gerrit.openafs.org/14852 Reviewed-by: Stephan Wiesand Tested-by: Stephan Wiesand commit b927414ffc8a14015e663a24245287b093ee77a8 Author: Cheyenne Wills Date: Tue Nov 16 10:55:30 2021 -0700 LINUX-5.16: Use linux/stdarg.h if available Global use of the compiler option '-isystem' was removed from the top level Makefile with Linux commit ('isystem: delete global -isystem compile option' 04e85bbf7). This results with an error due to not finding "stdarg.h" when building the openafs kernel module. .../src/rx/rx_kcommon.h:143:12: fatal error: stdarg.h: No such file or directory 143 | # include "stdarg.h" | ^~~~~~~~~~ Linux-5.15, introduced a copy of stdarg.h as 'linux/stdarg.h' in commit ('isystem: ship and use stdarg.h' c0891ac15) Add a test for the linux/stdarg.h include file and if available, use "linux/stdarg.h" instead of "stdarg.h" within the Linux kernel module. Reviewed-on: https://gerrit.openafs.org/14844 Tested-by: BuildBot Reviewed-by: Benjamin Kaduk (cherry picked from commit 3daa6e97330d23ae46c4389e4041c61c1a1d76d9) Change-Id: I6347d09b3ffc73e3524c83830e2f2bbd2958121f Reviewed-on: https://gerrit.openafs.org/14851 Tested-by: BuildBot Reviewed-by: Cheyenne Wills Reviewed-by: Mark Vitale Reviewed-by: Michael Meffie Reviewed-by: Stephan Wiesand commit 1935c63a776620eb7d2173a11cac039223115a19 Author: Cheyenne Wills Date: Fri Nov 12 14:42:57 2021 -0700 Linux 5.15: Convert osi_Msg macro to a function With Linux 5.15-prerc1 printk is defined as a macro instead of a function ("printk: Userspace format indexing support" 33701557) This change is causing a build failure: .../src/rx/rx_kernel.h:62:18: error: ‘printk’ undeclared (first use in this function); did you mean ‘_printk’? 62 | # define osi_Msg printk)( | ^~~~~~ The definition and use of the osi_Msg and osi_VMsg macros are unconventional and the C preprocessor is not handling the macro expansion when printk is itself a macro. #define osi_Msg printk)( ... (osi_Msg "%s", x); Change osi_Msg to a function, and simply replace osi_VMsg with vprintf since osi_VMsg is only used at one location within user space code. osi_Msg is implemented in 2 locations, in rx_kcommon for kernel space and in rx_user for userspace. Note: The unconventional definitions of osi_Msg/osi_VMsg was historical and due to older compilers not supporting variadic macros. All of the currently support platforms should now support variadic functions. Reviewed-on: https://gerrit.openafs.org/14791 Tested-by: BuildBot Reviewed-by: Michael Meffie Reviewed-by: Andrew Deason Reviewed-by: Benjamin Kaduk (cherry picked from commit 22876c8b88f8e5e92f08b230e5e1959499f0c406) Change-Id: I48a67b2fe79b45403414bb7d962c29c9be07262e Reviewed-on: https://gerrit.openafs.org/14831 Reviewed-by: Michael Laß Tested-by: BuildBot Reviewed-by: Cheyenne Wills Reviewed-by: Mark Vitale Reviewed-by: Michael Meffie Reviewed-by: Stephan Wiesand commit 2b326cd96d6ee5140a6ca7e408d1056137edfef9 Author: Mark Vitale Date: Mon Sep 16 01:37:33 2019 -0400 SOLARIS: add autoconfig support for Studio 12.6 Add the canonical install path for Studio 12.6 to the autoconfig test. Reviewed-on: https://gerrit.openafs.org/13867 Tested-by: Mark Vitale Reviewed-by: Michael Meffie Tested-by: BuildBot Reviewed-by: Benjamin Kaduk (cherry picked from commit fe6798d0d9e4df006ef96612b5c6e07fcc757b7e) Change-Id: Iad5a43eb22c8a76af6ce7e73d77de913d3c2d8e0 Reviewed-on: https://gerrit.openafs.org/14841 Reviewed-by: Cheyenne Wills Tested-by: BuildBot Reviewed-by: Michael Meffie Reviewed-by: Benjamin Kaduk Reviewed-by: Stephan Wiesand commit 3f33dc825ca9bf475547800d6ab0f72d75e98fb1 Author: Cheyenne Wills Date: Thu Oct 7 11:15:58 2021 -0600 LINUX 5.14: explicitly set set_page_dirty to default Linux 5.14 commit: 'mm: require ->set_page_dirty to be explicitly wired up' (0af573780b0b13) removed calling __set_page_dirty_buffers when the address_space_operations structure member set_page_dirty was NULL. A kernel RIP error can occur when the set_page_dirty operation is requested. (Reproducible by running 'iozone -B -a') Update the definition for afs_file_aops to explicitly set the 'set_page_dirty' member to '__set_page_dirty_buffers'. There are no functional changes, since this commit is using the same function that the Linux kernel was using if set_page_dirty had been NULL. Problem originally reported by "Andrej Filipcic" in the openafs-info mailing list. The Linux 5.14 commit causing the openafs failure was identified by "Michael Laß" also on in the openafs-info mailing list. Note: The declaration for the function '__set_page_dirty_buffers' was moved from linux/mm.h into linux/buffer_head.h in Linux 2.6.19. Since this is close to the minimum supported Linux version 2.6.18, we are not introducing an additional autoconf test to determine which header file the declaration for __set_page_dirty_buffers resides in. Reviewed-on: https://gerrit.openafs.org/14826 Tested-by: BuildBot Reviewed-by: Mark Vitale Tested-by: Michael Laß Reviewed-by: Michael Laß Tested-by: Cheyenne Wills Reviewed-by: Ralf Brunckhorst Tested-by: Ralf Brunckhorst Reviewed-by: Benjamin Kaduk (cherry picked from commit ba485a13e965909b63b25103fdf810de381e4977) Change-Id: Iae61573e5ccf9458646eba4403322536fd86f2bf Reviewed-on: https://gerrit.openafs.org/14830 Tested-by: BuildBot Reviewed-by: Cheyenne Wills Reviewed-by: Michael Laß Reviewed-by: Stephan Wiesand commit 284850b2f7ce2ca6ebdcb8918acd3ca02ae2c98b Author: Andrew Deason Date: Mon Nov 2 13:11:49 2020 -0600 rx: Reorganize LWP rxi_Sendmsg to use 'goto error' Our LWP version of rxi_Sendmsg can allocate an fd_set, but we don't free the fd_set if sendmsg() returns certain errors afterwards. To make sure we go through the same cleanup code for the different possible error code paths, reorganize the function to go through a 'goto error'-style destructor. This also makes our return codes a bit more consistent; we should always return -errno now for errors. Reviewed-on: https://gerrit.openafs.org/14422 Reviewed-by: Mark Vitale Tested-by: BuildBot Reviewed-by: Cheyenne Wills Reviewed-by: Benjamin Kaduk (cherry picked from commit 7239565b0fea8504deebc5bd43c4fa1ea80fcb17) Change-Id: I7291ea5f339f26c5c1a64b65893e2cb33ebfe623 Reviewed-on: https://gerrit.openafs.org/14825 Reviewed-by: Michael Meffie Reviewed-by: Cheyenne Wills Tested-by: BuildBot Reviewed-by: Andrew Deason Reviewed-by: Stephan Wiesand commit 40e322e73b3abb6ecde322da80afc75a5c941b8c Author: Andrew Deason Date: Sat Apr 25 17:20:54 2020 -0500 rx: Indent ifdef maze in rx_kernel.h Change-Id: I3a10206234496b9de6f7ddeafebdee8ab10e5546 Reviewed-on: https://gerrit.openafs.org/14161 Tested-by: BuildBot Reviewed-by: Tim Creech Reviewed-by: Benjamin Kaduk (cherry picked from commit 70f3ac5d04a02470366a980224fdf8fadb31b463) Reviewed-on: https://gerrit.openafs.org/14811 Reviewed-by: Michael Meffie Reviewed-by: Cheyenne Wills Reviewed-by: Stephan Wiesand commit 7dba3a2059cba3a85f120843ec8dba196df6f160 Author: Benjamin Kaduk Date: Fri Sep 25 09:22:16 2020 -0700 FBSD: avoid vrefl() Commit 20dc2832268eb (correctly) introduced changes so that we avoid interacting with vnodes marked as VI_DOOMED to the extent possible, but in doing so inadvertendly used the vrefl() KPI that was only introduced in FreeBSD 11.0. Rewrite the relevant logic to use the older vref() KPI, at the cost of a few more unlock/locks, in order to have a single codepath that works on all supported FreeBSD versions. Reviewed-on: https://gerrit.openafs.org/14373 Reviewed-by: Andrew Deason Reviewed-by: Benjamin Kaduk Tested-by: Benjamin Kaduk (cherry picked from commit 81ea654494f5c90f67eb54adbb722a95e0d11d82) Change-Id: Ia48380bb7498fcf5d0b6b68fe153d4459612a3b6 Reviewed-on: https://gerrit.openafs.org/14795 Tested-by: BuildBot Reviewed-by: Andrew Deason Reviewed-by: Tim Creech Reviewed-by: Cheyenne Wills Reviewed-by: Stephan Wiesand commit 66fee093ad98d9b0025b24110e13533fb5c14357 Author: Andrew Deason Date: Sun Nov 24 22:36:17 2019 -0600 FBSD: Ignore VI_DOOMED vnodes Currently on FreeBSD, osi_TryEvictVCache calls vgone() for our vnode after checking if the given vcache is in use. vgone() then calls our VOP_RECLAIM operation, which calls afs_vop_reclaim, which calls afs_FlushVCache to finally actually flush the vcache. The current approach has at least the following major issues: - In afs_vop_reclaim, we return success even if afs_FlushVCache() fails. This allows FreeBSD to reuse the vnode for another file, but the vnode is still being referenced by our vcache, which is referenced by the global VLRU and various other structures. This causes all kinds of weird errors, since we try to use the underlying vnode for different files. - After the relevant checks in osi_TryEvictVCache are done, another thread can acquire a new reference to our vcache (this can happen while vgone() is running up until the vnode is locked). This new reference will cause afs_FlushVCache to fail. - Our afs_vop_reclaim callback is called while the vnode is locked, and can acquire afs_xvcache. Other code locks the vnode while afs_xvcache is already held (such as afs_PutVCache -> vrele). This can lead to deadlocks if two threads try to run these codepaths for the same vnode at the same time. - afs_vop_reclaim optionally acquires afs_xvcache based on the return value of CheckLock(&afs_xvcache). However, CheckLock just returns if that lock is locked by anyone, not if the current thread holds the lock. This can result in the rest of the function running without afs_xvcache actually being held if we drop AFS_GLOCK at any point. - osi_TryEvictVCache() tries to vn_lock() the target vnode, but we may already have another vnode locked in the current thread. If the vnode we're trying to evict is a descendant of a vnode we already have locked, this can deadlock. To fix these issues, make some changes to how our vcache management works on FreeBSD: - Do not allow anyone to hold a new reference on a VI_DOOMED vnode. We do this by checking for VI_DOOMED in osi_vnhold, and returning an error if VI_DOOMED is set. - In afs_vop_reclaim, panic if afs_FlushVCache fails. With the new VI_DOOMED check, afs_FlushVCache show now never fail; and if it somehow does, panic'ing immediately is better than corrupting various structures and panic'ing later on. - Move around some of the relevant locking in afs_vop_reclaim to fix the lock-related issues. - In osi_TryEvictVCache, don't wait for the vnode lock (LK_NOWAIT); treat the vnode as "in use" if we can't immediately obtain the lock. Thanks to tcreech@tcreech.com and kaduk@mit.edu for insight and help investigating the relevant issues. FIXES 135041 Reviewed-on: https://gerrit.openafs.org/13972 Tested-by: BuildBot Reviewed-by: Benjamin Kaduk (cherry picked from commit 20dc2832268eb81d40e798da0d424c98cf26062c) Change-Id: I91e464ce2fa90d7baf593c0b813f52f1fc45b481 Reviewed-on: https://gerrit.openafs.org/14794 Tested-by: BuildBot Reviewed-by: Andrew Deason Reviewed-by: Tim Creech Reviewed-by: Cheyenne Wills Reviewed-by: Stephan Wiesand commit 33b672918f1c282c4d74934e132e41357c9a4fdd Author: Andrew Deason Date: Mon Nov 18 23:17:12 2019 -0600 afs: Refactor osi_vnhold/AFS_FAST_HOLD Make a few changes to osi_vnhold and AFS_FAST_HOLD: - Currently, the second argument of osi_vnhold ("retry") is never used by any implementation. Get rid of it. - AFS_FAST_HOLD() is the same as osi_vnhold(). Get rid of AFS_FAST_HOLD, and just have all callers use osi_vnhold instead. - Allow osi_vnhold to return an error, and adjust callers to handle it. - Change osi_vnhold to be a real function, instead of a macro, to make nontrivial implementations less cumbersome. Most platforms never return an error from osi_vnhold(), so the added code paths to check the return value of osi_vnhold() will not trigger. However, this lets us add future commits that do make osi_vnhold() return an error. Reviewed-on: https://gerrit.openafs.org/13971 Tested-by: BuildBot Reviewed-by: Benjamin Kaduk (cherry picked from commit 13e44b2b200cd99d0df4e03cf6413d3a6915783f) Change-Id: Ia3e1c4e45a870cd095f90adc66880eb524a10c1f Reviewed-on: https://gerrit.openafs.org/14793 Tested-by: BuildBot Reviewed-by: Andrew Deason Reviewed-by: Tim Creech Reviewed-by: Cheyenne Wills Reviewed-by: Stephan Wiesand commit 981ed6c25c7640783ffbfd7591c0dfadbc4d0f42 Author: Andrew Deason Date: Tue Nov 26 23:39:24 2019 -0600 FBSD: Avoid holding AFS_GLOCK during vinvalbuf Currently we call vinvalbuf(9) in a few places while holding AFS_GLOCK, but AFS_GLOCK is a non-sleepable lock (struct mtx), and vinvalbuf can sleep. This can trigger a panic in some rare conditions, with the message: Sleeping thread (tid 100179, pid 95481) owns a non-sleepable lock To avoid this, drop AFS_GLOCK around a few places that call vinvalbuf(). Reviewed-on: https://gerrit.openafs.org/13970 Reviewed-by: Benjamin Kaduk Tested-by: BuildBot (cherry picked from commit 61993cf45a648906abb865756d5a98d9c2d7cc40) Change-Id: I1b4d6d7d9d4cd54091cfd8e168a928c08cb643e5 Reviewed-on: https://gerrit.openafs.org/14792 Tested-by: BuildBot Reviewed-by: Andrew Deason Reviewed-by: Tim Creech Reviewed-by: Cheyenne Wills Reviewed-by: Stephan Wiesand commit f3ce4d55ff8c87d2aab521b501d97f909f1a94d5 Author: Andrew Deason Date: Sat Dec 21 18:34:20 2019 -0600 FBSD: Use CK_STAILQ_FOREACH for ifaces on FBSD 12 FreeBSD 12 changed how network interfaces and network addresses are linked together; we're supposed to use CK_STAILQ_FOREACH to traverse them now, instead of TAILQ_FOREACH. To try to keep this change simpler, introduce a new macro, AFS_FBSD_NET_FOREACH, which picks the right macro to use. Based on a commit by tcreech@tcreech.com. Reviewed-on: https://gerrit.openafs.org/13999 Reviewed-by: Tim Creech Reviewed-by: Benjamin Kaduk Tested-by: BuildBot (cherry picked from commit 7c89322c45605c90c8ce27a77695a1c291f0def4) Change-Id: I1530213a447ecf09dde47987fdd7b3df489dc490 Reviewed-on: https://gerrit.openafs.org/14781 Tested-by: BuildBot Reviewed-by: Andrew Deason Reviewed-by: Tim Creech Reviewed-by: Cheyenne Wills Reviewed-by: Stephan Wiesand commit 20b9f245a1e11377b30db36a2fd2622fd14e7004 Author: Tim Creech Date: Sat Dec 21 18:22:40 2019 -0600 FBSD: Add proper locks when traversing net ifaces When traversing the list of network interfaces, or the list of addresses for a network interface, we're supposed to lock the relevant resource with IFNET_RLOCK, if_addr_rlock, or IN_IFADDR_RLOCK. Add these locks around our code that examines network interfaces, to avoid issues if the interface or address list changes while we're traversing them. While we're doing this, move around some "AFS_DARWIN_ENV || AFS_FBSD_ENV" ifdefs, since these were getting a bit hard to read. This commit adds some duplicated code, but the result should be easier to follow. Also for FreeBSD 12, we must be in NET_EPOCH_ENTER when calling ifa_ifwithnet/rx_ifaddr_withnet (it panics if we don't, with INVARIANTS). Add the needed NET_EPOCH_ENTER/EXIT calls, but do so a bit higher up the call stack, since the returned structures are potentially no longer valid after we NET_EPOCH_EXIT. Since this means we're calling these in a few places in libafs, create a couple of rx abstractions (RX_NET_EPOCH_ENTER) to handle the relevant ifdefs. [adeason@dson.org: Various adjustments to locking calls; splitting up DARWIN/FBSD ifdefs.] Reviewed-on: https://gerrit.openafs.org/13998 Reviewed-by: Tim Creech Reviewed-by: Benjamin Kaduk Tested-by: BuildBot (cherry picked from commit 9e98d61ff41709cee8d484be1ecd638a18e2ce0f) Change-Id: I240d03d892107179f07acf5d76aa49371ef0bec4 Reviewed-on: https://gerrit.openafs.org/14780 Reviewed-by: Andrew Deason Reviewed-by: Tim Creech Reviewed-by: Cheyenne Wills Reviewed-by: Stephan Wiesand Tested-by: Stephan Wiesand commit 9b655ef47b75118bd092131fcf5e195e806c0858 Author: Andrew Deason Date: Fri Dec 20 21:02:45 2019 -0600 vol: Avoid building devname.c on AFS_NAMEI_ENV Everything in devname.c is for the inode vol backend, so skip building it when AFS_NAMEI_ENV is defined. While we're doing this, alter the #ifdefs inside this file to assume that we're not on XBSD, DARWIN, or LINUX, since those platforms are all namei-only. Reviewed-on: https://gerrit.openafs.org/13995 Tested-by: BuildBot Reviewed-by: Benjamin Kaduk (cherry picked from commit 80afdc2adabb098394e1b2178ba301964868befe) Change-Id: I54a7cc4f845283ff15f7b91d5d3523a1df42c3af Reviewed-on: https://gerrit.openafs.org/14788 Reviewed-by: Andrew Deason Reviewed-by: Tim Creech Reviewed-by: Cheyenne Wills Reviewed-by: Stephan Wiesand Tested-by: Stephan Wiesand commit 259385e6b092fff51682a1d7ef26b311c2a7198a Author: Andrew Deason Date: Fri Dec 20 21:01:13 2019 -0600 vol: Indent ifdef maze in devname.c Reviewed-on: https://gerrit.openafs.org/13994 Tested-by: BuildBot Reviewed-by: Benjamin Kaduk (cherry picked from commit 99eedfdb1659dd48d12542ad063d4711d401e153) Change-Id: I6db316d3557fb8165b11afb9089fa4c3cded070b Reviewed-on: https://gerrit.openafs.org/14787 Reviewed-by: Andrew Deason Reviewed-by: Tim Creech Reviewed-by: Cheyenne Wills Reviewed-by: Stephan Wiesand Tested-by: Stephan Wiesand commit 65314bc0533810b33dd77f1da23c6420bf03b108 Author: Tim Creech Date: Thu Aug 29 21:35:36 2019 -0400 FBSD: Accommodate 12.0's 64-bit inodes In FreeBSD 12 (see: https://reviews.freebsd.org/rS318736), the layout of struct dirent changed to allow for 64-bit inodes and a few other changes. Update our struct min_direct to accommodate, to allow our readdir() results to be accurate. Without this, readdir() can yield garbage entries, due to the mismatch in the structure definitions. Reviewed-on: https://gerrit.openafs.org/13854 Tested-by: BuildBot Reviewed-by: Benjamin Kaduk (cherry picked from commit 14cbd02b8a1a4f1d3c30dd4fb2864d35f39a95eb) Change-Id: I5218fdf315aac71a7cdf488879b88d476f97f2d3 Reviewed-on: https://gerrit.openafs.org/14786 Reviewed-by: Andrew Deason Reviewed-by: Tim Creech Reviewed-by: Cheyenne Wills Reviewed-by: Stephan Wiesand Tested-by: Stephan Wiesand commit c7f45c4d4ecef9298cab9e40fdd7e5a86b4363d5 Author: Tim Creech Date: Thu Aug 29 22:12:41 2019 -0400 FBSD: Use VM_CNT_INC/VM_CNT_ADD on FreeBSD 12 r317061 changed where v_vnodein &c are stored. Use the new VM_CNT_INC/VM_CNT_ADD macros when available to accommodate. Reviewed-on: https://gerrit.openafs.org/13859 Tested-by: BuildBot Reviewed-by: Tim Creech Reviewed-by: Benjamin Kaduk (cherry picked from commit e50e5ede55497b0c02647d21905f4134919fbf05) Change-Id: I099fbfc91640c411ac582141a926e0eae7ce80d9 Reviewed-on: https://gerrit.openafs.org/14785 Reviewed-by: Andrew Deason Reviewed-by: Tim Creech Reviewed-by: Cheyenne Wills Reviewed-by: Stephan Wiesand Tested-by: Stephan Wiesand commit 59f763ccc0f0e2363af0c743b2306c105d682f62 Author: Tim Creech Date: Thu Aug 29 22:13:20 2019 -0400 FBSD: Handle missing LINK_MAX LINK_MAX was removed in r327598. When we don't have a LINK_MAX, just use its value from before it was removed (32767). Reviewed-on: https://gerrit.openafs.org/13860 Tested-by: BuildBot Reviewed-by: Tim Creech Reviewed-by: Benjamin Kaduk (cherry picked from commit 0066f4e9f27fedc4cf4df52eaf10d35ae5c7ad6e) Change-Id: I9e91c4d892bc6b276065d34bc7220a240d6b6fcd Reviewed-on: https://gerrit.openafs.org/14784 Reviewed-by: Andrew Deason Reviewed-by: Tim Creech Reviewed-by: Cheyenne Wills Reviewed-by: Stephan Wiesand Tested-by: Stephan Wiesand commit ca7b6324fec6ad54ea7e4a1a1f716bdeeb994a1c Author: Tim Creech Date: Thu Aug 29 21:55:05 2019 -0400 FBSD: Use syscall "helper" functions syscall_register/syscall_deregister were effectively removed in r329647. Use syscall_helper_register/syscall_helper_unregister instead, which have existed since r205321 in FreeBSD 9. Reviewed-on: https://gerrit.openafs.org/13858 Reviewed-by: Tim Creech Reviewed-by: Benjamin Kaduk Tested-by: BuildBot (cherry picked from commit 2add334454019b4a8fd979fb16da686cf93b56c6) Change-Id: I68037c7fc8e5a1b399bd49ff7bcccacdfd1a7643 Reviewed-on: https://gerrit.openafs.org/14783 Reviewed-by: Andrew Deason Reviewed-by: Tim Creech Reviewed-by: Cheyenne Wills Reviewed-by: Stephan Wiesand Tested-by: Stephan Wiesand commit 7159be738388c6e8f3239539aca81c861ad9f533 Author: Andrew Deason Date: Sun Dec 1 15:27:01 2019 -0600 FBSD: Remove support for 8.x and 9.x According to , FreeBSD 8.x EoL was on August 1, 2015, and FreeBSD 9.x EoL was on December 31, 2016. Remove our support for these versions, since they haven't been supported by FreeBSD itself for a while. FreeBSD 10.x EoL was on October 31, 2018, which has passed, but was less than a year ago. So keep 10.x in for now. Adjust our preprocessor checks accordingly: - In FBSD-specific dirs, assume AFS_FBSD100_ENV and lower is always true. Assume __FreeBSD_version is always at least 1000000. - In non-FBSD dirs, convert AFS_FBSD100_ENV and lower to AFS_FBSD_ENV. Reviewed-on: https://gerrit.openafs.org/13842 Tested-by: BuildBot Reviewed-by: Benjamin Kaduk (cherry picked from commit a4e9365fff2b0e3daf7e9cf2b40e6027b7dd3a15) Change-Id: If92991dead88bf8d18b837ef4661731c7fc2edbb Reviewed-on: https://gerrit.openafs.org/14782 Reviewed-by: Andrew Deason Reviewed-by: Tim Creech Reviewed-by: Cheyenne Wills Reviewed-by: Stephan Wiesand Tested-by: Stephan Wiesand commit a5b8d15925bc73b5cd1ee45f26f3ca302d9e075b Author: Tim Creech Date: Thu Aug 29 21:40:26 2019 -0400 FBSD: Handle malloc/free changes in FBSD 12 FreeBSD 12 (r328417) removed the deprecated compatibility macros MALLOC and FREE. Convert our users to just use the normal malloc and free, so we can build. FreeBSD 12 (r334545) also changed malloc() into a macro, which breaks our own malloc macro in our hcrypto config.h. To fix this, just undef malloc, if it's already a macro. Reviewed-on: https://gerrit.openafs.org/13856 Tested-by: BuildBot Reviewed-by: Benjamin Kaduk (cherry picked from commit 3bc541743b09f408364a946139c524d53056d40a) Change-Id: I3d2f98dd635480a2eea4e0cdad9c9bb308475695 Reviewed-on: https://gerrit.openafs.org/14773 Reviewed-by: Cheyenne Wills Reviewed-by: Tim Creech Reviewed-by: Andrew Deason Reviewed-by: Stephan Wiesand Tested-by: Stephan Wiesand commit 29f30ed16c6db544f020142c11c4296227eebf99 Author: Jeffrey Altman Date: Fri Oct 2 19:51:06 2020 -0400 rx: compare RX_ACK_TYPE_ACK as a bit-field The rx_ackPacket.acks array (the SACK table) consists of up to 255 octets. Each octet stores either the value zero (RX_ACK_TYPE_NACK) or one (RX_ACK_TYPE_ACK). Effectively only bit-zero of each octet is used. The rx_ackPacket.acks array cannot be enlarged but one possible method of encoding the ACK/NACK state for packets when the window size is greater than 255 is to use bits 1-7 of each octet. This change alters the test for ACK vs NACK to be a bit comparison instead of a equality comparison. This change permits RX to be compatible with any future use of bits 1-7. No peer that treats the SACK table as bytes can ever send more than 255 packets regardless of the advertised receive window. Therefore, existing peers will never receive a SACK table with more than 255 packets worth of bits. Reviewed-on: https://gerrit.openafs.org/14465 Tested-by: BuildBot Reviewed-by: Benjamin Kaduk (cherry picked from commit 7739d1e967177686e91a6ea86c73b404515a1c0d) Change-Id: I59c098414f309bac283017823dff6d491d895db8 Reviewed-on: https://gerrit.openafs.org/14740 Tested-by: BuildBot Reviewed-by: Cheyenne Wills Reviewed-by: Benjamin Kaduk Reviewed-by: Stephan Wiesand