From ab9bb193f9937fef5277b18228b74a1de48e40d3 Mon Sep 17 00:00:00 2001 From: Tony Hutter Date: Thu, 10 Apr 2025 17:36:31 -0700 Subject: [PATCH] Linux 6.0 compat: Check for migratepage VFS (#17217) The 6.0 kernel removes the 'migratepage' VFS op. Check for migratepage. Signed-off-by: Tony Hutter Reviewed-by: Rob Norris Reviewed-by: Alexander Motin + #include + + static const struct address_space_operations + aops __attribute__ ((unused)) = { + .migratepage = migrate_page, + }; + ],[]) +]) + +AC_DEFUN([ZFS_AC_KERNEL_VFS_MIGRATEPAGE], [ + dnl # + dnl # Linux 6.0 gets rid of address_space_operations.migratepage + dnl # + AC_MSG_CHECKING([whether migratepage exists]) + ZFS_LINUX_TEST_RESULT([vfs_has_migratepage], [ + AC_MSG_RESULT([yes]) + AC_DEFINE(HAVE_VFS_MIGRATEPAGE, 1, [migratepage exists]) + ],[ + AC_MSG_RESULT([no]) + ]) +]) diff --git a/config/kernel.m4 b/config/kernel.m4 index b8329a7b6..6ba0aeacd 100644 --- a/config/kernel.m4 +++ b/config/kernel.m4 @@ -79,6 +79,7 @@ AC_DEFUN([ZFS_AC_KERNEL_TEST_SRC], [ ZFS_AC_KERNEL_SRC_VFS_FILEMAP_DIRTY_FOLIO ZFS_AC_KERNEL_SRC_VFS_READ_FOLIO ZFS_AC_KERNEL_SRC_VFS_MIGRATE_FOLIO + ZFS_AC_KERNEL_SRC_VFS_MIGRATEPAGE ZFS_AC_KERNEL_SRC_VFS_FSYNC_2ARGS ZFS_AC_KERNEL_SRC_VFS_READPAGES ZFS_AC_KERNEL_SRC_VFS_SET_PAGE_DIRTY_NOBUFFERS @@ -191,6 +192,7 @@ AC_DEFUN([ZFS_AC_KERNEL_TEST_RESULT], [ ZFS_AC_KERNEL_VFS_FILEMAP_DIRTY_FOLIO ZFS_AC_KERNEL_VFS_READ_FOLIO ZFS_AC_KERNEL_VFS_MIGRATE_FOLIO + ZFS_AC_KERNEL_VFS_MIGRATEPAGE ZFS_AC_KERNEL_VFS_FSYNC_2ARGS ZFS_AC_KERNEL_VFS_READPAGES ZFS_AC_KERNEL_VFS_SET_PAGE_DIRTY_NOBUFFERS diff --git a/module/os/linux/zfs/zpl_file.c b/module/os/linux/zfs/zpl_file.c index 787d3cb31..4d10d130f 100644 --- a/module/os/linux/zfs/zpl_file.c +++ b/module/os/linux/zfs/zpl_file.c @@ -1058,7 +1058,7 @@ const struct address_space_operations zpl_address_space_operations = { #endif #ifdef HAVE_VFS_MIGRATE_FOLIO .migrate_folio = migrate_folio, -#else +#elif defined(HAVE_VFS_MIGRATEPAGE) .migratepage = migrate_page, #endif };