diff --git a/NEWS b/NEWS
index 8d33aef485..3742408228 100644
--- a/NEWS
+++ b/NEWS
@@ -1,5 +1,15 @@
                        User-Visible OpenAFS Changes
 
+OpenAFS 1.8.16.1
+
+  All UNIX clients
+
+    * A build warning has been fixed when building with GCC 16 (16824).
+
+  Linux client
+
+    * Support for Linux kernel 7.1 has been added (16822, 16823).
+
 OpenAFS 1.8.16
 
   All platforms
diff --git a/configure-libafs.ac b/configure-libafs.ac
index 87f6c56faf..0581eeed77 100644
--- a/configure-libafs.ac
+++ b/configure-libafs.ac
@@ -4,7 +4,7 @@ AC_CONFIG_AUX_DIR([build-tools])
 AC_CONFIG_SRCDIR([src/libafs/Makefile.common.in])
 
 AC_CONFIG_HEADERS([src/config/afsconfig.h])
-MACOS_VERSION=1.8.16
+MACOS_VERSION=1.8.17d1
 
 AC_SUBST([MACOS_VERSION])
 
diff --git a/configure.ac b/configure.ac
index c1447aa75b..9c2b9a9393 100644
--- a/configure.ac
+++ b/configure.ac
@@ -5,7 +5,7 @@ AC_CONFIG_MACRO_DIR([src/cf])
 AC_CONFIG_SRCDIR([src/config/stds.h])
 
 AC_CONFIG_HEADERS([src/config/afsconfig.h])
-MACOS_VERSION=1.8.16
+MACOS_VERSION=1.8.17d1
 
 AC_SUBST([MACOS_VERSION])
 
diff --git a/src/afs/LINUX/osi_vnodeops.c b/src/afs/LINUX/osi_vnodeops.c
index 020fbec7cb..667264960e 100644
--- a/src/afs/LINUX/osi_vnodeops.c
+++ b/src/afs/LINUX/osi_vnodeops.c
@@ -35,8 +35,11 @@
 #if defined(HAVE_LINUX_FOLIO_ADD_LRU) || defined(HAVE_LINUX_LRU_CACHE_ADD_FILE)
 # include <linux/swap.h>
 #endif
-#include <linux/pagevec.h>
-
+#if defined(HAVE_LINUX_FOLIO_BATCH_H)
+# include <linux/folio_batch.h>
+#else
+# include <linux/pagevec.h>
+#endif
 #if defined(LINUX_WRITE_CACHE_PAGES_USES_FOLIOS) || defined(LINUX_NEED_CUSTOM_WRITE_CACHE_PAGES)
 # define LINUX_WRITEPAGES_USES_FOLIOS
 # include <linux/migrate.h>
diff --git a/src/afs/afs_dcache.c b/src/afs/afs_dcache.c
index 250bc6d545..a4b3e8f9a1 100644
--- a/src/afs/afs_dcache.c
+++ b/src/afs/afs_dcache.c
@@ -1242,7 +1242,6 @@ afs_GetDownDSlot(int anumber)
     struct afs_q *tq, *nq;
     struct dcache *tdc;
     int ix;
-    unsigned int cnt;
 
     AFS_STATCNT(afs_GetDownDSlot);
     if (cacheDiskType == AFS_FCACHE_TYPE_MEM)
@@ -1257,8 +1256,7 @@ afs_GetDownDSlot(int anumber)
     if (anumber <= 0)
 	return;			/* enough already free */
 
