1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
From 081869eb8ba1733a044468203ab82affe258b359 Mon Sep 17 00:00:00 2001
From: Cheyenne Wills <cwills@sinenomine.net>
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 <buildbot@rampaginggeek.com>
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
(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
|