11f88aa09SMartin Matuskadnl # 21f88aa09SMartin Matuskadnl # Linux 5.14 adds a change to require set_page_dirty to be manually 31f88aa09SMartin Matuskadnl # wired up in struct address_space_operations. Determine if this needs 41f88aa09SMartin Matuskadnl # to be done. This patch set also introduced __set_page_dirty_nobuffers 51f88aa09SMartin Matuskadnl # declaration in linux/pagemap.h, so these tests look for the presence 61f88aa09SMartin Matuskadnl # of that function to tell the compiler to assign set_page_dirty in 71f88aa09SMartin Matuskadnl # module/os/linux/zfs/zpl_file.c 81f88aa09SMartin Matuskadnl # 91f88aa09SMartin MatuskaAC_DEFUN([ZFS_AC_KERNEL_SRC_VFS_SET_PAGE_DIRTY_NOBUFFERS], [ 101f88aa09SMartin Matuska ZFS_LINUX_TEST_SRC([vfs_has_set_page_dirty_nobuffers], [ 111f88aa09SMartin Matuska #include <linux/pagemap.h> 121f88aa09SMartin Matuska #include <linux/fs.h> 131f88aa09SMartin Matuska 141f88aa09SMartin Matuska static const struct address_space_operations 151f88aa09SMartin Matuska aops __attribute__ ((unused)) = { 161f88aa09SMartin Matuska .set_page_dirty = __set_page_dirty_nobuffers, 171f88aa09SMartin Matuska }; 181f88aa09SMartin Matuska ],[]) 191f88aa09SMartin Matuska]) 201f88aa09SMartin Matuska 211f88aa09SMartin MatuskaAC_DEFUN([ZFS_AC_KERNEL_VFS_SET_PAGE_DIRTY_NOBUFFERS], [ 221f88aa09SMartin Matuska dnl # 231f88aa09SMartin Matuska dnl # Linux 5.14 change requires set_page_dirty() to be assigned 241f88aa09SMartin Matuska dnl # in address_space_operations() 251f88aa09SMartin Matuska dnl # 26*e3aa18adSMartin Matuska AC_MSG_CHECKING([whether __set_page_dirty_nobuffers exists]) 271f88aa09SMartin Matuska ZFS_LINUX_TEST_RESULT([vfs_has_set_page_dirty_nobuffers], [ 281f88aa09SMartin Matuska AC_MSG_RESULT([yes]) 291f88aa09SMartin Matuska AC_DEFINE(HAVE_VFS_SET_PAGE_DIRTY_NOBUFFERS, 1, 301f88aa09SMartin Matuska [__set_page_dirty_nobuffers exists]) 311f88aa09SMartin Matuska ],[ 321f88aa09SMartin Matuska AC_MSG_RESULT([no]) 331f88aa09SMartin Matuska ]) 341f88aa09SMartin Matuska]) 35