From 081869eb8ba1733a044468203ab82affe258b359 Mon Sep 17 00:00:00 2001 From: Cheyenne Wills Date: Wed, 30 Mar 2022 11:09:45 -0600 Subject: [PATCH 06/12] Linux-5.18 replace set_page_dirty with dirty_folio The commits going into Linux 5.18: fs: Add aops->dirty_folio (6f31a5a261db) fs: Convert __set_page_dirty_buffers to block_dirty_folio (e621900ad2) fs: Remove aops ->set_page_dirty (3a3bae50af) replaces the address_space_operations structure member set_page_dirty which with dirty_folio. The linux function __set_page_dirty_buffers is replaced by block_dirty_folio. Nothing within afs uses or implements the set_page_dirty function, however the structure member is required to be initialized. Add an autoconf test for the dirty_folio member and if present, set the address_space_operations member dirty_folio to block_dirty_folio instead of setting the set_page_dirty member. Change-Id: Iad6783308989f4a1390c1c94d2c571048bd4e771 Reviewed-on: https://gerrit.openafs.org/14939 Tested-by: BuildBot Reviewed-by: Benjamin Kaduk (cherry picked from commit 6aa129e743e882cf30c35afd67eabf82274c5fca) --- src/afs/LINUX/osi_vnodeops.c | 4 ++++ src/cf/linux-kernel-struct.m4 | 2 ++ 2 files changed, 6 insertions(+) diff --git a/src/afs/LINUX/osi_vnodeops.c b/src/afs/LINUX/osi_vnodeops.c index 00103a538..a0c78c04d 100644 --- a/src/afs/LINUX/osi_vnodeops.c +++ b/src/afs/LINUX/osi_vnodeops.c @@ -3288,7 +3288,11 @@ static struct address_space_operations afs_file_aops = { .readpage = afs_linux_readpage, .readpages = afs_linux_readpages, .writepage = afs_linux_writepage, +#if defined(STRUCT_ADDRESS_SPACE_OPERATIONS_HAS_DIRTY_FOLIO) + .dirty_folio = block_dirty_folio, +#else .set_page_dirty = __set_page_dirty_buffers, +#endif #if defined (STRUCT_ADDRESS_SPACE_OPERATIONS_HAS_WRITE_BEGIN) .write_begin = afs_linux_write_begin, .write_end = afs_linux_write_end, diff --git a/src/cf/linux-kernel-struct.m4 b/src/cf/linux-kernel-struct.m4 index 003d34ab8..2d8cee655 100644 --- a/src/cf/linux-kernel-struct.m4 +++ b/src/cf/linux-kernel-struct.m4 @@ -3,6 +3,8 @@ dnl Check for structure elements AC_CHECK_LINUX_STRUCT([address_space], [backing_dev_info], [fs.h]) AC_CHECK_LINUX_STRUCT([address_space_operations], [write_begin], [fs.h]) +dnl linux 5.18 replaced set_page_dirty with dirty_folio +AC_CHECK_LINUX_STRUCT([address_space_operations], [dirty_folio], [fs.h]) AC_CHECK_LINUX_STRUCT([backing_dev_info], [name], [backing-dev.h]) AC_CHECK_LINUX_STRUCT([cred], [session_keyring], [cred.h]) -- 2.36.1