diff --git a/03b280649f5e22ed74c217d7c98c3416a2fa9052 b/03b280649f5e22ed74c217d7c98c3416a2fa9052 new file mode 100644 index 0000000..0ade45a --- /dev/null +++ b/03b280649f5e22ed74c217d7c98c3416a2fa9052 @@ -0,0 +1,111 @@ +commit 03b280649f5e22ed74c217d7c98c3416a2fa9052 +Author: Cheyenne Wills +Date: Wed Jun 12 13:56:44 2024 -0600 + + Linux-6.10: remove includes for asm/ia32_unistd.h + + The Linux 6.10 commit: + "x86/syscall/compat: Remove ia32_unistd.h" (e2d168328e) + + Removed the header ia32_unistd.h since it was just a wrapper for the + unistd_32_ia32.h. + + The commit: + "linux-afs-translator-xen-20060731" (29dd792381) + added an ia32_unistd.h include to several files; all were not needed + (as they didn't reference any of the contents from the header file, e.g + _NR_ia32_*). + + The commit: + "amd64-hook-ia32-table-20030519" (831e172463) + added an include for ia32_unistd.h to osi_module.c. + + A later commit: + "osi-probe-syscall-20050129" (f126dbdbe2) + removed many of the references to defines from ia32_unistd.h, but did + not remove the include for the header. + + Currently the only remaining files (linux-kernel-syscall-probe.m4, + LINUX/osi_probe.c and LINUX/osi_syscall.c) continue to reference the + items from ia32_unistd.h, but only when building older kernels that + either don't have LINUX_KEYRING_SUPPORT or when + ENABLE_LINUX_SYSCALL_PROBING is enabled (in both cases, these are only + applicable for older kernels where the asm/ia32_unistd.h file would be + present). + + For the files that don't have references (i.e. _NR_ia32_*), we can + simply remove the include for asm/ia32_unistd.h. For the remaining set + of files, we can leave the include for asm/ia32_unistd.h since the code + already has preprocessor conditionals so it's only included for older + Linux kernels where the header file will be present. + + We noted above, the include for asm/ia32_unistd.h is already conditional + on the checks for LINUX_KEYRING_SUPPORT and ENABLE_LINUX_SYSCALL_PROBING + so we do not need to add any additional configure checks. + + Change-Id: I901b5c0f0ff86272b02f898f3951325533d22f4f + Reviewed-on: https://gerrit.openafs.org/15763 + Reviewed-by: Michael Meffie + Tested-by: BuildBot + Reviewed-by: Andrew Deason + +diff --git a/src/afs/LINUX/osi_ioctl.c b/src/afs/LINUX/osi_ioctl.c +index 3e797745c..d964d8103 100644 +--- a/src/afs/LINUX/osi_ioctl.c ++++ b/src/afs/LINUX/osi_ioctl.c +@@ -21,10 +21,6 @@ + #include /* For syscall numbers. */ + #include + +-#ifdef AFS_AMD64_LINUX_ENV +-#include +-#endif +- + #include + #include + #include +diff --git a/src/afs/LINUX/osi_module.c b/src/afs/LINUX/osi_module.c +index 8ace127f4..499810cc6 100644 +--- a/src/afs/LINUX/osi_module.c ++++ b/src/afs/LINUX/osi_module.c +@@ -21,10 +21,6 @@ + #include /* For syscall numbers. */ + #include + +-#ifdef AFS_AMD64_LINUX_ENV +-#include +-#endif +- + #include + #include + #include +diff --git a/src/afs/LINUX/osi_pag_module.c b/src/afs/LINUX/osi_pag_module.c +index ea3d1bd2c..346108489 100644 +--- a/src/afs/LINUX/osi_pag_module.c ++++ b/src/afs/LINUX/osi_pag_module.c +@@ -20,10 +20,6 @@ + #include /* For syscall numbers. */ + #include + +-#ifdef AFS_AMD64_LINUX_ENV +-#include +-#endif +- + #include + #include + #include +diff --git a/src/afs/LINUX/osi_proc.c b/src/afs/LINUX/osi_proc.c +index 9c5a080f0..ad7c695b9 100644 +--- a/src/afs/LINUX/osi_proc.c ++++ b/src/afs/LINUX/osi_proc.c +@@ -25,10 +25,6 @@ + #include /* For syscall numbers. */ + #include + +-#ifdef AFS_AMD64_LINUX_ENV +-# include +-#endif +- + #include + #include + #include diff --git a/0f6a3a402f4a66114da9231032bd68cdc4dee7bc b/0f6a3a402f4a66114da9231032bd68cdc4dee7bc new file mode 100644 index 0000000..cf55c23 --- /dev/null +++ b/0f6a3a402f4a66114da9231032bd68cdc4dee7bc @@ -0,0 +1,96 @@ +commit 0f6a3a402f4a66114da9231032bd68cdc4dee7bc +Author: Cheyenne Wills +Date: Wed Jun 12 14:13:59 2024 -0600 + + Linux-6.10: Use filemap_alloc_folio when avail + + The Linux 6.10 commit: + "mm: remove page_cache_alloc()" (3f2ae4ebd5) + removed the page_cache_alloc(), with a note that callers would be using + filemap_alloc_folio instead. + + The function filemap_alloc_folio() was introduced in Linux 5.15 commit: + "mm/filemap: Add filemap_alloc_folio" (bb3c579e25) + + Add a configure check for filemap_alloc_folio and update the function + afs_linux_read_cache() to use a wrapper that calls filemap_alloc_folio() + if available otherwise calls page_cache_alloc(). + + Minor whitespace/style cleanup + + Note: The function filemap_alloc_folio() was introduced in Linux 5.15, + so this change affects builds using the Linux kernel 5.15 and later. + + Change-Id: Ia17aefc38fe9787e54b315c864da726d610b8bb9 + Reviewed-on: https://gerrit.openafs.org/15764 + Tested-by: BuildBot + Reviewed-by: Andrew Deason + Reviewed-by: Michael Meffie + +diff --git a/src/afs/LINUX/osi_vnodeops.c b/src/afs/LINUX/osi_vnodeops.c +index 511b0838f..18809c89f 100644 +--- a/src/afs/LINUX/osi_vnodeops.c ++++ b/src/afs/LINUX/osi_vnodeops.c +@@ -2320,6 +2320,24 @@ mapping_read_page(struct address_space *mapping, struct page *page) + #endif + } + ++/* ++ * small compat wrapper for filemap_alloc_folio/page_cache_alloc ++ */ ++static struct page * ++afs_page_cache_alloc(struct address_space *cachemapping) ++{ ++#if defined(HAVE_LINUX_FILEMAP_ALLOC_FOLIO) ++ struct folio *folio; ++ folio = filemap_alloc_folio(mapping_gfp_mask(cachemapping), 0); ++ if (folio == NULL) { ++ return NULL; ++ } ++ return &folio->page; ++#else ++ return page_cache_alloc(cachemapping); ++#endif ++} ++ + /* Populate a page by filling it from the cache file pointed at by cachefp + * (which contains indicated chunk) + * If task is NULL, the page copy occurs syncronously, and the routine +@@ -2358,11 +2376,12 @@ afs_linux_read_cache(struct file *cachefp, struct page *page, + pageindex = (offset - AFS_CHUNKTOBASE(chunk)) >> PAGE_SHIFT; + + while (cachepage == NULL) { +- cachepage = find_get_page(cachemapping, pageindex); ++ cachepage = find_get_page(cachemapping, pageindex); + if (!cachepage) { +- if (!newpage) +- newpage = page_cache_alloc(cachemapping); +- if (!newpage) { ++ if (newpage == NULL) { ++ newpage = afs_page_cache_alloc(cachemapping); ++ } ++ if (newpage == NULL) { + code = -ENOMEM; + goto out; + } +diff --git a/src/cf/linux-kernel-func.m4 b/src/cf/linux-kernel-func.m4 +index 93f96f5ad..83ea354b0 100644 +--- a/src/cf/linux-kernel-func.m4 ++++ b/src/cf/linux-kernel-func.m4 +@@ -253,6 +253,16 @@ AC_CHECK_LINUX_FUNC([no_strlcpy], + size_t s; + s = strlcpy(buff);]]) + ++dnl Linux 5.15 introduced filemap_alloc_folio() as a replacement for ++dnl page_cache_alloc(). page_cache_alloc() was updated to become just a ++dnl wrapper for filemap_alloc_folio(). ++dnl Linux 6.10 removed page_cache_alloc(). ++AC_CHECK_LINUX_FUNC([filemap_alloc_folio], ++ [#include ++ #include ], ++ [[static struct folio *folio; ++ folio = filemap_alloc_folio(0, 0);]]) ++ + dnl Consequences - things which get set as a result of the + dnl above tests + AS_IF([test "x$ac_cv_linux_func_d_alloc_anon" = "xno"], diff --git a/658942f2791fad5e33ec7542158c16dfc66eed39 b/658942f2791fad5e33ec7542158c16dfc66eed39 new file mode 100644 index 0000000..0753ecc --- /dev/null +++ b/658942f2791fad5e33ec7542158c16dfc66eed39 @@ -0,0 +1,66 @@ +commit 658942f2791fad5e33ec7542158c16dfc66eed39 +Author: Cheyenne Wills +Date: Wed Jun 12 14:16:43 2024 -0600 + + Linux-6.10: define a wrapper for vmalloc + + The Linux 6.10 commit: + "mm: vmalloc: enable memory allocation profiling" (88ae5fb755) + changed vmalloc from a function to a wrapper macro. + + This change results in build errors: + "error: implicit declaration of function ‘vmalloc’; did you mean + ‘kmalloc’? [-Werror=implicit-function-declaration]" + + when vmalloc is passed as a parameter to the afs_atomlist_create() and + afs_lhash_create() functions. + + Add a little wrapper function around vmalloc() to use for the parameter + to afs_atomlist_create() and afs_lhash_create(). + + Note: A configure test was not needed for this change since the name + and functionality of Linux's vmalloc did not change. + + Change-Id: I69c1da9eea5d1de11c1628bbcef427f81f5c01e1 + Reviewed-on: https://gerrit.openafs.org/15765 + Tested-by: BuildBot + Reviewed-by: Andrew Deason + Reviewed-by: Michael Meffie + +diff --git a/src/afs/LINUX/osi_alloc.c b/src/afs/LINUX/osi_alloc.c +index 86cd0e571..7c4b4a1ca 100644 +--- a/src/afs/LINUX/osi_alloc.c ++++ b/src/afs/LINUX/osi_alloc.c +@@ -196,6 +196,15 @@ local_free(void *p, size_t n) + vfree(p); + } + ++/* ++ * wrapper for vmalloc(), since vmalloc() may be a macro ++ */ ++static void * ++local_vmalloc(size_t size) ++{ ++ return vmalloc(size); ++} ++ + /* linux_alloc_init(): Initializes the kernel memory allocator. As part + * of this process, it also initializes a pool of osi_linux_mem + * structures as well as the hash table itself. +@@ -209,14 +218,14 @@ linux_alloc_init(void) + /* initiate our pool of osi_linux_mem structs */ + al_mem_pool = + afs_atomlist_create(sizeof(struct osi_linux_mem), sizeof(long) * 1024, +- (void *)vmalloc, local_free); ++ local_vmalloc, local_free); + if (!al_mem_pool) { + printf("afs_osi_Alloc: Error in initialization(atomlist_create)\n"); + return 0; + } + + /* initialize the hash table to hold references to alloc'ed chunks */ +- lh_mem_htab = afs_lhash_create(hash_equal, (void *)vmalloc, local_free); ++ lh_mem_htab = afs_lhash_create(hash_equal, local_vmalloc, local_free); + if (!lh_mem_htab) { + printf("afs_osi_Alloc: Error in initialization(lhash_create)\n"); + return 0; diff --git a/7097eec17bc01bcfc12c4d299136b2d3b94ec3d7 b/7097eec17bc01bcfc12c4d299136b2d3b94ec3d7 new file mode 100644 index 0000000..85b61e0 --- /dev/null +++ b/7097eec17bc01bcfc12c4d299136b2d3b94ec3d7 @@ -0,0 +1,51 @@ +commit 7097eec17bc01bcfc12c4d299136b2d3b94ec3d7 +Author: Cheyenne Wills +Date: Thu Jun 6 10:42:57 2024 -0600 + + Linux 6.10: Move 'inline' before func return type + + With Linux 6.10 commit: + "kbuild: turn on -Wextra by default" (f5982cceb3) + there are additional compiler warnings that can turn + into build errors when --enable-checking is used. + + "error: ‘inline’ is not at beginning of declaration + [-Werror=old-style-declaration]" + + The error is due to the return type preceding the "inline" keyword + in function declarations. + + Fix the declarations for file_can_read_pages() and + afs_linux_readpage_fastpath() to have the proper ordering of the + static/inline keywords attributes so they precede the return type. + + Just a note that the `static` and `inline` keywords must precede a + function's return type. + + Change-Id: I3ff9d45c119e70a90faf18fbf6d49fb6b9adcf33 + Reviewed-on: https://gerrit.openafs.org/15768 + Reviewed-by: Andrew Deason + Tested-by: Andrew Deason + +diff --git a/src/afs/LINUX/osi_vnodeops.c b/src/afs/LINUX/osi_vnodeops.c +index 18809c89f..c6c3bfe39 100644 +--- a/src/afs/LINUX/osi_vnodeops.c ++++ b/src/afs/LINUX/osi_vnodeops.c +@@ -2443,7 +2443,7 @@ afs_linux_read_cache(struct file *cachefp, struct page *page, + /* + * Return true if the file has a mapping that can read pages + */ +-static int inline ++static inline int + file_can_read_pages(struct file *fp) + { + #if defined(STRUCT_ADDRESS_SPACE_OPERATIONS_HAS_READ_FOLIO) +@@ -2456,7 +2456,7 @@ file_can_read_pages(struct file *fp) + return 0; + } + +-static int inline ++static inline int + afs_linux_readpage_fastpath(struct file *fp, struct page *pp, int *codep) + { + loff_t offset = page_offset(pp); diff --git a/d8b56f21994ce66d8daebb7d69e792f34c1a19ed b/d8b56f21994ce66d8daebb7d69e792f34c1a19ed new file mode 100644 index 0000000..11fc868 --- /dev/null +++ b/d8b56f21994ce66d8daebb7d69e792f34c1a19ed @@ -0,0 +1,76 @@ +commit d8b56f21994ce66d8daebb7d69e792f34c1a19ed +Author: Cheyenne Wills +Date: Wed Jun 12 14:24:01 2024 -0600 + + afs: avoid empty-body warning + + With Linux 6.10 commit: + "kbuild: turn on -Wextra by default" (f5982cceb3) + there are additional compiler warnings that can turn + into build errors when --enable-checking is used. + + "error: suggest braces around empty body in an ‘if’ + statement [-Werror=empty-body]" + + when there is an empty body, e.g. + if (foo) + ; + + Most cases are due to the macros afs_PutCell and afs_PutServer which are + "empty" macros. + + Update the afs_PutCell and afs_PutServer macros so they expand to + do {} while(0) + + Add a comment at the definitions for afs_PutCell and afs_PutServer to + document the reason for keeping them. + + Add braces to conditionals that have an empty body. + + There are no functional changes with this commit. + + Change-Id: I359723eb6a19d1c78449902b4f477da131b0fa18 + Reviewed-on: https://gerrit.openafs.org/15766 + Reviewed-by: Michael Meffie + Tested-by: BuildBot + Reviewed-by: Andrew Deason + +diff --git a/src/afs/afs.h b/src/afs/afs.h +index 4bde047e8..621a8a517 100644 +--- a/src/afs/afs.h ++++ b/src/afs/afs.h +@@ -349,7 +349,8 @@ struct cell_alias { + char *cell; + }; + +-#define afs_PutCell(cellp, locktype) ++/* In case someday a counterpart for afs_GetCell is needed */ ++#define afs_PutCell(cellp, locktype) do {} while(0) + + /* the unixuser flag bit definitions */ + #define UHasTokens 1 /* are the st and ct fields valid (ever set)? */ +@@ -537,7 +538,8 @@ struct server { + afs_int32 capabilities; + }; + +-#define afs_PutServer(servp, locktype) ++/* In case someday a counterpart for afs_GetServer is needed */ ++#define afs_PutServer(servp, locktype) do {} while(0) + + /* structs for some pioctls - these are (or should be) + * also in venus.h +diff --git a/src/afs/afs_cbqueue.c b/src/afs/afs_cbqueue.c +index 2dd633588..11e3aa3f1 100644 +--- a/src/afs/afs_cbqueue.c ++++ b/src/afs/afs_cbqueue.c +@@ -139,7 +139,9 @@ afs_DequeueCallback(struct vcache *avc) + debugvc = avc; + if (avc->callsort.prev) { + QRemove(&(avc->callsort)); +- } else; /* must have got dequeued in a race */ ++ } else { ++ /* must have got dequeued in a race */ ++ } + + return; + } /* afs_DequeueCallback */ diff --git a/openafs-stable-1_8_x-doc.tar.bz2 b/openafs-stable-1_8_x-doc.tar.bz2 index dbafd7d..777a3c4 100644 --- a/openafs-stable-1_8_x-doc.tar.bz2 +++ b/openafs-stable-1_8_x-doc.tar.bz2 @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f7a53059a4ce55ffe17b1e3d4f3ff3f0a16aa6e0121bbd3c76a581352dc94987 -size 3374716 +oid sha256:20c484ebfcedae2f5c3f7fe3ea5b0b02d7a05c0490ea75c80d255b1fe6e336fd +size 3370191 diff --git a/openafs-stable-1_8_x-doc.tar.bz2.md5 b/openafs-stable-1_8_x-doc.tar.bz2.md5 index b7d68ed..7ec416b 100644 --- a/openafs-stable-1_8_x-doc.tar.bz2.md5 +++ b/openafs-stable-1_8_x-doc.tar.bz2.md5 @@ -1 +1 @@ -d2a566c33aaf8d3ab7c8e4c15558f90e /home/hanke/obs/home:hauky:branches:filesystems/openafs/openafs-stable-1_8_x-doc.tar.bz2 +0fa436de034023841082afa08ab08bdf /home/hanke/obs/home:hauky:branches:filesystems/openafs/openafs-stable-1_8_x-doc.tar.bz2 diff --git a/openafs-stable-1_8_x-doc.tar.bz2.sha256 b/openafs-stable-1_8_x-doc.tar.bz2.sha256 index 14f8ddb..b451957 100644 --- a/openafs-stable-1_8_x-doc.tar.bz2.sha256 +++ b/openafs-stable-1_8_x-doc.tar.bz2.sha256 @@ -1 +1 @@ -f7a53059a4ce55ffe17b1e3d4f3ff3f0a16aa6e0121bbd3c76a581352dc94987 /home/hanke/obs/home:hauky:branches:filesystems/openafs/openafs-stable-1_8_x-doc.tar.bz2 +20c484ebfcedae2f5c3f7fe3ea5b0b02d7a05c0490ea75c80d255b1fe6e336fd /home/hanke/obs/home:hauky:branches:filesystems/openafs/openafs-stable-1_8_x-doc.tar.bz2 diff --git a/openafs-stable-1_8_x-src.tar.bz2 b/openafs-stable-1_8_x-src.tar.bz2 index ca41d2b..d681f72 100644 --- a/openafs-stable-1_8_x-src.tar.bz2 +++ b/openafs-stable-1_8_x-src.tar.bz2 @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:989dcdce5c9bf3c5de42fc5a9856a500634c48483d652567af9916d082dc9d27 -size 14547626 +oid sha256:c7afd3cab43d1dd6078c944cfb97ca2aee622187a5443b97166a3a25384fb01a +size 14596525 diff --git a/openafs-stable-1_8_x-src.tar.bz2.md5 b/openafs-stable-1_8_x-src.tar.bz2.md5 index ff05207..d5647b2 100644 --- a/openafs-stable-1_8_x-src.tar.bz2.md5 +++ b/openafs-stable-1_8_x-src.tar.bz2.md5 @@ -1 +1 @@ -a6123d9cb9a85943c8604d76980cdb2c /home/hanke/obs/home:hauky:branches:filesystems/openafs/openafs-stable-1_8_x-src.tar.bz2 +63de2df7b8b37f9305a12024ed400fb6 /home/hanke/obs/home:hauky:branches:filesystems/openafs/openafs-stable-1_8_x-src.tar.bz2 diff --git a/openafs-stable-1_8_x-src.tar.bz2.sha256 b/openafs-stable-1_8_x-src.tar.bz2.sha256 index ed622d7..5d69ca5 100644 --- a/openafs-stable-1_8_x-src.tar.bz2.sha256 +++ b/openafs-stable-1_8_x-src.tar.bz2.sha256 @@ -1 +1 @@ -989dcdce5c9bf3c5de42fc5a9856a500634c48483d652567af9916d082dc9d27 /home/hanke/obs/home:hauky:branches:filesystems/openafs/openafs-stable-1_8_x-src.tar.bz2 +c7afd3cab43d1dd6078c944cfb97ca2aee622187a5443b97166a3a25384fb01a /home/hanke/obs/home:hauky:branches:filesystems/openafs/openafs-stable-1_8_x-src.tar.bz2 diff --git a/openafs.changes b/openafs.changes index baf1414..25d43d5 100644 --- a/openafs.changes +++ b/openafs.changes @@ -1,3 +1,15 @@ +------------------------------------------------------------------- +Wed Aug 14 06:46:15 UTC 2024 - Christof Hanke + +- update to latest git branch stable-1_8_x +- change version to openafs-1.8.12-g... since the new stable release is 1.8.12 +- apply intermediate patches for kernel 6.10 + * 03b280649f5e22ed74c217d7c98c3416a2fa9052: Linux-6.10: remove includes for asm/ia32_unistd.h + * 0f6a3a402f4a66114da9231032bd68cdc4dee7bc: Linux-6.10: Use filemap_alloc_folio when avail + * 658942f2791fad5e33ec7542158c16dfc66eed39: Linux-6.10: define a wrapper for vmalloc + * d8b56f21994ce66d8daebb7d69e792f34c1a19ed: afs: avoid empty-body warning + * 7097eec17bc01bcfc12c4d299136b2d3b94ec3d7: Linux 6.10: Move 'inline' before func return type + ------------------------------------------------------------------- Fri Jun 14 05:47:03 UTC 2024 - Christof Hanke diff --git a/openafs.spec b/openafs.spec index cb7e900..206aa69 100644 --- a/openafs.spec +++ b/openafs.spec @@ -61,7 +61,7 @@ Name: openafs -Version: 1.8.11.g20240530 +Version: 1.8.12.g20240711 Release: 0 Summary: OpenAFS Distributed File System License: IPL-1.0 @@ -103,6 +103,12 @@ Source58: openafs.cacheinfo Source98: kmp_only.files Source99: openafs.changes +# PATCH-UPSTREAM required for kernel 6.10 +Patch1: 03b280649f5e22ed74c217d7c98c3416a2fa9052 +Patch2: 0f6a3a402f4a66114da9231032bd68cdc4dee7bc +Patch3: 658942f2791fad5e33ec7542158c16dfc66eed39 +Patch4: d8b56f21994ce66d8daebb7d69e792f34c1a19ed +Patch5: 7097eec17bc01bcfc12c4d299136b2d3b94ec3d7 # PATCH-HANDLE-BACKPORTS # some kernel-features from 6.5 are apparently in 6.4 Patch99: handle_backports.diff @@ -115,6 +121,7 @@ BuildRequires: automake BuildRequires: bison BuildRequires: coreutils BuildRequires: fdupes +BuildRequires: hostname %if %{have_firewalld} BuildRequires: firewall-macros %endif @@ -316,6 +323,11 @@ for src_file in %{S:0} %{S:1}; do done %setup -q -n openafs-%{upstream_version} -T -b 0 -b 1 +%patch -P 1 -p1 +%patch -P 2 -p1 +%patch -P 3 -p1 +%patch -P 4 -p1 +%patch -P 5 -p1 %if 0%{?sle_version} == 150600 %patch -P 99 -p1 %endif