mirror of
https://git.proxmox.com/git/mirror_zfs
synced 2025-04-28 06:00:44 +00:00
Use simple folio migration function
Avoids using fallback_migrate_folio, which starts unnecessary writeback (leading to BUG in migrate_folio_extra). Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: Tony Hutter <hutter2@llnl.gov> Reviewed-by: Brian Atkinson <batkinson@lanl.gov> Signed-off-by: tstabrawa <59430211+tstabrawa@users.noreply.github.com> Closes #16568 Closes #16723
This commit is contained in:
parent
f38e2d239f
commit
7b6e9675da
27
config/kernel-vfs-migrate_folio.m4
Normal file
27
config/kernel-vfs-migrate_folio.m4
Normal file
@ -0,0 +1,27 @@
|
||||
dnl #
|
||||
dnl # Linux 6.0 uses migrate_folio in lieu of migrate_page
|
||||
dnl #
|
||||
AC_DEFUN([ZFS_AC_KERNEL_SRC_VFS_MIGRATE_FOLIO], [
|
||||
ZFS_LINUX_TEST_SRC([vfs_has_migrate_folio], [
|
||||
#include <linux/fs.h>
|
||||
#include <linux/migrate.h>
|
||||
|
||||
static const struct address_space_operations
|
||||
aops __attribute__ ((unused)) = {
|
||||
.migrate_folio = migrate_folio,
|
||||
};
|
||||
],[])
|
||||
])
|
||||
|
||||
AC_DEFUN([ZFS_AC_KERNEL_VFS_MIGRATE_FOLIO], [
|
||||
dnl #
|
||||
dnl # Linux 6.0 uses migrate_folio in lieu of migrate_page
|
||||
dnl #
|
||||
AC_MSG_CHECKING([whether migrate_folio exists])
|
||||
ZFS_LINUX_TEST_RESULT([vfs_has_migrate_folio], [
|
||||
AC_MSG_RESULT([yes])
|
||||
AC_DEFINE(HAVE_VFS_MIGRATE_FOLIO, 1, [migrate_folio exists])
|
||||
],[
|
||||
AC_MSG_RESULT([no])
|
||||
])
|
||||
])
|
@ -77,6 +77,7 @@ AC_DEFUN([ZFS_AC_KERNEL_TEST_SRC], [
|
||||
ZFS_AC_KERNEL_SRC_SGET
|
||||
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_FSYNC_2ARGS
|
||||
ZFS_AC_KERNEL_SRC_VFS_DIRECT_IO
|
||||
ZFS_AC_KERNEL_SRC_VFS_READPAGES
|
||||
@ -187,6 +188,7 @@ AC_DEFUN([ZFS_AC_KERNEL_TEST_RESULT], [
|
||||
ZFS_AC_KERNEL_SGET
|
||||
ZFS_AC_KERNEL_VFS_FILEMAP_DIRTY_FOLIO
|
||||
ZFS_AC_KERNEL_VFS_READ_FOLIO
|
||||
ZFS_AC_KERNEL_VFS_MIGRATE_FOLIO
|
||||
ZFS_AC_KERNEL_VFS_FSYNC_2ARGS
|
||||
ZFS_AC_KERNEL_VFS_DIRECT_IO
|
||||
ZFS_AC_KERNEL_VFS_READPAGES
|
||||
|
@ -28,6 +28,7 @@
|
||||
#include <linux/compat.h>
|
||||
#endif
|
||||
#include <linux/fs.h>
|
||||
#include <linux/migrate.h>
|
||||
#include <sys/file.h>
|
||||
#include <sys/dmu_objset.h>
|
||||
#include <sys/zfs_znode.h>
|
||||
@ -1090,6 +1091,11 @@ const struct address_space_operations zpl_address_space_operations = {
|
||||
#ifdef HAVE_VFS_FILEMAP_DIRTY_FOLIO
|
||||
.dirty_folio = filemap_dirty_folio,
|
||||
#endif
|
||||
#ifdef HAVE_VFS_MIGRATE_FOLIO
|
||||
.migrate_folio = migrate_folio,
|
||||
#else
|
||||
.migratepage = migrate_page,
|
||||
#endif
|
||||
};
|
||||
|
||||
const struct file_operations zpl_file_operations = {
|
||||
|
Loading…
Reference in New Issue
Block a user