forked from pool/openafs
dfe10ed156
- update to openafs-1.8.11~pre1 - remove intermediate patches for newer Linux-kernels: * fef2457.diff * d15c7ab.diff * 63801cf.diff * 538f450.diff * 6de0a64.diff * 5b647bf.diff * 6413fdb.diff * 4f1d810.diff OBS-URL: https://build.opensuse.org/request/show/1142226 OBS-URL: https://build.opensuse.org/package/show/filesystems/openafs?expand=0&rev=119
2047 lines
90 KiB
Plaintext
2047 lines
90 KiB
Plaintext
commit 47c4fb427a02809a73a8f7024e49ff5f58d2be06
|
||
Author: Stephan Wiesand <stephan.wiesand@desy.de>
|
||
Date: Thu Aug 3 17:35:02 2023 +0200
|
||
|
||
Make OpenAFS 1.8.11pre1
|
||
|
||
Update version strings for the first 1.8.11 prerelease.
|
||
|
||
Change-Id: I161717ae5670a3261ebbc1fe8fe9c13c18868e74
|
||
Reviewed-on: https://gerrit.openafs.org/15527
|
||
Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
|
||
Reviewed-by: Indira Sawant <indira.sawant@ibm.com>
|
||
Reviewed-by: Kailas Zadbuke <kailashsz@in.ibm.com>
|
||
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
|
||
|
||
commit 85d4e2dce876d4bf8b7ebbdafb8b5d357badca2f
|
||
Author: Michael Meffie <mmeffie@sinenomine.net>
|
||
Date: Mon Aug 21 13:23:10 2023 -0400
|
||
|
||
Update NEWS for 1.8.11 pre-release
|
||
|
||
Add NEWS items for the upcoming 1.8.11 release.
|
||
|
||
Change-Id: I0b690b0aa273c05f33e68e1ba086863703266b3b
|
||
Reviewed-on: https://gerrit.openafs.org/15551
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
|
||
Reviewed-by: Michael Laß <lass@mail.uni-paderborn.de>
|
||
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
|
||
|
||
commit 1f63ffef477d63984dbd65bc83955c0e36f9fc44
|
||
Author: Indira Sawant <indira.sawant@ibm.com>
|
||
Date: Wed Dec 20 18:20:53 2023 -0800
|
||
|
||
util: Clear owner when unlocking recursive mutex
|
||
|
||
A race condition where the pthread_recursive_mutex_t::owner that is maintained
|
||
by AFS doesn’t match with the thread that is trying to unlock.
|
||
|
||
This leads to AFS file server and ptserver crash due to assertion failure
|
||
where it was trying to unlock the grmutex.
|
||
|
||
We saw the race more often when our customer migrated their machines from
|
||
Power8 to Power9 systems and increased the SMT value from 2 to 4.
|
||
|
||
fileserver Assertion failed! file keys.c, line 911.
|
||
ptserver Assertion failed! file userok.c, line 78.
|
||
|
||
File: keys.c
|
||
|
||
889 int
|
||
890 afsconf_GetKeyByTypes(struct afsconf_dir *dir, afsconf_keyType type,
|
||
891 int kvno, int subType,struct afsconf_typedKey **key)
|
||
892 {
|
||
893 int code = 0;
|
||
894 struct subTypeList *subTypeEntry;
|
||
895
|
||
896 LOCK_GLOBAL_MUTEX;
|
||
897
|
||
…
|
||
910 out:
|
||
911 UNLOCK_GLOBAL_MUTEX; <<<<
|
||
912 return code;
|
||
913 }
|
||
|
||
Consider a following situation,
|
||
cpu0 , cpu1 and T0, T1 and T2 are the cpus and timestamps respectively,
|
||
|
||
T0: thread1 locks grmutex performs some operations and unlocks the same,
|
||
thus has itself set as pthread_recursive_mutex_t::owner. Since presently we do
|
||
not reset it, thus, pthread_recursive_mutex_t::owner = thread0.
|
||
T1: thread0 starts on cpu0.
|
||
T2: thread1 starts on cpu1.
|
||
T3: thread0 tries to lock AFS grmutex and acquires corresponding pthread_mutex,
|
||
now before thread0 updates pthread_recursive_mutex_t::owner, a context switch
|
||
happens.
|
||
T3: thread1 on cpu1 tries to acquire grmutex and sees itself as the
|
||
pthread_recursive_mutex_t::owner, possibly as it was not reset and updated yet.
|
||
So thread1 thinks itself as the owner and proceeds.
|
||
T4: thread0 updates the pthread_recursive_mutex_t::owner this time it is also
|
||
synced across the cpu caches.
|
||
T5: thread1 tries to unlock the grmutex and crashes because now it’s not the
|
||
owner of the mutex.
|
||
|
||
Debugging:
|
||
|
||
We implemented a circular log to store certain values related to grmutex which
|
||
helped in debugging us this further.
|
||
|
||
({ \
|
||
time_t t; \
|
||
time(&t); \
|
||
LOG_EVENT("%s: Unlocking TID %u: %s:%d owner %lu " \
|
||
"locked %d pthread_self %u times_inside %d\n", \
|
||
ctime(&t), (unsigned)grmutex.mut.__data.__owner,\
|
||
__func__ , __LINE__, \
|
||
grmutex.owner, grmutex.locked, (unsigned)pthread_self(), \
|
||
grmutex.times_inside); \
|
||
opr_Verify(pthread_recursive_mutex_unlock(&grmutex)==0); \
|
||
})
|
||
|
||
$614 = "Mon Sep 11 19:35:34 2023\n: Locking TID 136896:
|
||
afsconf_GetKeyByTypes:896 owner 140735030161776 locked 1
|
||
pthread_self 2305880432 times_inside 1\n\000 2\n",
|
||
|
||
$615 = "Mon Sep 11 19:35:34 2023\n: Unlocking TID 136896:
|
||
afsconf_IsLocalRealmMatch:602 owner 140735030161776 locked 1
|
||
pthread_self 1836773744 times_inside 2\n",
|
||
|
||
$617 = "Mon Sep 11 19:35:34 2023\n: Unlocking TID 136896:
|
||
afsconf_GetKeyByTypes:911 owner 140735030161776 locked 1
|
||
pthread_self 2305880432 times_inside 1\n\000\061\n",
|
||
|
||
Solution:
|
||
|
||
This problem was resolved after resetting thread_recursive_mutex_t::owner in
|
||
global mutex unlock function.
|
||
|
||
Thanks to Todd DeSantis for helping with debugging, review and verification of
|
||
this problem.
|
||
|
||
Signed-off-by: Indira Sawant <indira.sawant@ibm.com>
|
||
Reviewed-on: https://gerrit.openafs.org/15604
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
|
||
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
|
||
(cherry picked from commit e4fda3481dc9ec651377493afbc95bd40f4f1fb2)
|
||
|
||
Change-Id: I400892121d1b1f63adcd6848e774ede1c4ec5da9
|
||
Reviewed-on: https://gerrit.openafs.org/15609
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
|
||
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
|
||
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
|
||
|
||
commit 6edf9d350c6ffd9d5e51fb8106701c1bc2f6a4d9
|
||
Author: Cheyenne Wills <cwills@sinenomine.net>
|
||
Date: Thu Nov 9 10:38:29 2023 -0700
|
||
|
||
Linux 6.7: convert to inode a/mtime accessor funcs
|
||
|
||
The Linux 6.7 commit "fs: new accessor methods for atime and mtime"
|
||
(077c212f03) is a follow up to the Linux 6.6 commit "fs: add ctime
|
||
accessors infrastructure" (9b6304c1d5)
|
||
|
||
With the above 6.7 commit, the inode's i_atime and i_mtime are renamed
|
||
to __i_atime and __i_mtime and accessing these members should use the
|
||
new accessor functions.
|
||
|
||
This commit is similar to the OpenAFS commit "Linux 6.6: convert to
|
||
ctime accessor functions" (072c7934cd1)
|
||
|
||
Add autoconf tests to detect when we need to use the new accessors and
|
||
introduce new wrapper functions to get and set an inode's atime and
|
||
mtime.
|
||
|
||
Note, unlike the (072c7934cd1) commit, we need to add support for
|
||
reading an inode's atime and mtime, so this commit has the getters for
|
||
the atime and mtime members.
|
||
|
||
Reviewed-on: https://gerrit.openafs.org/15597
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
|
||
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
|
||
(cherry picked from commit 8962767a7e27f8db9dc9001999edf573be706d66)
|
||
|
||
Change-Id: If5f58df74f37749b7dfdc52172a8e9573d849ecd
|
||
Reviewed-on: https://gerrit.openafs.org/15600
|
||
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
|
||
Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
|
||
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
|
||
|
||
commit fd527549c2d2b29a955f8c0427ac67c5d49ef38c
|
||
Author: Mark Vitale <mvitale@sinenomine.net>
|
||
Date: Fri Sep 15 15:01:56 2023 -0400
|
||
|
||
dir: Introduce struct DirEntryFlex
|
||
|
||
The directory package as implemented in AFS-2 allocates space for each
|
||
directory entry as a DirEntry struct followed by 0-8 contiguous
|
||
DirXEntry structs, as needed. This is implemented by:
|
||
|
||
- afs_dir_NameBlobs calculates the number of blocks needed
|
||
- FindBlobs allocates and returns index of entry
|
||
- afs_dir_GetBlob returns pointer to 1st DirEntry struct
|
||
|
||
After this, we populate DirEntry (and any contiguous DirXEntry blocks)
|
||
with open code. Most existing code writes the entry's name via a string
|
||
copy operation to DirEntry->name, which is only 16 bytes long.
|
||
Therefore, for dir entry names that are 16 bytes or longer, OpenAFS
|
||
routinely does string copies that look like buffer overruns. This has
|
||
not previously caused problems because the OpenAFS code has arranged for
|
||
a sufficiently large amount of contiguous memory to be available.
|
||
However, this remains undefined behavior in the C abstract virtual
|
||
machine; thus compilers are not required to produce safe operation.
|
||
|
||
Recent changes in the OpenAFS build chain have made this approach no
|
||
longer viable:
|
||
|
||
1) Linux 6.5 commit df8fc4e934c12b 'kbuild: Enable
|
||
-fstrict-flex-arrays=3' modified the hardening of several kernel
|
||
string operations when running with CONFIG_FORTIFY_SOURCE=y.
|
||
|
||
2) gcc 13 commit 79a89108dd352cd9288f5de35481b1280c7588a5
|
||
'__builtin_dynamic_object_size: Recognize builtin' provides some
|
||
enhancements to _builtin_object_size. The Linux commit above will now
|
||
use these when the kernel is built with gcc 13.
|
||
|
||
When OpenAFS is built under Linux 6.5 or higher and gcc 13 or higher,
|
||
the hardened strlcpy will BUG for directory entry names longer than 16
|
||
characters.
|
||
|
||
Since there are multiple places where OpenAFS writes directory names,
|
||
there are several symptoms that may manifest. However, the first one is
|
||
usually a kernel BUG at cache manager initialization if running with
|
||
afsd -dynroot _and_ there are any cell names 15 characters or longer in
|
||
the client CellServDB. (A 15-character cellname reaches the 16
|
||
character limit when -dyrnoot adds the RW mountpoint ".<cellname>".)
|
||
|
||
Address this by using flexible arrays (standardized with C99). A
|
||
flexible array is a variable-length array that is declared with no size
|
||
at all, e.g., name[].
|
||
|
||
Create an autoconf test to determine whether the compiler supports
|
||
flexible arrays.
|
||
|
||
Create a new struct DirEntryFlex. If the compiler supports
|
||
flexible arrays, define name[]; otherwise retain the name[16]
|
||
definition.
|
||
|
||
Whenever we write a directory name, use DirEntryFlex so that any
|
||
hardening will be satisfied that there is sufficient space for the name.
|
||
|
||
However, the actual guarantee that this is true is still provided by the
|
||
OpenAFS directory routines mentioned above - all of these remain
|
||
unchanged.
|
||
|
||
The DirEntry struct remains unchanged for continued use in OpenAFS, as
|
||
well as for any out-of-tree users of the directory package.
|
||
|
||
Reviewed-on: https://gerrit.openafs.org/15573
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
|
||
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
|
||
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
|
||
(cherry picked from commit e2ec16cf941b0aadfbd54fc2f52edd58b62e232d)
|
||
|
||
Change-Id: Ibf6d3549ba1e941c957e98ef4875152d865c9358
|
||
Reviewed-on: https://gerrit.openafs.org/15599
|
||
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
|
||
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
|
||
Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
|
||
Reviewed-by: Michael Laß <lass@mail.uni-paderborn.de>
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
|
||
|
||
commit 9ff262312619f25ca4b36e853e6f79782108f21b
|
||
Author: Mark Vitale <mvitale@sinenomine.net>
|
||
Date: Mon Sep 18 18:41:23 2023 -0400
|
||
|
||
dir: Allow 256-byte directory entry names in salvager
|
||
|
||
Since the original IBM code import, the DirOK test for directory entry
|
||
names has been off-by-1; it says that directory names of length MAXENAME
|
||
256 are "too-long".
|
||
|
||
Modify DirOK to properly validate directory entry names during salvage.
|
||
While here, remove MAXENAME in favor of AFSNAMEMAX.
|
||
|
||
Reviewed-on: https://gerrit.openafs.org/15574
|
||
Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
|
||
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
|
||
(cherry picked from commit 319c1ca87af66425048e498e300e7d8e714fc98a)
|
||
|
||
Change-Id: Ie4355f9867372f99e4cb283a209953fcda949397
|
||
Reviewed-on: https://gerrit.openafs.org/15598
|
||
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
|
||
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
|
||
Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
|
||
Reviewed-by: Michael Laß <lass@mail.uni-paderborn.de>
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
|
||
|
||
commit 56763a199f92101c35d6b9b733302cb08fe0cdbe
|
||
Author: Cheyenne Wills <cwills@sinenomine.net>
|
||
Date: Thu Nov 2 09:46:34 2023 -0600
|
||
|
||
Linux: Fix to use time_t instead of time64_t
|
||
|
||
In commit 'Linux 6.6: convert to ctime accessor functions' (072c7934cd)
|
||
the functiom afs_inode_set_ctime was defined to use time64_t when it
|
||
should have used a time_t as the data type for the sec parameter.
|
||
See the commit 'LINUX 5.6: define time_t and use timespec/timespec64'
|
||
(78049987aa).
|
||
|
||
The time64_t data type was introduced in Linux 3.17. A build failure
|
||
will occur when building on kernels prior to Linux 3.17.
|
||
|
||
Reviewed-on: https://gerrit.openafs.org/15595
|
||
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
(cherry picked from commit a2f77c53073b3999887eb689f396a414b191aba7)
|
||
|
||
Change-Id: Ie14d9ebbcce6a5d2db0fc38eb4d97aa30f574da9
|
||
Reviewed-on: https://gerrit.openafs.org/15596
|
||
Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
|
||
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
|
||
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
|
||
|
||
commit 519918dfed42fd3dc338facdb88f8be205a00383
|
||
Author: Ganesh Chaudhari <gangovind@in.ibm.com>
|
||
Date: Fri Oct 20 16:16:16 2023 +0530
|
||
|
||
macos: Add support for MacOS 14.X (Sonoma)
|
||
|
||
This commit introduces the new set of changes/ files required
|
||
to successfully build and package the OpenAFS source code on
|
||
MacOS 14.X "Sonoma".
|
||
|
||
Signed-off-by: GANESH CHAUDHARI <gangovind@in.ibm.com>
|
||
Reviewed-on: https://gerrit.openafs.org/15591
|
||
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
|
||
Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
|
||
Tested-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
|
||
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
|
||
(cherry picked from commit f379e1b255ebb5094c5acc11a9234d5a321818c2)
|
||
|
||
Change-Id: I913bf9ae5eda0ae571c727e95f9f3ac113df9f64
|
||
Reviewed-on: https://gerrit.openafs.org/15602
|
||
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Ganesh G. Chaudhari <gangovind@in.ibm.com>
|
||
Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
|
||
Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
|
||
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
|
||
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
|
||
|
||
commit 88d3cbbf7e86cc628011c0ba414225400136d57a
|
||
Author: Michael Meffie <mmeffie@sinenomine.net>
|
||
Date: Thu Jan 26 19:30:04 2023 +0100
|
||
|
||
CellServDB update 31 October 2023
|
||
|
||
Update all three copies in the tree, and the rpm specfile.
|
||
|
||
Reviewed-on: https://gerrit.openafs.org/15601
|
||
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
|
||
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
|
||
(cherry picked from commit 26fdb47dba4852f3525db00c6eb72863d92d74fa)
|
||
|
||
Change-Id: I4468ff651da06236543e0c7ac7aee247ed03cfa3
|
||
Reviewed-on: https://gerrit.openafs.org/15603
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
|
||
Reviewed-by: Ralf Brunckhorst <rbrunckhorst@sinenomine.net>
|
||
Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
|
||
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
|
||
|
||
commit 4f1d8104d17d2b4e95c7abaf5498db6b80aefa8f
|
||
Author: Cheyenne Wills <cwills@sinenomine.net>
|
||
Date: Mon Sep 18 12:23:01 2023 -0600
|
||
|
||
Linux 6.6: Pass request_mask to generic_fillattr
|
||
|
||
The Linux 6.6 commit: "fs: pass the request_mask to generic_fillattr"
|
||
(0d72b92883) added an additional parameter to Linux's
|
||
generic_fillattr() function.
|
||
|
||
For openafs, generic_fillattr() is called from the inode_operations
|
||
method "getattr", which is implemented in afs_linux_getattr(). The value
|
||
for the request_mask parameter is an existing parameter that is passed
|
||
to the inode_operations "getattr" method.
|
||
|
||
Add an autoconf test for 4 parameters to the generic_fillattr function
|
||
and update afs_linux_getattr() to pass the request_mask to
|
||
generic_fillattr().
|
||
|
||
Reviewed-on: https://gerrit.openafs.org/15561
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
|
||
Tested-by: Mark Vitale <mvitale@sinenomine.net>
|
||
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
|
||
Reviewed-by: Kailas Zadbuke <kailashsz@in.ibm.com>
|
||
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
|
||
(cherry picked from commit 4fed232b80fb1ad6c0e1dfb42ed8d8e1e6821dd7)
|
||
|
||
Change-Id: I5cddc56c5e605a6c5e4f7f3691eafec8ca589d2c
|
||
Reviewed-on: https://gerrit.openafs.org/15590
|
||
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
|
||
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
|
||
|
||
commit 6413fdbc913834f2884989e5811841f4ccea2b5f
|
||
Author: Cheyenne Wills <cwills@sinenomine.net>
|
||
Date: Thu Oct 5 14:44:49 2023 -0600
|
||
|
||
Linux 6.6: convert to ctime accessor functions
|
||
|
||
The Linux 6.6 commit "fs: add ctime accessors infrastructure"
|
||
(9b6304c1d5) added accessor functions for an inode's ctime member.
|
||
A follow on commit "fs: rename i_ctime field to __i_ctime" (13bc244578)
|
||
changed the name of the inode member ctime to __i_ctime to indicate it's
|
||
a private member.
|
||
|
||
Add an autoconf test for the ctime accessor function
|
||
'inode_set_ctime()'.
|
||
|
||
Add an afs_inode_set_ctime to LINUX/osi_machdep.h that is either defined
|
||
as a macro to Linux's inode_set_ctime, or implements a static inline
|
||
function to set a inode's ctime.
|
||
|
||
Convert the setting of an inode's ctime to use afs_inode_set_ctime().
|
||
|
||
For more information behind the Linux change, see the commit message
|
||
for:
|
||
"Merge tag 'v6.6-vfs.ctime'
|
||
of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs" (615e95831)
|
||
|
||
Reviewed-on: https://gerrit.openafs.org/15560
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
|
||
Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
|
||
Tested-by: Mark Vitale <mvitale@sinenomine.net>
|
||
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
|
||
(cherry picked from commit 072c7934cd1b99052882f02294f7036d422b6cf1)
|
||
|
||
Conflicts:
|
||
src/cf/linux-kernel-func.m4 (context)
|
||
|
||
Change-Id: I729408d12a7946f5778b036ca7e2c14299f3ce8e
|
||
Reviewed-on: https://gerrit.openafs.org/15589
|
||
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
|
||
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
|
||
|
||
commit 6de0a646036283266e1d4aeb583e426005ca5ad4
|
||
Author: Cheyenne Wills <cwills@sinenomine.net>
|
||
Date: Tue Aug 29 14:58:10 2023 -0600
|
||
|
||
linux: Replace fop iterate with fop iterate_shared
|
||
|
||
The Linux 6.5 commit:
|
||
'vfs: get rid of old '->iterate' directory operation' (3e32715496)
|
||
removed the filesystem_operations iterate method. The replacement
|
||
method, iterate_shared, was introduced with the Linux 4.6 commit:
|
||
'introduce a parallel variant of ->iterate()' (6192269444)
|
||
|
||
The above commits indicate that the iterate_shared is an "almost"
|
||
drop-in replacement for iterate. The vfs documentation for
|
||
iterate_shared has caveats on the implementation (serializing in-core
|
||
per-inode or per-dentry modifications and using d_alloc_parallel if
|
||
doing dcache pre-seeding). A wrapper is provided to assist filesystems
|
||
with the migration from iterate to iterate_shared. Until it can be
|
||
verified that afs_linux_readdir meets the above requirements, we will
|
||
use the wrapper (ref 3e32715496 commit)
|
||
|
||
Add configure tests for the iterate_shared file_operations member and
|
||
for the wrap_directory_iterator function.
|
||
|
||
Update osi_vnodeops.c to use iterate_shared and the wrapper if they are
|
||
both available.
|
||
|
||
Reviewed-on: https://gerrit.openafs.org/15528
|
||
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
|
||
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
(cherry picked from commit 7437f4d37719ea53711e06ac9675dad1abd6769e)
|
||
|
||
Change-Id: Id00cfab2c0b51c2167fe19cd9cf7f136450ff174
|
||
Reviewed-on: https://gerrit.openafs.org/15558
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
|
||
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
|
||
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
|
||
|
||
commit 5b647bf17a878271e1ce9882e41663770ee73528
|
||
Author: Cheyenne Wills <cwills@sinenomine.net>
|
||
Date: Wed Sep 6 11:41:55 2023 -0600
|
||
|
||
LINUX: Pass an array of structs to register_sysctl
|
||
|
||
The Linux 6.6 commit "sysctl: Add size to register_sysctl" (9edbfe92a0)
|
||
renamed the Linux function register_sysctl() to register_sysctl_sz() and
|
||
added a size parameter. For backward compatibility, a macro,
|
||
register_sysctl, is provided. The macro calculates the size of the
|
||
ctl_table being registered and passes the size to register_sysctl_sz.
|
||
However, in order to perform the size calculation, an array of ctl_table
|
||
structures must be passed as the 2nd parameter.
|
||
|
||
This change only affects the autoconf test used to determine if Linux
|
||
provides register_sysctl.
|
||
|
||
Update the autoconf test for register_sysctl to use an actual ctl_table
|
||
structure for the 2nd parameter instead of a NULL.
|
||
|
||
Reviewed-on: https://gerrit.openafs.org/15559
|
||
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
|
||
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
(cherry picked from commit 76879b28798840fa0df441c328ada9667f06b154)
|
||
|
||
Change-Id: I9209d9fbc4514ab658f373510decfc2e81a5dc5f
|
||
Reviewed-on: https://gerrit.openafs.org/15575
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
|
||
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
|
||
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
|
||
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
|
||
|
||
commit 2ebafdc5349c7ae4418a98c244b6959388c50bf2
|
||
Author: Andrew Deason <adeason@sinenomine.net>
|
||
Date: Wed Aug 2 16:02:57 2023 -0500
|
||
|
||
rx: Check for callNumber before NULL server call
|
||
|
||
In rxi_ReceiveServerCall(), we compare the callNumber in the given
|
||
packet to the callNumber on the conn's channel. If the packet's
|
||
callNumber is smaller, it indicates the packet is for an earlier call
|
||
that has since ended, and we ignore it.
|
||
|
||
However, we perform this check after checking whether we need to
|
||
allocate a new call (conn->call[channel] is NULL), or use an existing
|
||
call. If we allocate a new call, we don't check the conn's callNumber
|
||
at all, and unconditionally set it to the callNumber in the packet.
|
||
|
||
This means that if a server call ends and is successfully
|
||
rxi_FreeCall()'d, the server will accept any callNumber on the same
|
||
channel. If the server sees an old DATA packet from an earlier call
|
||
after this happens, it means the server can effectively re-run an RPC
|
||
that has already completed successfully, or that the client has
|
||
already seen fail.
|
||
|
||
A server can see a DATA packet for an old call under a variety of
|
||
situations, which is, after all, why we check it (dup'd/delayed
|
||
packets, the client could still be trying to run an old call, etc).
|
||
Seeing one for a freed call is less likely since that usually requires
|
||
more time to have passed, but is still possible.
|
||
|
||
Checking the callNumber was effectively moved in commit 99b43273c0
|
||
(rx: prevent connection channel assignment race) in the 1.7.x series.
|
||
This commit makes the check similar to how it was in 1.6.x and
|
||
earlier.
|
||
|
||
Reviewed-on: https://gerrit.openafs.org/15524
|
||
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
|
||
Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
(cherry picked from commit 448e82b45268e8b339bdaa6ab0cd5858a04250a9)
|
||
|
||
Change-Id: I4a0c8a578cef32da8411bd33610aed9c67dc47c6
|
||
Reviewed-on: https://gerrit.openafs.org/15562
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
|
||
Reviewed-by: Kailas Zadbuke <kailashsz@in.ibm.com>
|
||
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
|
||
|
||
commit 00f13c45d637249a0d698458e08c1b8e2da8e219
|
||
Author: Cheyenne Wills <cwills@sinenomine.net>
|
||
Date: Wed Jun 21 13:56:29 2023 -0600
|
||
|
||
cf: Use static allocated structs for cf tests
|
||
|
||
The Linux kernel module build will issue a warning when a stack frame
|
||
exceeds a specific size via the -Wframe-larger-than= compiler flag (with
|
||
a default size of 2048 bytes on most architectures).
|
||
|
||
At least one distribution, Oracle's Linux with the Unbreakable
|
||
Enterprise Kernel (UEK), hardens this check by changing the warning to
|
||
an error (-Werror=frame-larger-than=).
|
||
|
||
Several of the openafs autoconf tests use objects that are allocated on
|
||
the stack when testing for structures, or members of a structure.
|
||
When the warning is changed to an error, configure fails in several
|
||
locations when testing against Linux's task_struct structure, which
|
||
exceeds 2048 bytes in size.
|
||
|
||
openafs/conftest.dir/conftest.c:72:1: error: the frame size of 9984
|
||
bytes is larger than 2048 bytes [-Werror=frame-larger-than=]
|
||
|
||
Update the autoconf Linux tests that allocate structures to use a
|
||
statically allocated structure instead of one allocated on the stack.
|
||
|
||
Reviewed-on: https://gerrit.openafs.org/15477
|
||
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
|
||
(cherry picked from commit a939eb7ffd2517a127aeb02ebd962e00e9acb960)
|
||
|
||
Change-Id: Ib1d5b8218981890751187fbcf724dd6643356e98
|
||
Reviewed-on: https://gerrit.openafs.org/15549
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
|
||
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
|
||
Reviewed-by: Kailas Zadbuke <kailashsz@in.ibm.com>
|
||
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
|
||
|
||
commit 4212d485cb2e0b1fa06b73bd21ca38ea8e3a8fa6
|
||
Author: Cheyenne Wills <cwills@sinenomine.net>
|
||
Date: Thu May 25 15:51:10 2023 -0600
|
||
|
||
clang: Don't redefine printf in salvage.c
|
||
|
||
The Gentoo distribution changed the default fortify_source setting for
|
||
clang (to match the default being used for gcc). This change causes the
|
||
following build error:
|
||
|
||
src/dir/salvage.c:26:9: error: 'printf' macro redefined
|
||
[-Werror,-Wmacro-redefined]
|
||
^
|
||
/usr/include/bits/stdio2.h:89:11: note: previous definition is here
|
||
^
|
||
1 error generated.
|
||
|
||
If the fortify_source level is greater than 1, glibc can define printf
|
||
as a macro. The clang compiler has a default check for macro
|
||
redefinitions (-Wmacro-redefined), while gcc does not provide this
|
||
option.
|
||
|
||
Remove the:
|
||
#define printf Log
|
||
in src/dir/salvage.c and update callers to use Log() instead of
|
||
printf().
|
||
|
||
Clean up lines that split the call to Log and its first parameter. Fix
|
||
the indentation for Log's parameters.
|
||
|
||
There are no functional changes with this commit.
|
||
|
||
Reviewed-on: https://gerrit.openafs.org/15462
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
|
||
Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
|
||
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
|
||
(cherry picked from commit df7f841f3852b5417a1d4ebc981780f2d7651b60)
|
||
|
||
Change-Id: I9a7d9e70184eb1dbd04f2b1a0e9a668138baaabe
|
||
Reviewed-on: https://gerrit.openafs.org/15548
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
|
||
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
|
||
Reviewed-by: Indira Sawant <indira.sawant@ibm.com>
|
||
Reviewed-by: Kailas Zadbuke <kailashsz@in.ibm.com>
|
||
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
|
||
|
||
commit d19554327fa92cee4eb2d914304fed02e20543e7
|
||
Author: Cheyenne Wills <cwills@sinenomine.net>
|
||
Date: Tue Sep 24 15:59:47 2019 -0600
|
||
|
||
Retire the AFS_PTR_FMT macro
|
||
|
||
Originally '%x' was commonly used as the printf specifier for formatting
|
||
pointer values.
|
||
|
||
Commit 37fc3b01445cd6446f09c476ea2db47fea544b7d introduced the
|
||
AFS_PTR_FMT macro to support platform-dependent printf format specifiers
|
||
for pointer representation. This macro defined the format specifier as
|
||
'%p' for Windows, and '%x' for non-Windows platforms.
|
||
|
||
Commit 2cf12c43c6a5822212f1d4e42dca7c059a1a9000 changed the printf
|
||
pointer format specifier from '%x' to '%p' on non-Windows platforms as
|
||
well, so at this point '%p' is the printf pointer format specifier for
|
||
all supported platforms.
|
||
|
||
Since the AFS_PRT_FMT macro is no longer platform-dependent, and all C89
|
||
compilers support the '%p' specifier, retire the macro to simplify the
|
||
printf format strings.
|
||
|
||
Reviewed-on: https://gerrit.openafs.org/13830
|
||
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
|
||
(cherry picked from commit a133f1b1e7eb605c36ac16a6ed115bef03e8a004)
|
||
|
||
[cwills@sinenomine.net] As part of the 1.8.x pullup, remove AFS_PTR_FMT
|
||
from the files in src/xstat
|
||
|
||
Change-Id: I1fbb6a9b1c957adf45ca528d744a373809d1b780
|
||
Reviewed-on: https://gerrit.openafs.org/15547
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
|
||
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
|
||
|
||
commit e644e2fc7db3cf9186184fc3586b8c8320f458a5
|
||
Author: Mark Vitale <mvitale@sinenomine.net>
|
||
Date: Sun Mar 3 20:51:45 2019 -0500
|
||
|
||
dir: check afs_dir_MakeDir return code in DirSalvage
|
||
|
||
Since the original IBM import, DirSalvage() has ignored the return code
|
||
from afs_dir_MakeDir() (f.k.a. MakeDir). This has been safe because, as
|
||
the comment states, afs_dir_MakeDir returns no (non-zero) error code.
|
||
|
||
In preparation for a future commit, add a check for the return from
|
||
afs_dir_MakeDir and remove the comment.
|
||
|
||
Reviewed-on: https://gerrit.openafs.org/13799
|
||
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
|
||
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
|
||
Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
|
||
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
(cherry picked from commit 0639ca8d221231309d59882a63e5a95a10cfdac3)
|
||
|
||
Change-Id: I13def0fdda5911b16704ba426c4fe2df389311a2
|
||
Reviewed-on: https://gerrit.openafs.org/15546
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
|
||
Reviewed-by: Indira Sawant <indira.sawant@ibm.com>
|
||
Reviewed-by: Kailas Zadbuke <kailashsz@in.ibm.com>
|
||
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
|
||
|
||
commit a367bed24fdc519b78e252e7a48f8d0666b1c7dd
|
||
Author: Mark Vitale <mvitale@sinenomine.net>
|
||
Date: Thu Jan 30 14:04:05 2020 -0500
|
||
|
||
dir: distinguish logical and physical errors on reads
|
||
|
||
The directory package (src/dir) salvage routines DirOK and DirSalvage
|
||
check a global variable 'DErrno' to distinguish logical errors (e.g.
|
||
short read) from physical errors (e.g. EIO). However, since the
|
||
original IBM import, this logic has not worked correctly because there
|
||
is no longer any code that sets the value of DErrno - its value is
|
||
always zero.
|
||
|
||
Instead, modify all implementations of ReallyRead to optionally return
|
||
the errno for low-level IO errors.
|
||
|
||
Also, create a new userspace-only variant - DReadWithErrno() - of the
|
||
src/dir/buffer.c version of DRead (the version called by DirOK and
|
||
DirSalvage, and the only caller of ReallyRead) to return the ReallyRead
|
||
errno upon request.
|
||
|
||
Also create an analogous variant of afs_dir_GetBlobs,
|
||
afs_dir_GetBlobsWithErrno().
|
||
|
||
Finally, convert DirOK and DirSalvage to use the new variants and
|
||
replace DErrno with equivalent logic. Remove all other references to
|
||
DErrno.
|
||
|
||
Reviewed-on: https://gerrit.openafs.org/13798
|
||
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
|
||
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
|
||
(cherry picked from commit 735fa5fb090ee0efc2161597a3974f6fa45126f6)
|
||
|
||
Change-Id: Ic7b87d1de71feb7ae741b43d534a3d94cd277125
|
||
Reviewed-on: https://gerrit.openafs.org/15545
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
|
||
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
|
||
|
||
commit af227457d470bf8e618c63397c4429578f1c85b7
|
||
Author: Mark Vitale <mvitale@sinenomine.net>
|
||
Date: Mon Mar 4 01:37:53 2019 -0500
|
||
|
||
afs: refactor directory checking in DRead
|
||
|
||
Commit d566c1cf874d15ca02020894ff0af62c4e39e7bb
|
||
'dread-do-validation-20041012' modified directory checking (in the
|
||
afs_buffer.c implementation of DRead()) to use size information passed
|
||
to DRead, rather than obtained from the cache via afs_CFileOpen.
|
||
|
||
Because this directory checking does not require any information from
|
||
the cache buffers or the cache partition, we can make the check right
|
||
away, before searching the cache buffers or calling afs_newslot.
|
||
|
||
To clarify and simplify, move the directory sanity checking logic to the
|
||
beginning of DRead. Remove the afs_newslot cleanup logic which is no
|
||
longer needed.
|
||
|
||
While here, add Doxygen comments for DRead.
|
||
|
||
Reviewed-on: https://gerrit.openafs.org/13803
|
||
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
|
||
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
(cherry picked from commit 1aa7d3c199e77e3ebdffe9cea4dee8ee82e81fcd)
|
||
|
||
Change-Id: I53f4d330c5a4c44ae8619619ba9584006375bf29
|
||
Reviewed-on: https://gerrit.openafs.org/15544
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
|
||
Reviewed-by: Kailas Zadbuke <kailashsz@in.ibm.com>
|
||
Reviewed-by: Indira Sawant <indira.sawant@ibm.com>
|
||
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
|
||
|
||
commit 08a90850fd792718ec5abdda172ab0214abfced6
|
||
Author: Andrew Deason <adeason@sinenomine.net>
|
||
Date: Tue Feb 7 22:48:23 2023 -0600
|
||
|
||
vol: Re-evaluate conditons for cond vars
|
||
|
||
Most users of cond vars follow this general pattern when waiting for a
|
||
condition:
|
||
|
||
while (!condition) {
|
||
CV_WAIT(cv, mutex);
|
||
}
|
||
|
||
But a few places in src/vol do this:
|
||
|
||
if (!condition) {
|
||
CV_WAIT(cv, mutex);
|
||
}
|
||
|
||
It is important to always re-check for the relevant condition after
|
||
waiting for a CV, even if it seems like we only need to wait exactly
|
||
once, because pthread_cond_wait() is allowed to wake up its caller
|
||
spuriously even the CV hasn't been signalled. On Solaris, this can
|
||
actually happen if the calling thread is interrupted by a signal.
|
||
|
||
In VInitPreAttachVolumes() for DAFS, currently this can cause a
|
||
segfault if CV_WAIT returns while 'vq' is empty. We will try to
|
||
queue_Remove() the head of the queue itself, resulting in vq.head.next
|
||
being set to NULL, which will segfault when we try to pull the next
|
||
item off of the queue.
|
||
|
||
We generally cannot be interrupted by a signal when using opr's
|
||
softsig, because signals are only delivered to the softsig thread and
|
||
blocked in all other threads. It is technically possible to trigger
|
||
this situation on Solaris by sending the (unblockable) SIGCANCEL
|
||
signal, though this would be very unusual.
|
||
|
||
To make sure issues like this cannot happen and to avoid weird corner
|
||
cases, adjust all of our CV waiters to wait for a CV using a while()
|
||
loop or similar pattern. Spurious wakeups may be impossible with LWP,
|
||
but just try to make all code use a similar structure to be safe.
|
||
|
||
Thanks for mvitale@sinenomine.net for finding and investigating the
|
||
relevant issue.
|
||
|
||
Reviewed-on: https://gerrit.openafs.org/15327
|
||
Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
|
||
Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
|
||
Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
|
||
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
|
||
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
(cherry picked from commit 9bc06a059121207b354fdf97f65029d8c2b3df30)
|
||
|
||
Change-Id: Ib1fdf06570e441b4a322a1e9b90ff084e07ad1fb
|
||
Reviewed-on: https://gerrit.openafs.org/15543
|
||
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
|
||
Reviewed-by: Kailas Zadbuke <kailashsz@in.ibm.com>
|
||
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
|
||
|
||
commit 088a77b99ba2104ed120e1fcdaf385767c477fc8
|
||
Author: Michael Meffie <mmeffie@sinenomine.net>
|
||
Date: Mon Jul 18 19:17:26 2022 -0400
|
||
|
||
build: package ltmain.sh in the libafs_tree
|
||
|
||
Commit 0a58d2188[1] "cf: Run AFS_LT_INIT after setting CC" moved the
|
||
location of LT_INIT (libtool initialization) to a common macro, so it is
|
||
now expanded in configure-libafs. This breaks the linux DKMS packaging,
|
||
which uses configure-libafs to build the kernel module, since the
|
||
ltmain.sh aux file is not included in the dkms package.
|
||
|
||
For now, just include the ltmain.sh aux file in the libafs_tree files to
|
||
fix DKMS build. Later, we should restructure the autoconf macros so the
|
||
LT_INIT macro is not expanded in the configure-libafs configure script,
|
||
since we do not need libtool to build the kernel module.
|
||
|
||
Thanks to Alex T Prengel for reporting this issue on the openafs-info
|
||
mail list.
|
||
|
||
1) 0a58d21881d7e91deccb416e8d2c272e14b412dd cf: Run AFS_LT_INIT after setting CC
|
||
|
||
Reviewed-on: https://gerrit.openafs.org/15076
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
|
||
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
|
||
(cherry picked from commit 76f26c63c7fe9661dfcf267cf75638747c81b7ef)
|
||
|
||
Change-Id: I595811dec056b8ec4a7cf36f6f96532a1e452e4e
|
||
Reviewed-on: https://gerrit.openafs.org/15542
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
|
||
Reviewed-by: Indira Sawant <indira.sawant@ibm.com>
|
||
Reviewed-by: Kailas Zadbuke <kailashsz@in.ibm.com>
|
||
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
|
||
|
||
commit 1d5b5244a63883ada1250d38c7536bd9d3751320
|
||
Author: Cheyenne Wills <cwills@sinenomine.net>
|
||
Date: Thu Feb 17 18:32:41 2022 -0700
|
||
|
||
afs: Use literal NULL for NULL function pointer
|
||
|
||
The clang compiler complains that this function pointer cast is not a
|
||
prototype.
|
||
|
||
.../osi_file.c:141:27: error: this function declaration is not a
|
||
prototype [-Werror,-Wstrict-prototypes]
|
||
afile->proc = (int (*)())0;
|
||
^
|
||
void
|
||
|
||
Just use NULL instead of trying to create a cast to 0.
|
||
|
||
Reviewed-on: https://gerrit.openafs.org/14902
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
|
||
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
|
||
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
|
||
(cherry picked from commit 689fb56fca57274e73c8394e8588650449565cd8)
|
||
|
||
Change-Id: I61cf49178a80d011b0169a729c3a08e9829cddad
|
||
Reviewed-on: https://gerrit.openafs.org/15541
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
|
||
Reviewed-by: Indira Sawant <indira.sawant@ibm.com>
|
||
Reviewed-by: Kailas Zadbuke <kailashsz@in.ibm.com>
|
||
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
|
||
|
||
commit d50ced2a17e05884ea18bb3dfcde6378b2531dc7
|
||
Author: Cheyenne Wills <cwills@sinenomine.net>
|
||
Date: Thu Feb 17 18:27:02 2022 -0700
|
||
|
||
cf: Avoid nested C functions built by autoconf
|
||
|
||
Currently, two of the Linux-related autoconf macros try to compile code
|
||
containing nested C functions (AC_CHECK_LINUX_OPERATION and
|
||
LINUX_KMEM_CACHE_CREATE_CTOR_TAKES_VOID). For example, the
|
||
AC_CHECK_LINUX_OPERATION check for 'follow_link' generates this code
|
||
where 'op' is a nested function inside 'conftest':
|
||
|
||
#include <linux/module.h>
|
||
#include <linux/fs.h>
|
||
void conftest(void)
|
||
{
|
||
struct inode_operations ops;
|
||
const char *op(struct dentry *dentry, void **link_date) {
|
||
return (const char *)0;
|
||
};
|
||
ops.follow_link = op;
|
||
}
|
||
|
||
Nested functions are a gcc-specific feature, and are not supported by
|
||
other compilers (e.g. clang), causing these checks to always fail when
|
||
using clang, leading to incorrect configure results.
|
||
|
||
To fix this, change AC_CHECK_LINUX_OPERATION and
|
||
LINUX_KMEM_CACHE_CREATE_CTOR_TAKES_VOID macros to just define the
|
||
relevant function as a proper top-level function.
|
||
|
||
(these were discovered by forcing a clang build of both the Linux kernel
|
||
and the openafs kernel module)
|
||
|
||
Reviewed-on: https://gerrit.openafs.org/14901
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
|
||
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
|
||
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
|
||
(cherry picked from commit a4878a5e26b9997e40a3b197cea5f8c3b24f2539)
|
||
|
||
Change-Id: Ie186658167a3f9e162fe85722aa0792cbe4fcfda
|
||
Reviewed-on: https://gerrit.openafs.org/15540
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
|
||
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
|
||
|
||
commit f900670194a356cb7cc3adb43bbde2c044a6e06d
|
||
Author: Cheyenne Wills <cwills@sinenomine.net>
|
||
Date: Wed May 25 12:54:50 2022 -0600
|
||
|
||
ukernel: Fix AFS_GUNLOCK panic in rx_ServerProc
|
||
|
||
At the beginning of UKERNEL's rx_ServerProc a call to AFS_GUNLOCK
|
||
panics with 'afs global lock not held'.
|
||
|
||
The commit 'afs: Drop GLOCK for various Rx calls' (d5e1428a3b) altered
|
||
afs_RXCallBackServer so the global lock is released prior to calling
|
||
rx_ServerProc, and to reacquire the lock after rx_ServerProc returns.
|
||
|
||
Remove the AFS_GUNLOCK at the start and the AFS_GLOCK at the end of
|
||
UKERNEL's rx_ServerProc.
|
||
|
||
Reviewed-on: https://gerrit.openafs.org/14963
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
|
||
(cherry picked from commit 07076d63edfb9fe7a2311958e9410d5eadb227d9)
|
||
|
||
Change-Id: If7b0b755e693cb5d892d3300c47fbbdaf76f2f59
|
||
Reviewed-on: https://gerrit.openafs.org/15539
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
|
||
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
|
||
|
||
commit e5d871ab40d111f943f8736ddf25064c04a371d5
|
||
Author: Michael Meffie <mmeffie@sinenomine.net>
|
||
Date: Thu Aug 19 12:52:30 2021 -0400
|
||
|
||
vlserver: Use bounded string copy in FindByName()
|
||
|
||
Although the volname string passed to FindByName() is currently always
|
||
limited 65 characters (including the terminating nul), to be on the safe
|
||
side, use the bounded strlcpy() function when coping the volname to the
|
||
temporary tname local variable to avoid the possibility of overwriting
|
||
the stack with an unbounded strcpy().
|
||
|
||
Reviewed-on: https://gerrit.openafs.org/14763
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
|
||
Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
|
||
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
|
||
(cherry picked from commit 494ec08cd04da6f96be02c7dc22d9bb0c409d63b)
|
||
|
||
Change-Id: I87b225de7d4ce81a4017f47f2d5088ebffd7c66a
|
||
Reviewed-on: https://gerrit.openafs.org/15538
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
|
||
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
|
||
|
||
commit 883a1a27e6a2f062064f0b4e0440685b1a7de519
|
||
Author: Michael Meffie <mmeffie@sinenomine.net>
|
||
Date: Thu Aug 19 11:47:04 2021 -0400
|
||
|
||
bozo: Log a warning if the bosserver is not started in restricted mode
|
||
|
||
Log a warning to the BosLog when the bosserver is not started in
|
||
restricted mode to encourage admins to enable restricted mode.
|
||
|
||
Also, log a notice when restricted mode is enabled to reassure admins
|
||
restricted mode is enabled on start up.
|
||
|
||
Reviewed-on: https://gerrit.openafs.org/14762
|
||
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
|
||
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
(cherry picked from commit d91b92e308dc2ac2e489581839c1fc1bf9147e16)
|
||
|
||
Change-Id: Id35b089855797541bbc2f59982b3da7b4fab824e
|
||
Reviewed-on: https://gerrit.openafs.org/15537
|
||
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
|
||
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
|
||
|
||
commit 92ba67d5a6c62b84150de20e83af5db24e5665df
|
||
Author: Andrew Deason <adeason@sinenomine.net>
|
||
Date: Fri Jul 26 15:28:44 2019 -0500
|
||
|
||
afs: Let afs_ShakeLooseVCaches run longer
|
||
|
||
Currently, when afs_ShakeLooseVCaches runs osi_TryEvictVCache, we
|
||
check if osi_TryEvictVCache slept (i.e. dropped afs_xvcache/GLOCK). If
|
||
we sleep over 100 times, then we stop trying to evict vcaches and
|
||
return.
|
||
|
||
If we have recently accessed a lot of AFS files, this limitation can
|
||
severely reduce our ability to keep our number of vcaches limited to a
|
||
reasonable size. For example:
|
||
|
||
Say a Linux client runs a process that quickly accesses 1 million
|
||
files (a simple 'find' command) and then does nothing else. A few
|
||
minutes later, afs_ShakeLooseVCaches is run, but since all of the
|
||
newly accessed vcaches have dentries attached to them, we will sleep
|
||
on each one in order to try to prune the attached dentries. This means
|
||
that afs_ShakeLooseVCaches will evict 100 vcaches, and then return,
|
||
leaving us with still almost 1 million vcaches. This will happen
|
||
repeatedly until afs_ShakeLooseVCaches finally works its way through
|
||
all of the vcaches (which takes quite a while, if we only clear 100 at
|
||
once), or the dentries get pruned by other means (such as, if Linux
|
||
evicts them due to memory pressure).
|
||
|
||
The limit of 100 sleeps was originally added in commit 29277d96
|
||
(newvcache-dont-spin-20060128), but the current effect of it was
|
||
largely introduced in commit 9be76c0d (Refactor afs_NewVCache). It
|
||
exists to ensure that afs_ShakeLooseVCaches doesn't take forever to
|
||
run, but the limit of 100 sleeps may seem quite low, especially if
|
||
those 100 sleeps run very quickly.
|
||
|
||
To avoid the situation described above, instead of limiting
|
||
afs_ShakeLooseVCaches based on a fixed number of sleeps, limit it
|
||
based on how long we've been running, and set an arbitrary limit of
|
||
roughly 3 seconds. Only check how long we've been running after 100
|
||
sleeps like before, so we're not constantly checking the time while
|
||
running.
|
||
|
||
Log a new warning if we exit afs_ShakeLooseVCaches prematurely if
|
||
we've been running for too long, to help indicate what is going on.
|
||
|
||
Reviewed-on: https://gerrit.openafs.org/14254
|
||
Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
|
||
(cherry picked from commit cd65475e95e25c8e7071e099a682bdcc03d2cce1)
|
||
|
||
Change-Id: I6c8e440a3c4dec5e6d769f40d9638a3edc6ad333
|
||
Reviewed-on: https://gerrit.openafs.org/15536
|
||
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
|
||
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
|
||
|
||
commit ee32460bf2b9f226a699c7f801b597cee2c0d8cb
|
||
Author: Cheyenne Wills <cwills@sinenomine.net>
|
||
Date: Thu Jan 2 11:18:16 2020 -0700
|
||
|
||
afs: Fix EIO error when reading a 4G or larger file
|
||
|
||
When reading a file with a file length of >= 4G, the cache manager is
|
||
failing the read with an EIO error.
|
||
|
||
In afs_GetDCache, the call to IsDCacheSizeOK is passed a parameter that
|
||
contains only the lower 32bits of the file length (which requires a 64
|
||
bit value). This results in the EIO error if the length is over 2^32 -1.
|
||
|
||
The AFSFetchStatus.Length member needs to be combined with the
|
||
AFSFetchStatus.Length_hi to obtain the full 64bit file length.
|
||
|
||
Fix the calls to IsDCacheSizeOK to use the full 64bit file length.
|
||
|
||
Commit "afs: Check dcache size when checking DVs
|
||
7c60a0fba11dd24494a5f383df8bea5fdbabbdd7" - gerrit 13436 - added the
|
||
IsDCacheSizeOK function and the associated calls.
|
||
|
||
As a note, the AFSFetchStatus.DataVersion is the lower 32 bits of the
|
||
full 64bit version number, AFSFetchStatus.dataVersionHigh contains
|
||
the high order 32bits. The function IsDCacheSizeOK is passed just the
|
||
32bit component, the only use of the parameter is in an error message.
|
||
|
||
Reviewed-on: https://gerrit.openafs.org/14002
|
||
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
(cherry picked from commit bebae936b4ef3bf47624c0ff0baae5521bad804e)
|
||
|
||
Change-Id: I68f3ee04af25c7e99e0795804226ba5075af0ea8
|
||
Reviewed-on: https://gerrit.openafs.org/15535
|
||
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
|
||
|
||
commit 652211e8d06835172e209a99ad08644eda21dab3
|
||
Author: Andrew Deason <adeason@sinenomine.net>
|
||
Date: Mon Jul 29 18:17:21 2019 -0500
|
||
|
||
afs: Skip IsDCacheSizeOK for CDirty/VDIR
|
||
|
||
IsDCacheSizeOK currently can incorrectly flag a dcache as corrupted,
|
||
since the size of a dcache may not match the size of the underlying
|
||
file in a couple of RW conditions:
|
||
|
||
- If someone is writing to a file beyond EOF, the intermediate
|
||
'sparse' area may be populated by 0-length dcaches until the data is
|
||
written to the fileserver.
|
||
|
||
- Directories may be modified locally instead of being fetched from
|
||
the fileserver, which can sometimes result in a directory blob of
|
||
differing sizes.
|
||
|
||
To avoid false positives detecting dcache corruption, just skip the
|
||
IsDCacheSizeOK check for directories, and any file with pending writes
|
||
(CDirty).
|
||
|
||
Also add some extra information to the logging messages when this
|
||
"corruption" is detected, so false positives may be more easily
|
||
detected in the future.
|
||
|
||
Reviewed-on: https://gerrit.openafs.org/13747
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
|
||
(cherry picked from commit e6b97b337bc97fdb1c8e4f1a0572c62dfc82d979)
|
||
|
||
Change-Id: I177020c37ba92d8730fe4c68ca610f1b39c3d69b
|
||
Reviewed-on: https://gerrit.openafs.org/15533
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
|
||
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
|
||
|
||
commit b46d63252b7b8575dd7a79fbd779725f63202afc
|
||
Author: Andrew Deason <adeason@sinenomine.net>
|
||
Date: Thu Jan 17 16:21:25 2019 -0600
|
||
|
||
afs: Check dcache size when checking DVs
|
||
|
||
Currently, if the dcache for a file has nonsensical length (due to
|
||
cache corruption or other bugs), we never notice, and we serve
|
||
obviously bad data to applications. For example, the vcache metadata
|
||
for a file may say the file is 2k bytes long, but the dcache for that
|
||
file only has 1k bytes in it (or more commonly, 0 bytes).
|
||
|
||
This situation is easily detectable, since the dcache and vcache refer
|
||
to the same version of the same file (when the DVs match), and so we
|
||
can check if the two lengths make sense together. So to avoid giving
|
||
bad data to userspace applications, perform a sanity check on the
|
||
lengths at the same time we check for DV matches (to see if the dcache
|
||
looks "fresh" and not stale). If the lengths do not make sense
|
||
together, we just pretend that the dcache is old, and so we'll ignore
|
||
it and fetch a new copy from the fileserver.
|
||
|
||
Also check the size of the data fetched from the fileserver for a
|
||
newly-fetched dcache in afs_GetDCache, to avoid returning a bad dcache
|
||
if the dcache isn't already present in the cache.
|
||
|
||
Reviewed-on: https://gerrit.openafs.org/13436
|
||
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
(cherry picked from commit 7c60a0fba11dd24494a5f383df8bea5fdbabbdd7)
|
||
|
||
Change-Id: I197d197f3f2eaf0473c76c60c9df842a3bed934a
|
||
Reviewed-on: https://gerrit.openafs.org/15532
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
|
||
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
|
||
|
||
commit b7ac4842a146fb4250095aa22419f5859e92dae8
|
||
Author: Marcio Barbosa <mbarbosa@sinenomine.net>
|
||
Date: Sat Aug 11 14:00:18 2018 -0400
|
||
|
||
volser: warn if older version of volume is restored
|
||
|
||
Volume restores work by overwriting vnodes with the data in the given
|
||
volume dump. If we restore a partial incremental dump from an older
|
||
version of the volume, this generally results in a partly-corrupted
|
||
volume, since directory vnodes may contain references that don't exist
|
||
in the current version of the volume (or are supposed to be in a
|
||
different directory).
|
||
|
||
Currently, the volserver does not prevent restoring older volume data
|
||
to a volume, and this doesn't necessarily always result in corrupted
|
||
data (for instance, if we are restoring a full volume dump over an
|
||
existing volume). But restoring old volume data seems more likely to
|
||
be a mistake, since reverting a volume back to an old version, even
|
||
without corrupting data, is a strange thing to do and may cause
|
||
problems with our methods of cache consistency.
|
||
|
||
So, log a warning when this happens, so if this is a mistake, it
|
||
doesn't happen silently. But we still do not prevent this action, since
|
||
it's possible something could be doing this intentionally. We detect
|
||
this just by checking if the updateDate in the given header is older
|
||
than the current updateDate for the volume on disk.
|
||
|
||
Note: Restoring a full dump file (-overwrite f) will not result in
|
||
corrupted data. In this scenario, the restore operation removes the
|
||
volume on disk first (if present). After that, the dump file is
|
||
restored. In this case, we do not log anything (the volume is not
|
||
corrupted).
|
||
|
||
Reviewed-on: https://gerrit.openafs.org/13251
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
|
||
(cherry picked from commit 8375a7f7dd0e3bcbf928a23f874d1a15a952cdef)
|
||
|
||
Change-Id: Ic119b0a7b1eac5e01fabbadc0aa679d5f2617d53
|
||
Reviewed-on: https://gerrit.openafs.org/15531
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
|
||
Reviewed-by: Indira Sawant <indira.sawant@ibm.com>
|
||
Reviewed-by: Kailas Zadbuke <kailashsz@in.ibm.com>
|
||
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
|
||
|
||
commit 538f450033a67e251b473ff92238b3124b85fc72
|
||
Author: Cheyenne Wills <cwills@sinenomine.net>
|
||
Date: Sun Jul 9 18:45:15 2023 -0600
|
||
|
||
hcrypto: rename abort to _afscrypto_abort
|
||
|
||
The Linux 6.5 commit:
|
||
panic: make function declarations visible (d9cdb43189)
|
||
added a declaration for abort into panic.h.
|
||
|
||
When building the Linux kernel module, the build fails with the
|
||
following:
|
||
|
||
src/crypto/hcrypto/kernel/config.h:95:20: error: static declaration of
|
||
‘abort’ follows non-static declaration
|
||
95 | static_inline void abort(void) {osi_Panic("hckernel aborting\n"
|
||
);}
|
||
| ^~~~~
|
||
...
|
||
from ./include/linux/wait.h:9,
|
||
from /openafs/src/afs/sysincludes.h:118,
|
||
from /openafs/src/crypto/hcrypto/kernel/config.h:30:
|
||
./include/linux/panic.h:36:6: note: previous declaration of ‘abort’
|
||
with type ‘void(void)’
|
||
36 | void abort(void);
|
||
| ^~~~~
|
||
|
||
Update the declaration in hcrypto/kernel/config.h to change the function
|
||
name from abort to _afscrypto_abort and use a preprocessor define to
|
||
map abort to _afscrypto_abort.
|
||
|
||
Reviewed-on: https://gerrit.openafs.org/15501
|
||
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
|
||
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
|
||
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
|
||
Tested-by: Benjamin Kaduk <kaduk@mit.edu>
|
||
(cherry picked from commit c4c16890d9d2829f6bef1ef58feafb30b1d59da3)
|
||
|
||
Change-Id: I54cc9156b98320d04fe6f7bb595a150d5ba87b49
|
||
Reviewed-on: https://gerrit.openafs.org/15523
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
|
||
Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
|
||
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
|
||
|
||
commit 63801cfd1fc06ec3259fcfd67229f3a3c70447ed
|
||
Author: Cheyenne Wills <cwills@sinenomine.net>
|
||
Date: Thu Jul 13 10:54:22 2023 -0600
|
||
|
||
Linux 6.5: Use register_sysctl()
|
||
|
||
The linux 6.5 commit:
|
||
"sysctl: Remove register_sysctl_table" (b8cbc0855a)
|
||
removed the Linux function register_sysctl_table(). The replacement
|
||
function is register_sysctl(), which offers a simpler interface.
|
||
|
||
Add an autoconf test for the Linux function register_sysctl and add a
|
||
call to register_sysctl when available.
|
||
|
||
Notes:
|
||
The Linux function register_sysctl was added in Linux 3.3 with the
|
||
commit:
|
||
'sysctl: Add register_sysctl for normal sysctl users' (fea478d410)
|
||
with a note that it is a simpler interface.
|
||
|
||
The function register_sysctl_table was marked as deprecated with the
|
||
Linux 6.3 commit:
|
||
'proc_sysctl: enhance documentation' (1dc8689e4c)
|
||
|
||
Reviewed-on: https://gerrit.openafs.org/15500
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
|
||
(cherry picked from commit fb31d299e6caa015f6288ba9186da6277d3d6a8d)
|
||
|
||
Change-Id: I60f68f1dd95c32bada7179e98250fd44d7c2ddf3
|
||
Reviewed-on: https://gerrit.openafs.org/15522
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
|
||
Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
|
||
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
|
||
|
||
commit d15c7ab50c92671052cbe9a93b0440c81156d8aa
|
||
Author: Andrew Deason <adeason@sinenomine.net>
|
||
Date: Thu Jul 18 22:56:48 2019 -0500
|
||
|
||
LINUX: Make sysctl definitions more concise
|
||
|
||
Our sysctl definitions are quite verbose, and adding new ones involves
|
||
copying a bunch of lines. Make these a little easier to specify, by
|
||
defining some new preprocessor macros.
|
||
|
||
Reviewed-on: https://gerrit.openafs.org/13700
|
||
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
|
||
Tested-by: Benjamin Kaduk <kaduk@mit.edu>
|
||
(cherry picked from commit 1b0bb8a7fcbd69d513ed30bb76fd0693d1bd3319)
|
||
|
||
Change-Id: Ib656634ed956b845c89656069aa297253acce785
|
||
Reviewed-on: https://gerrit.openafs.org/15521
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
|
||
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
|
||
Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
|
||
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
|
||
|
||
commit fef245769366efe8694ddadd1e1f2ed5ef8608f4
|
||
Author: Cheyenne Wills <cwills@sinenomine.net>
|
||
Date: Sun Jul 9 18:52:23 2023 -0600
|
||
|
||
Linux 6.5: Replace generic_file_splice_read
|
||
|
||
The Linux 6.5 commit:
|
||
'splice: Remove generic_file_splice_read()' (c6585011bc)
|
||
replaces the function generic_file_splice_read() with the function
|
||
filemap_splice_read().
|
||
|
||
The Linux function 'filemap_splice_read()' was introduced with the
|
||
Linux 6.3 commits:
|
||
|
||
'splice: Add a func to do a splice from a buffered file without
|
||
ITER_PIPE' (07073eb01c)
|
||
'splice: Export filemap/direct_splice_read()' (7c8e01ebf2)
|
||
|
||
With updates in Linux 6.5:
|
||
'splice: Fix filemap_splice_read() to use the correct inode'
|
||
(c37222082f) -- which fixes a problem in the code.
|
||
'splice: Make filemap_splice_read() check s_maxbytes' (83aeff881e)
|
||
|
||
Due to the fact that there could be problems with splice support prior
|
||
to Linux 6.5 (where filemap_splice_read()'s use was expanded to
|
||
additional filesystems other than just cifs), we only want to use
|
||
'filemap_splice_read()' in Linux 6.5 and later.
|
||
|
||
The LINUX/osi_vnodeops.c file is updated to use 'filemap_splice_read()',
|
||
for Linux 6.5 and later, for the splice_read member of the
|
||
file_operations structure.
|
||
|
||
Reviewed-on: https://gerrit.openafs.org/15486
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
|
||
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
|
||
(cherry picked from commit 0e06eb78f293bb295b0fe12da24abd8dc1160149)
|
||
|
||
Change-Id: I3b5436234d275253a37987dc40a522ae8f3cae1e
|
||
Reviewed-on: https://gerrit.openafs.org/15520
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
|
||
Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
|
||
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
|
||
|
||
commit be21a2041972f6e612bb1717cce9714702038d77
|
||
Author: Andrew Deason <adeason@sinenomine.net>
|
||
Date: Wed Aug 26 15:41:00 2020 -0500
|
||
|
||
UKERNEL: Build linktest with COMMON_CFLAGS
|
||
|
||
Currently, 'linktest' in libuafs is built with a weird custom rule
|
||
that specifies several various CFLAGS and LDFLAGS, etc. One
|
||
side-effect of this is that linktest is built without specifying -O,
|
||
even if optimization is otherwise enabled.
|
||
|
||
Normally nobody would care about the optimization of linktest, since
|
||
it's never supposed to be run, but this can cause an error when
|
||
building with -D_FORTIFY_SOURCE=1 on some systems (such as RHEL7):
|
||
|
||
In file included from /usr/include/sys/types.h:25:0,
|
||
from /.../src/config/afsconfig.h:1485,
|
||
from /.../src/libuafs/linktest.c:15:
|
||
/usr/include/features.h:330:4: error: #warning _FORTIFY_SOURCE requires compiling with optimization (-O) [-Werror=cpp]
|
||
# warning _FORTIFY_SOURCE requires compiling with optimization (-O)
|
||
^
|
||
cc1: all warnings being treated as errors
|
||
make[3]: *** [linktest] Error 1
|
||
|
||
For now, to fix this just include $(COMMON_CFLAGS) in the flags we
|
||
give for linktest, so $(OPTMZ) also gets pulled in, and building
|
||
linktest gets a little closer to a normal compilation step.
|
||
|
||
Reviewed-on: https://gerrit.openafs.org/14324
|
||
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
|
||
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
|
||
(cherry picked from commit c4f853aa00f1650b678cbd22ad1e2a9cf01c1303)
|
||
|
||
Change-Id: I842fc630979fa98950f09326a556da1f7d1cd23b
|
||
Reviewed-on: https://gerrit.openafs.org/15519
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
|
||
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
|
||
Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
|
||
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
|
||
|
||
commit 128772e328d92e1de60bb6e88677f3b0d64a0c12
|
||
Author: Andrew Deason <adeason@sinenomine.net>
|
||
Date: Thu Jul 6 15:11:23 2023 -0500
|
||
|
||
cf: Undef _FORTIFY_SOURCE for use-after-free check
|
||
|
||
Commit f2003ed68c (gcc: Avoid false positive use-after-free in crypto)
|
||
added a configure check to detect whether the compiler we're using
|
||
exhibits the use-after-free warning bug. We add -O0 to CFLAGS for the
|
||
test to make sure the bug triggers for gcc 12, but if the user has
|
||
specified, for example, CFLAGS=-D_FORTIFY_SOURCE=1, this causes
|
||
the compile check to always fail:
|
||
|
||
/usr/include/features.h:330:4: error: #warning _FORTIFY_SOURCE requires compiling with optimization (-O) [-Werror=cpp]
|
||
# warning _FORTIFY_SOURCE requires compiling with optimization (-O)
|
||
|
||
This causes _OPENAFS_UAF_COMPILE_IFELSE to always fail, and so we
|
||
throw an AC_MSG_ERROR during configure.
|
||
|
||
To allow the build to continue with _FORTIFY_SOURCE, make sure
|
||
_FORTIFY_SOURCE is undefined for this specific test. The compile test
|
||
can then succeed with -O0 (unless we trigger the use-after-free bug,
|
||
of course).
|
||
|
||
Reviewed-on: https://gerrit.openafs.org/15499
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
|
||
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
|
||
(cherry picked from commit 2e6b80e4bcdb476e95c8cff46ebaae69f092abec)
|
||
|
||
Change-Id: Ibafe136c2d0364741f0ea2e3d823e181d7983f20
|
||
Reviewed-on: https://gerrit.openafs.org/15518
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
|
||
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
|
||
Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
|
||
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
|
||
|
||
commit 03bc379df9a18b8440a26867921f36f02f8656bb
|
||
Author: Mark Vitale <mvitale@sinenomine.net>
|
||
Date: Fri May 12 23:51:48 2023 -0400
|
||
|
||
vol: Don't leak volume bitmaps
|
||
|
||
Since the original IBM code import, attach2 has set the volume's index
|
||
bitmaps to NULL in preparation for allocating and initalizing new
|
||
bitmaps. However, the volume may already have bitmaps from previous
|
||
operations, and this is much more likely with DAFS. In this case, the
|
||
old bitmaps are leaked.
|
||
|
||
Instead, free any existing bitmap before allocating a new one.
|
||
|
||
Discovered via Solaris libumem.so.1.
|
||
|
||
Reviewed-on: https://gerrit.openafs.org/15428
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
|
||
Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
|
||
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
|
||
(cherry picked from commit 4b42b07fde2cb87ecb0f3135612a4c086227fa09)
|
||
|
||
Change-Id: I8d67a4ef75218acc6e5852b77b90e7898e78585e
|
||
Reviewed-on: https://gerrit.openafs.org/15517
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
|
||
Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
|
||
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
|
||
|
||
commit 3b383abaa932fe03f405571c50df4e95043d7998
|
||
Author: Mark Vitale <mvitale@sinenomine.net>
|
||
Date: Fri May 12 21:25:36 2023 -0400
|
||
|
||
rxkad: Free memory used to check rxkad response
|
||
|
||
Since its introduction with commit 7e4e06b87a09 "Derive DES/fcrypt
|
||
session key from other key types", rxkad_derive_des_key has failed to
|
||
free the memory associated with its HMAC context struct.
|
||
|
||
This results in a leak of at least 352 bytes for each rxkad challenge
|
||
response processed by an OpenAFS server when using rxkad-kdf.
|
||
|
||
Free the memory by calling HMAC_CTX_cleanup after each round of the
|
||
loop.
|
||
|
||
Discovered via Solaris libumem.so.1.
|
||
|
||
Reviewed-on: https://gerrit.openafs.org/15427
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
|
||
Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
|
||
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
|
||
(cherry picked from commit 915c9ec007810f99a5ea8be73426fc8882f615fd)
|
||
|
||
Change-Id: I4710c1180cdca19cc963d7409ef15e74efd51498
|
||
Reviewed-on: https://gerrit.openafs.org/15516
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
|
||
Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
|
||
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
|
||
|
||
commit 898098e01e19970f80f60a0551252b2027246038
|
||
Author: Andrew Deason <adeason@sinenomine.net>
|
||
Date: Fri Apr 7 16:09:30 2023 -0500
|
||
|
||
LINUX: Make 'fs flush*' invalidate dentry
|
||
|
||
Our 'fs flush' and related commands (flushall, flushvolume) clear the
|
||
relevant entries in the OpenAFS stat cache and data cache, which can
|
||
fix problems if the cache ever becomes incorrect for any reason. (This
|
||
can happen after bugs, repairing corrupted volumes, disaster recovery
|
||
scenarios, and similar edge cases.)
|
||
|
||
However, on Linux, these commands don't affect the VFS dentry cache.
|
||
If someone needs to use an 'fs flush' command to fix a problem, this
|
||
will fix the OpenAFS cache, but the Linux dcache can still be wrong.
|
||
The only way to manually flush dcache entries is to use the global
|
||
'drop_caches' mechanism, which is a very heavweight operation, only
|
||
accessible to root.
|
||
|
||
For example:
|
||
|
||
$ ls -l
|
||
ls: cannot access foo.1: No such file or directory
|
||
total 2
|
||
drwxrwxr-x. 2 bin adeason 2048 Apr 6 14:20 dir
|
||
-?????????? ? ? ? ? ? foo.1
|
||
$ fs flush .
|
||
$ ls -l
|
||
ls: cannot access foo.1: No such file or directory
|
||
total 2
|
||
drwxrwxr-x. 2 bin adeason 2048 Apr 6 14:20 dir
|
||
-?????????? ? ? ? ? ? foo.1
|
||
$ sudo sysctl -q -w vm.drop_caches=3
|
||
$ ls -l
|
||
total 3
|
||
drwxrwxr-x. 2 bin adeason 2048 Apr 6 14:20 dir
|
||
-rw-rw-r--. 1 bin adeason 29 Sep 22 2022 foo.1
|
||
|
||
To make the 'fs flush' commands be effective in more situations,
|
||
change afs_ResetVCache() to also invalidate the dcache entries
|
||
associated with each vcache we reset. To make things simpler and
|
||
reduce locking complexity, do this by setting d_time to 0, and don't
|
||
directly run dcache-managing functions like d_invalidate or d_drop,
|
||
etc.
|
||
|
||
The above example now becomes:
|
||
|
||
$ ls -l
|
||
ls: cannot access foo.1: No such file or directory
|
||
total 2
|
||
drwxrwxr-x. 2 bin adeason 2048 Apr 6 14:20 dir
|
||
-?????????? ? ? ? ? ? foo.1
|
||
$ fs flush .
|
||
$ ls -l
|
||
total 3
|
||
drwxrwxr-x. 2 bin adeason 2048 Apr 6 14:20 dir
|
||
-rw-rw-r--. 1 bin adeason 29 Sep 22 2022 foo.1
|
||
|
||
Reviewed-on: https://gerrit.openafs.org/15391
|
||
Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
|
||
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
(cherry picked from commit d460b616ebad763f7e480e194b2bffc28df99721)
|
||
|
||
Change-Id: I184046469c396b0421752d91c47477ebe8eaed13
|
||
Reviewed-on: https://gerrit.openafs.org/15515
|
||
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Tested-by: Michael Meffie <mmeffie@sinenomine.net>
|
||
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
|
||
Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
|
||
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
|
||
|
||
commit a50282c70fb8b7acc69787e4ecfd15b95bc25dcf
|
||
Author: Michael Meffie <mmeffie@sinenomine.net>
|
||
Date: Mon Aug 24 13:12:13 2020 -0400
|
||
|
||
build: Add rpm target
|
||
|
||
Add a top-level makefile target to build RPMs for Red Hat distributions
|
||
from the currently checked out commit. The resulting rpms are placed in
|
||
the packages/rpmbuild/RPMS/<arch> directory.
|
||
|
||
The rpm target is intended to be a convenience for testing changes to
|
||
the rpm packaging or generating packages for local testing.
|
||
|
||
Reviewed-on: https://gerrit.openafs.org/14114
|
||
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
|
||
Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
|
||
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
(cherry picked from commit 8b68f1a4e1e3ae06de0d6c5a8af60ef99cacb83a)
|
||
|
||
Change-Id: I31fcd579d9610303cb44b4813ecaf8dd00e09e7e
|
||
Reviewed-on: https://gerrit.openafs.org/15514
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
|
||
Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
|
||
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
|
||
|
||
commit f9db82620593cf90f3cae05581a71afcd7168820
|
||
Author: Michael Meffie <mmeffie@sinenomine.net>
|
||
Date: Fri May 1 14:05:24 2020 -0400
|
||
|
||
makesrpm: Support custom version strings
|
||
|
||
The makesrpm.pl script generates a source RPM by creating a temporary
|
||
rpmbuild workspace, populating the SOURCES and SPECS directories in that
|
||
workspace, running rpmbuild to build the source RPM, and finally copying
|
||
the resulting source RPM out of the temporary workspace.
|
||
|
||
The name of the source RPM file created by rpmbuild depends on the
|
||
package version and release strings. Unfortunately, the format of the
|
||
source RPM file name changed around OpenAFS 1.6.0, so makesrpm.pl has
|
||
special logic to find the version string and extra code depending on the
|
||
detected OpenAFS version.
|
||
|
||
Instead of trying to predict the name of the resulting source RPM file
|
||
from the OpenAFS version string, and having different logic for old
|
||
versions of OpenAFS, use a filename glob to find resulting source RPM
|
||
file name in the temporary rpmbuild workspace.
|
||
|
||
Remove the major, minor, and patch level variables, which were only used
|
||
to guess the name of the resulting source RPM file name.
|
||
|
||
Convert '-' characters to '_' in the package version and package
|
||
release, since the '-' character is reserved by rpm as a field
|
||
separator.
|
||
|
||
While here, add the --dir option to specify the path of the generated
|
||
source RPM, and change the 'srpm' makefile target to use the new --dir
|
||
option, instead of changing the current directory before running
|
||
makesrpm.pl. Also, add a dependency on the 'dist' makefile target,
|
||
since the the source and document tarballs are required to build the
|
||
source RPM.
|
||
|
||
Add pod documentation and add the --help (-h) option to print a brief
|
||
help message, and add the --man option to print the full man page.
|
||
|
||
With this change, we can build a source RPM even when the .version file
|
||
in the src.tar.bz file has a custom format or was created from a
|
||
checkout of the master branch or other non-release reference.
|
||
|
||
Reviewed-on: https://gerrit.openafs.org/14116
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
|
||
Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
|
||
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
|
||
(cherry picked from commit 7cc6b97ad26089ecb88019468f3ef7c0222cebe1)
|
||
|
||
Change-Id: I6f533aa4dff42c8e256fd7cf07831e0f6c0b0c63
|
||
Reviewed-on: https://gerrit.openafs.org/15513
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
|
||
Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
|
||
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
|
||
|
||
commit 2899837875ed32015f8b1d970a1b23af52abb76b
|
||
Author: Michael Meffie <mmeffie@sinenomine.net>
|
||
Date: Wed Mar 29 15:58:24 2017 -0400
|
||
|
||
bozo: Do not create client directory and symlinks
|
||
|
||
Each time the bosserver starts, it checks for the presence of the client
|
||
configuration directory and the CellServDB and ThisCell files within it.
|
||
When not found, the bosserver creates the client cell configuration
|
||
directory. When the CellServDB and ThisCell files are not present in the
|
||
client configuration directory, the bosserver creates symlinks to the
|
||
server's CellServDB and ThisCell files. This feature of the bosserver
|
||
was a convenience when older versions of vos and pts required a client
|
||
configuration directory.
|
||
|
||
However, modern deployments tend to use packaging, with separate client
|
||
and server packages. The client configuration directory and files in it
|
||
are typically managed by the client packaging. Currently, packagers
|
||
must work around these symlinks created by the bosserver. Additionally,
|
||
the CellServDB and ThisCell symlinks are hazardous since writing to the
|
||
client-side configuration will overwrite the server configuration.
|
||
|
||
This commit removes the creation the client configuration directory and
|
||
the CellServDB and ThisCell symlinks during bosserver startup. This
|
||
change is intended to decouple the server from the client, help to avoid
|
||
overwriting the server configuration, and avoid requiring client artifacts
|
||
on a server.
|
||
|
||
Reviewed-on: https://gerrit.openafs.org/12586
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
|
||
Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
|
||
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
|
||
(cherry picked from commit c8aae4da4fcfd22c19fc9c8835960005554ac9d6)
|
||
|
||
Change-Id: I76d24eadaecd19d21f12b8bd85eca2a4888d3e4c
|
||
Reviewed-on: https://gerrit.openafs.org/15512
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
|
||
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
|
||
Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
|
||
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
|
||
|
||
commit c495c81754f35be4cfc8c06f358eec20456de76e
|
||
Author: Michael Meffie <mmeffie@sinenomine.net>
|
||
Date: Wed Aug 31 13:41:30 2022 -0400
|
||
|
||
Add command fallback to server config
|
||
|
||
Add an initialization retry in the bos, vos, and pts commands to
|
||
fallback to the server configuration directory when initialization fails
|
||
with the client configuration directory. This allows admins to run
|
||
unauthenticated bos, vos, and pts commands on servers without a client
|
||
configuration (including symlinks created by the bosserver) without
|
||
any extra command line options.
|
||
|
||
Perform the initialization retry only when the -localauth or -config
|
||
options are not given. The bos, vos, and pts commands already use the
|
||
server configuration path when the -localauth option is given, so there
|
||
is no point in retrying the same path. The vos and pts -config option
|
||
specifies the path to be used, so we do not fallback to a different
|
||
directory when the user specifies the configuration path to be used.
|
||
|
||
While here, change the scope of the confdir variable in vos.c from a
|
||
global to a local variable, since it is only used within the
|
||
MyBeforeProc() function.
|
||
|
||
This change does not add a vsu_ClientInit() retry in the bos salvage
|
||
command. That command always requires authorization, so when run without
|
||
-localauth requires a token (and therefore a cache manager and client
|
||
cell configuration).
|
||
|
||
Update the bos, vos, and pts man pages to describe this new fallback
|
||
method to lookup the configuration directory. (The AFSCONF environment
|
||
variable and .AFSCONF files are currently undocumented in the man pages.
|
||
They should be documented or removed from the code in a future change.)
|
||
|
||
Reviewed-on: https://gerrit.openafs.org/15351
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
|
||
Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
|
||
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
|
||
(cherry picked from commit 77eb1728331e0825ecb6fbe29db334c61b5276d0)
|
||
|
||
Conflicts: (1.8.x does not have rxgk support)
|
||
src/ptserver/pts.c
|
||
src/volser/vos.c
|
||
|
||
Change-Id: I1e0ffb8a074098ed6d4750d8e02cbfb8c0dbaff5
|
||
Reviewed-on: https://gerrit.openafs.org/15511
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
|
||
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
|
||
Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
|
||
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
|
||
|
||
commit c77491e189a5a8814ad001c47d428c70dfaebd20
|
||
Author: Andrew Deason <adeason@sinenomine.net>
|
||
Date: Fri Oct 25 19:04:44 2019 -0500
|
||
|
||
pts: Use cmd_AddParmAtOffset for common parms
|
||
|
||
Update pts to use cmd_AddParmAtOffset and symbolic constants for our
|
||
common parameters, instead of using bare literals like '16'.
|
||
|
||
Reviewed-on: https://gerrit.openafs.org/13946
|
||
Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
|
||
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
(cherry picked from commit d0941e81b2f1f499cebb57d8a81d82802913d9be)
|
||
|
||
Conflicts: (1.8.x does not have rxgk support)
|
||
src/ptserver/pts.c
|
||
|
||
Change-Id: I0bc2c6038c0d7983c6364ec186aef18105b02d3a
|
||
Reviewed-on: https://gerrit.openafs.org/15510
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
|
||
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
|
||
Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
|
||
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
|
||
|
||
commit d80485cd950929503e9a2e1464313580c021ff63
|
||
Author: Andrew Deason <adeason@sinenomine.net>
|
||
Date: Fri Jul 8 17:14:26 2022 -0500
|
||
|
||
viced: Verify primary host address
|
||
|
||
Currently, h_stateVerifyHost verifies that all of the valid entries on
|
||
h->z.interface are on the host address hashtable. If we don't have a
|
||
h->z.interface, we check the primary address h->z.host/h->z.port
|
||
instead.
|
||
|
||
But if we do have a h->z.interface, we don't check h->z.host/h->z.port
|
||
at all. Normally, the primary address should always be included in the
|
||
h->z.interface list (in a 'valid==1' entry), and so checking the
|
||
primary address is redundant. However, currently it is possible in
|
||
some edge cases for the primary address to be missing from the
|
||
hashtable and to not be listed as a valid address in h->z.interface.
|
||
In such cases, we don't flag an error or even log a warning, since we
|
||
don't check the primary address separately. (These cases are bugs, and
|
||
will be addressed in future commits.)
|
||
|
||
To detect this case, change h_stateVerifyHost to always check
|
||
h->z.host, just like we do for the entries in h->z.interface.
|
||
|
||
Reviewed-on: https://gerrit.openafs.org/15070
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
|
||
Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
|
||
Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
|
||
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
|
||
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
|
||
(cherry picked from commit 9d144491d94e7e19e2d710601a37045ef1ef1fdc)
|
||
|
||
Change-Id: Icdd65c081372e1057df67401643973e1ac6f016e
|
||
Reviewed-on: https://gerrit.openafs.org/15509
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
|
||
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
|
||
Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
|
||
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
|
||
|
||
commit 6fc1d81eb7f8c06f5fea54403419b30b4d95fb97
|
||
Author: Cheyenne Wills <cwills@sinenomine.net>
|
||
Date: Mon Jul 3 13:14:52 2023 -0600
|
||
|
||
gcc: Avoid false positive use-after-free in crypto
|
||
|
||
Due to a bug in gcc-12 and gcc-13, several warnings are generated for a
|
||
use-after-free in crypto.c, which leads to a build failure with
|
||
--enable-checking:
|
||
|
||
src/external/heimdal/krb5/crypto.c:1157:9: error: pointer ‘p’ may be
|
||
used after ‘realloc’ [-Werror=use-after-free]
|
||
1157 | free(p);
|
||
| ^~~~~~~
|
||
src/external/heimdal/krb5/crypto.c:1155:20: note: call to ‘realloc’
|
||
here
|
||
1155 | result->data = realloc(p, sz);
|
||
| ^~~~~~~~~~~~~~
|
||
|
||
However, reviewing the code around these warnings shows that the
|
||
use-after-free warnings are incorrectly generated (false positive). The
|
||
documentation for realloc states that realloc will return a NULL and not
|
||
alter the storage passed if there was an error allocating and the size
|
||
passed is non-zero.
|
||
|
||
There is a possible work-around for the false positive. One can use a
|
||
variable that is not a member of a structure to hold and test the value
|
||
returned from realloc, then update the structure member from that
|
||
variable.
|
||
|
||
However, the code that is producing the message is in a heimdal external
|
||
file, so we cannot modify the source. So just use the compiler flag
|
||
-Wno-use-after-free to avoid the warning/error.
|
||
|
||
Update configure to add tests for the -Wno-use-after-free flag, update
|
||
the Makefile to add the flag for CFLAGS.crypto.lo, and update CODING
|
||
for the new exception.
|
||
|
||
Because this is an important check, only disable the warning if the
|
||
compiler exhibits this specific bug. We do this by adding specific
|
||
configure tests for the compiler bug and conditionally set a CFLAG
|
||
variable if the bug is present.
|
||
|
||
NOTE: The false positive and work-around can be demonstrated with the
|
||
following code using gcc-12 (with -O0) or gcc-13 (not sensitive to the
|
||
optimization level):
|
||
|
||
somestruct->somepointer = realloc(ptr, somesize);
|
||
if (somestruct->somepointer == NULL && somesize != 0) {
|
||
free(ptr); << gets flagged as use-after-free
|
||
handle enomem...
|
||
}
|
||
|
||
However the following doesn't get flagged:
|
||
|
||
char *tmpptr = realloc(ptr, somesize);
|
||
if (tmpptr == NULL && somesize != 0) {
|
||
free(ptr);
|
||
handle enomem...
|
||
}
|
||
somestruct->somepointer = tmpptr;
|
||
|
||
The GCC ticket https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110501
|
||
has been marked as confirmed.
|
||
|
||
Reviewed-on: https://gerrit.openafs.org/15471
|
||
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
|
||
(cherry picked from commit f2003ed68c2fecf679d0b04146427258d39369ea)
|
||
|
||
Change-Id: Ib7ae86c66f0ef1fc12d4ff4b796b712dc97e2e13
|
||
Reviewed-on: https://gerrit.openafs.org/15508
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
|
||
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
|
||
Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
|
||
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
|
||
|
||
commit 6867a3e8429f37fb748575df52256227ae9e5b53
|
||
Author: Cheyenne Wills <cwills@sinenomine.net>
|
||
Date: Tue Jun 27 12:31:30 2023 -0600
|
||
|
||
cf: Fix cast-function-type err w/disable-checking
|
||
|
||
If the Linux kernel has CONFIG_WERROR enabled, and openafs is configured
|
||
with --disable-checking, the libafs kernel module fails to build:
|
||
|
||
/src/libafs/MODLOAD-5.14.0-305.el9.x86_64-MP/evp.c:501:9:
|
||
error: cast between incompatible function types from
|
||
‘void (*)(void *)’ to ‘int (*)(EVP_MD_CTX *)’ {aka
|
||
‘int (*)(struct hc_EVP_MD_CTX *)’} [-Werror=cast-function-type]
|
||
501 | (hc_evp_md_init)null_Init,
|
||
| ^
|
||
|
||
The openafs commit:
|
||
|
||
Linux-5.17: Kernel build uses -Wcast-function-type (6bdfa97673)
|
||
|
||
fixed above error when the Linux kernel has CONFIG_WERROR enabled and
|
||
openafs is configured with --enable-checking. But we will still fail
|
||
when CONFIG_WERROR is enabled and openafs is configured with
|
||
--disable-checking (which is the default).
|
||
|
||
Update osconf.m4 to always set CFLAGS_NOCAST_FUNCTION_TYPE, so that it
|
||
can be used to avoid the above compiler check even when checking is
|
||
disabled.
|
||
|
||
NOTE: The only use of CFLAGS_NOCAST_FUNCTION_TYPE is to correct the
|
||
warnings flagged in external/heimdal/hcrypto/evp.c and evp-algs.c.
|
||
|
||
NOTE: --enable-checking=all can be used to bypass setting the define.
|
||
|
||
Reviewed-on: https://gerrit.openafs.org/15417
|
||
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
|
||
Tested-by: Benjamin Kaduk <kaduk@mit.edu>
|
||
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
|
||
(cherry picked from commit 2357ac6ae59ad1908b14b5e76e5931c7071ee9a2)
|
||
|
||
Change-Id: I96ccf89a7316449a0492d08dbfc0e625e143d933
|
||
Reviewed-on: https://gerrit.openafs.org/15507
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
|
||
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
|
||
Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
|
||
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
|
||
|
||
commit bb1b7b1adcb52a07a1bdcb0d42f8a5a366b5f4db
|
||
Author: Kailas Zadbuke <kailashsz@in.ibm.com>
|
||
Date: Sun Apr 23 20:06:00 2023 +0530
|
||
|
||
afs: Check UHasTokens in afs_GCUserData
|
||
|
||
It looks that EndTimestamp holds the user’s token expiration time even after
|
||
function afs_MarkUserExpired() gets called from afs_pag_destroy(). So it
|
||
seems that the PAGs/tokens are not being reclaimed. This will lead to pag
|
||
buildup on the system.
|
||
|
||
The PAG/'struct unixuser' is not being freed because afs_GCUserData() checks
|
||
afs_HasUsableTokens(), which checks EndTimestamp, which says the tokens still
|
||
haven't expired. So the PAG doesn't get freed.
|
||
|
||
This behavior has existed since commit ba1d050c6e (Make unixuser's vid
|
||
advisory).
|
||
|
||
To fix this, change afs_GCuserData() to check for the UHasTokens flag, and
|
||
ignore any tokens if UHasTokens isn't set. This causes the PAG to be freed,
|
||
since we don't look at the EndTimestamp of the tokens at all.
|
||
|
||
Thanks Todd DeSantis for your support.
|
||
|
||
Signed-off-by: Kailas Zadbuke <kailashsz@in.ibm.com>
|
||
Reviewed-on: https://gerrit.openafs.org/15404
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
|
||
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
|
||
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
|
||
(cherry picked from commit 630d423897e5fffed1873aa9d12c4e74a8481041)
|
||
|
||
Change-Id: I74b1ea1173df904928ad027e48b231058c1e0f1d
|
||
Reviewed-on: https://gerrit.openafs.org/15506
|
||
Tested-by: BuildBot <buildbot@rampaginggeek.com>
|
||
Reviewed-by: Kailas Zadbuke <kailashsz@in.ibm.com>
|
||
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
|
||
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
|
||
Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
|
||
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
|