-    for (cnt = 0, tq = afs_DLRU.prev; tq != &afs_DLRU && anumber > 0;
-	 tq = nq, cnt++) {
+    for (tq = afs_DLRU.prev; tq != &afs_DLRU && anumber > 0; tq = nq) {
 	tdc = (struct dcache *)tq;	/* q is first elt in dcache entry */
 	nq = QPrev(tq);		/* in case we remove it */
 	if (tdc->refCount == 0) {
diff --git a/src/cf/linux-kernel-assorted.m4 b/src/cf/linux-kernel-assorted.m4
index 3655ea1784..9150931b4e 100644
--- a/src/cf/linux-kernel-assorted.m4
+++ b/src/cf/linux-kernel-assorted.m4
@@ -24,7 +24,9 @@ LINUX_FOP_F_FSYNC_TAKES_RANGE
 LINUX_AOP_WRITEBACK_CONTROL
 LINUX_FS_STRUCT_FOP_HAS_SPLICE
 LINUX_KERNEL_POSIX_LOCK_FILE_WAIT_ARG
-LINUX_KERNEL_PAGEVEC_INIT_COLD_ARG
+dnl Linux 7.1: No need to check for pagevec_init() if folio_batch.h is present
+AS_IF([test "x${ac_cv_linux_header_folio_batch_h}" != "xyes"],
+      [LINUX_KERNEL_PAGEVEC_INIT_COLD_ARG])
 LINUX_POSIX_TEST_LOCK_RETURNS_CONFLICT
 LINUX_POSIX_TEST_LOCK_CONFLICT_ARG
 LINUX_KERNEL_SOCK_CREATE
diff --git a/src/cf/linux-kernel-func.m4 b/src/cf/linux-kernel-func.m4
index b5b6c3c296..20f659da4e 100644
--- a/src/cf/linux-kernel-func.m4
+++ b/src/cf/linux-kernel-func.m4
@@ -112,9 +112,12 @@ AC_CHECK_LINUX_FUNC([page_get_link],
 AC_CHECK_LINUX_FUNC([page_offset],
                     [#include <linux/pagemap.h>],
                     [page_offset(NULL);])
-AC_CHECK_LINUX_FUNC([pagevec_lru_add_file],
-                    [#include <linux/pagevec.h>],
-                    [__pagevec_lru_add_file(NULL);])
+dnl Linux 7.1: No need to check for __pagevec_lru_add_file() if folio_batch.h is present
+AS_IF([test "x${ac_cv_linux_header_folio_batch_h}" != "xyes"],
+      [AC_CHECK_LINUX_FUNC([pagevec_lru_add_file],
+                           [#include <linux/pagevec.h>],
+                           [__pagevec_lru_add_file(NULL);])
+])
 AC_CHECK_LINUX_FUNC([path_lookup],
                     [#include <linux/fs.h>
                      #include <linux/namei.h>],
diff --git a/src/cf/linux-kernel-header.m4 b/src/cf/linux-kernel-header.m4
index fc52830d2f..2ac1c1d87a 100644
--- a/src/cf/linux-kernel-header.m4
+++ b/src/cf/linux-kernel-header.m4
@@ -12,4 +12,6 @@ AC_CHECK_LINUX_HEADER([uaccess.h])
 AC_CHECK_LINUX_HEADER([stdarg.h])
 dnl Linux 6.3 relocated file locking related declarations into it's own header
 AC_CHECK_LINUX_HEADER([filelock.h])
+dnl Linux 7.1 renamed pagevec.h to folio_batch.h
+AC_CHECK_LINUX_HEADER([folio_batch.h])
 ])
diff --git a/src/cf/linux-kernel-struct.m4 b/src/cf/linux-kernel-struct.m4
index 46c23a25fb..932171fb12 100644
--- a/src/cf/linux-kernel-struct.m4
+++ b/src/cf/linux-kernel-struct.m4
@@ -13,6 +13,8 @@ AC_CHECK_LINUX_STRUCT([backing_dev_info], [name],
                       [backing-dev.h])
 AC_CHECK_LINUX_STRUCT([cred], [session_keyring], [cred.h])
 AC_CHECK_LINUX_STRUCT([ctl_table], [ctl_name], [sysctl.h])
+dnl Linux 2.6.16 moved dentry->d_alias to dentry->d_u.d_alias
+dnl Linux 7.1 moved it back to dentry->d_alias
 AC_CHECK_LINUX_STRUCT([dentry], [d_u.d_alias], [dcache.h])
 dnl linux 2.6.16 moved dentry->d_child to dentry->d_u.d_child
 dnl linux 3.19 moved it back to dentry->d_child
diff --git a/src/cf/linux-test4.m4 b/src/cf/linux-test4.m4
index c978bb0f2e..7f13e3dc52 100644
--- a/src/cf/linux-test4.m4
+++ b/src/cf/linux-test4.m4
@@ -950,7 +950,11 @@ AC_DEFUN([LINUX_NEED_CUSTOM_WRITE_CACHE_PAGES], [
   AC_CHECK_LINUX_BUILD([whether we need our own write_cache_pages],
 		       [ac_cv_linux_need_custom_write_cache_pages],
 		       [[#include <linux/pagemap.h>
-			 #include <linux/pagevec.h>
+		         #if defined(HAVE_LINUX_FOLIO_BATCH_H)
+			 # include <linux/folio_batch.h>
+			 #else
+			 # include <linux/pagevec.h>
+			 #endif
 			 #include <linux/version.h>
 			 static void write_cache_pages(void *x) {return;}]],
 		       [[struct folio_batch fbatch;
diff --git a/src/config/NTMakefile.amd64_w2k b/src/config/NTMakefile.amd64_w2k
index 7f3951a59a..2d57cf86e6 100644
--- a/src/config/NTMakefile.amd64_w2k
+++ b/src/config/NTMakefile.amd64_w2k
@@ -88,7 +88,7 @@ AFSPRODUCT_VER_MAJOR=1
 AFSPRODUCT_VER_MINOR=8
 !ENDIF
 !IF !DEFINED(AFSPRODUCT_VER_PATCH)
-AFSPRODUCT_VER_PATCH=1601
+AFSPRODUCT_VER_PATCH=1602
 !ENDIF
 !IF !DEFINED(AFSPRODUCT_VER_BUILD)
 AFSPRODUCT_VER_BUILD=0
diff --git a/src/config/NTMakefile.i386_nt40 b/src/config/NTMakefile.i386_nt40
index 4adc3e1b1f..5102e9121c 100644
--- a/src/config/NTMakefile.i386_nt40
+++ b/src/config/NTMakefile.i386_nt40
@@ -88,7 +88,7 @@ AFSPRODUCT_VER_MAJOR=1
 AFSPRODUCT_VER_MINOR=8
 !ENDIF
 !IF !DEFINED(AFSPRODUCT_VER_PATCH)
-AFSPRODUCT_VER_PATCH=1601
+AFSPRODUCT_VER_PATCH=1602
 !ENDIF
 !IF !DEFINED(AFSPRODUCT_VER_BUILD)
 AFSPRODUCT_VER_BUILD=0
diff --git a/src/config/NTMakefile.i386_w2k b/src/config/NTMakefile.i386_w2k
index 1bb3e00670..1bfad54cc2 100644
--- a/src/config/NTMakefile.i386_w2k
+++ b/src/config/NTMakefile.i386_w2k
@@ -92,7 +92,7 @@ AFSPRODUCT_VER_MAJOR=1
 AFSPRODUCT_VER_MINOR=8
 !ENDIF
 !IF !DEFINED(AFSPRODUCT_VER_PATCH)
-AFSPRODUCT_VER_PATCH=1601
+AFSPRODUCT_VER_PATCH=1602
 !ENDIF
 !IF !DEFINED(AFSPRODUCT_VER_BUILD)
 AFSPRODUCT_VER_BUILD=0
