[packages/kernel] - should be no longer needed as reclaim is async now

arekm arekm at pld-linux.org
Tue Oct 13 09:49:53 CEST 2020


commit d4d93b9b1c5c8f6d7a5bb6d70cd91f898b8545c0
Author: Arkadiusz Miśkiewicz <arekm at maven.pl>
Date:   Tue Oct 13 09:49:44 2020 +0200

    - should be no longer needed as reclaim is async now

 xfs-reclaim-hack.patch | 141 -------------------------------------------------
 1 file changed, 141 deletions(-)
---
diff --git a/xfs-reclaim-hack.patch b/xfs-reclaim-hack.patch
deleted file mode 100644
index c0db7b22..00000000
--- a/xfs-reclaim-hack.patch
+++ /dev/null
@@ -1,141 +0,0 @@
-; https://github.com/bobrik/linux/pull/2
-From 1910e1157eb4b455b877a813f0a1b786dcbf799c Mon Sep 17 00:00:00 2001
-From: Ivan Babrou <ibobrik at gmail.com>
-Date: Tue, 27 Nov 2018 14:37:25 -0800
-Subject: [PATCH] xfs: add a sysctl to disable memory reclaim participation
-
-XFS may try to flush dirty inodes in reclaim and it slows things down
-considerably, especially in high page cache and slow disk environment.
-
-This sysctl allows to exclude XFS from kswapd and direct reclaim.
-
-See: https://marc.info/?t=154345187200003
-diff --git a/Documentation/admin-guide/xfs.rst b/Documentation/admin-guide/xfs.rst
-index 3b9b5c149f322..b33a4822f879c 100644
---- a/Documentation/admin-guide/xfs.rst
-+++ b/Documentation/admin-guide/xfs.rst
-@@ -331,6 +331,12 @@ The following sysctls are available for the XFS filesystem:
- 	is to control the rate at which the allocator moves between
- 	allocation groups when allocating extents for new files.
- 
-+  fs.xfs.memory_reclaim		(Min: 0  Default: 2  Max: 2)
-+	Set memory reclaim strategy:
-+	0: no inode reclaim (background reclaim is still enabled)
-+	1: async inode reclaim of clean inodes only
-+	2: sync inode reclaim (includes synchronous writes)
-+
- Deprecated Sysctls
- ==================
- 
-diff --git a/fs/xfs/xfs_globals.c b/fs/xfs/xfs_globals.c
-index 3e1cc3001bcbf..2927cc2b12b57 100644
---- a/fs/xfs/xfs_globals.c
-+++ b/fs/xfs/xfs_globals.c
-@@ -43,6 +43,7 @@ xfs_param_t xfs_params = {
- 	.fstrm_timer	= {	1,		30*100,		3600*100},
- 	.eofb_timer	= {	1,		300,		3600*24},
- 	.cowb_timer	= {	1,		1800,		3600*24},
-+	.memory_reclaim	= {	0,		2,		2,	},
- };
- 
- struct xfs_globals xfs_globals = {
-diff --git a/fs/xfs/xfs_icache.c b/fs/xfs/xfs_icache.c
-index 544b5211221cd..54fcf1af7e3f5 100644
---- a/fs/xfs/xfs_icache.c
-+++ b/fs/xfs/xfs_icache.c
-@@ -1380,7 +1380,11 @@ xfs_reclaim_inodes_nr(
- 	xfs_reclaim_work_queue(mp);
- 	xfs_ail_push_all(mp->m_ail);
- 
--	return xfs_reclaim_inodes_ag(mp, SYNC_TRYLOCK | SYNC_WAIT, &nr_to_scan);
-+	int flags = SYNC_TRYLOCK;
-+	if (xfs_memory_reclaim == XFS_MEMORY_RECLAIM_SYNC)
-+		flags |= SYNC_WAIT;
-+
-+	return xfs_reclaim_inodes_ag(mp, flags, &nr_to_scan);
- }
- 
- /*
-diff --git a/fs/xfs/xfs_icache.h b/fs/xfs/xfs_icache.h
-index bff4d85e54984..2547c0d85e5a1 100644
---- a/fs/xfs/xfs_icache.h
-+++ b/fs/xfs/xfs_icache.h
-@@ -54,6 +54,12 @@ struct xfs_eofblocks {
-  */
- #define XFS_AGITER_INEW_WAIT	0x1	/* wait on new inodes */
- 
-+enum {
-+	XFS_MEMORY_RECLAIM_NONE = 0,
-+	XFS_MEMORY_RECLAIM_ASYNC,
-+	XFS_MEMORY_RECLAIM_SYNC,
-+};
-+
- int xfs_iget(struct xfs_mount *mp, struct xfs_trans *tp, xfs_ino_t ino,
- 	     uint flags, uint lock_flags, xfs_inode_t **ipp);
- 
-diff --git a/fs/xfs/xfs_linux.h b/fs/xfs/xfs_linux.h
-index dcd1292664b34..3cddbffaa8cb4 100644
---- a/fs/xfs/xfs_linux.h
-+++ b/fs/xfs/xfs_linux.h
-@@ -110,6 +110,7 @@ typedef __u32			xfs_nlink_t;
- #define xfs_fstrm_centisecs	xfs_params.fstrm_timer.val
- #define xfs_eofb_secs		xfs_params.eofb_timer.val
- #define xfs_cowb_secs		xfs_params.cowb_timer.val
-+#define xfs_memory_reclaim	xfs_params.memory_reclaim.val
- 
- #define current_cpu()		(raw_smp_processor_id())
- #define current_pid()		(current->pid)
-diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c
-index 0b0282d2f011c..232e3706a0a60 100644
---- a/fs/xfs/xfs_super.c
-+++ b/fs/xfs/xfs_super.c
-@@ -1828,6 +1828,8 @@ xfs_fs_nr_cached_objects(
- 	/* Paranoia: catch incorrect calls during mount setup or teardown */
- 	if (WARN_ON_ONCE(!sb->s_fs_info))
- 		return 0;
-+	if (xfs_memory_reclaim == XFS_MEMORY_RECLAIM_NONE)
-+		return 0;
- 	return xfs_reclaim_inodes_count(XFS_M(sb));
- }
- 
-diff --git a/fs/xfs/xfs_sysctl.c b/fs/xfs/xfs_sysctl.c
-index afe1f66aaa698..ccf0d1759c215 100644
---- a/fs/xfs/xfs_sysctl.c
-+++ b/fs/xfs/xfs_sysctl.c
-@@ -193,6 +193,15 @@ static struct ctl_table xfs_table[] = {
- 		.extra1		= &xfs_params.cowb_timer.min,
- 		.extra2		= &xfs_params.cowb_timer.max,
- 	},
-+	{
-+		.procname	= "memory_reclaim",
-+		.data		= &xfs_params.memory_reclaim.val,
-+		.maxlen		= sizeof(int),
-+		.mode		= 0644,
-+		.proc_handler	= proc_dointvec_minmax,
-+		.extra1		= &xfs_params.memory_reclaim.min,
-+		.extra2		= &xfs_params.memory_reclaim.max,
-+	},
- 	/* please keep this the last entry */
- #ifdef CONFIG_PROC_FS
- 	{
-diff --git a/fs/xfs/xfs_sysctl.h b/fs/xfs/xfs_sysctl.h
-index 82afee005140a..eaf3addd486e7 100644
---- a/fs/xfs/xfs_sysctl.h
-+++ b/fs/xfs/xfs_sysctl.h
-@@ -49,6 +49,7 @@ typedef struct xfs_param {
- 	xfs_sysctl_val_t fstrm_timer;	/* Filestream dir-AG assoc'n timeout. */
- 	xfs_sysctl_val_t eofb_timer;	/* Interval between eofb scan wakeups */
- 	xfs_sysctl_val_t cowb_timer;	/* Interval between cowb scan wakeups */
-+	xfs_sysctl_val_t memory_reclaim;/* Memory reclaim policy. */
- } xfs_param_t;
- 
- /*
-@@ -89,6 +90,7 @@ enum {
- 	XFS_ROTORSTEP = 20,
- 	XFS_INHERIT_NODFRG = 21,
- 	XFS_FILESTREAM_TIMER = 22,
-+	XFS_MEMORY_RECLAIM = 23,
- };
- 
- extern xfs_param_t	xfs_params;
-
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/kernel.git/commitdiff/d4d93b9b1c5c8f6d7a5bb6d70cd91f898b8545c0



More information about the pld-cvs-commit mailing list