mm-commits.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Andrew Morton <akpm@linux-foundation.org>
To: akpm@linux-foundation.org, code@tyhicks.com,
	gregkh@linuxfoundation.org, hch@lst.de, jack@suse.cz,
	linux-mm@kvack.org, mm-commits@vger.kernel.org,
	torvalds@linux-foundation.org, viro@zeniv.linux.org.uk,
	willy@infradead.org
Subject: [patch 056/192] mm: require ->set_page_dirty to be explicitly wired up
Date: Mon, 28 Jun 2021 19:36:12 -0700	[thread overview]
Message-ID: <20210629023612.bG25ne0yF%akpm@linux-foundation.org> (raw)
In-Reply-To: <20210628193256.008961950a714730751c1423@linux-foundation.org>

From: Christoph Hellwig <hch@lst.de>
Subject: mm: require ->set_page_dirty to be explicitly wired up

Remove the CONFIG_BLOCK default to __set_page_dirty_buffers and just wire
that method up for the missing instances.

[hch@lst.de: ecryptfs: add a ->set_page_dirty cludge]
  Link: https://lkml.kernel.org/r/20210624125250.536369-1-hch@lst.de
Link: https://lkml.kernel.org/r/20210614061512.3966143-4-hch@lst.de
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Reviewed-by: Jan Kara <jack@suse.cz>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Cc: Matthew Wilcox (Oracle) <willy@infradead.org>
Cc: Tyler Hicks <code@tyhicks.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---

 fs/adfs/inode.c     |    1 +
 fs/affs/file.c      |    2 ++
 fs/bfs/file.c       |    1 +
 fs/block_dev.c      |    1 +
 fs/ecryptfs/mmap.c  |   13 +++++++++++++
 fs/exfat/inode.c    |    1 +
 fs/ext2/inode.c     |    2 ++
 fs/fat/inode.c      |    1 +
 fs/gfs2/meta_io.c   |    2 ++
 fs/hfs/inode.c      |    2 ++
 fs/hfsplus/inode.c  |    2 ++
 fs/hpfs/file.c      |    1 +
 fs/jfs/inode.c      |    1 +
 fs/minix/inode.c    |    1 +
 fs/nilfs2/mdt.c     |    1 +
 fs/ocfs2/aops.c     |    1 +
 fs/omfs/file.c      |    1 +
 fs/sysv/itree.c     |    1 +
 fs/udf/file.c       |    1 +
 fs/udf/inode.c      |    1 +
 fs/ufs/inode.c      |    1 +
 mm/page-writeback.c |   18 ++++--------------
 22 files changed, 42 insertions(+), 14 deletions(-)

--- a/fs/adfs/inode.c~mm-require-set_page_dirty-to-be-explicitly-wire-up
+++ a/fs/adfs/inode.c
@@ -73,6 +73,7 @@ static sector_t _adfs_bmap(struct addres
 }
 
 static const struct address_space_operations adfs_aops = {
+	.set_page_dirty	= __set_page_dirty_buffers,
 	.readpage	= adfs_readpage,
 	.writepage	= adfs_writepage,
 	.write_begin	= adfs_write_begin,
--- a/fs/affs/file.c~mm-require-set_page_dirty-to-be-explicitly-wire-up
+++ a/fs/affs/file.c
@@ -453,6 +453,7 @@ static sector_t _affs_bmap(struct addres
 }
 
 const struct address_space_operations affs_aops = {
+	.set_page_dirty	= __set_page_dirty_buffers,
 	.readpage = affs_readpage,
 	.writepage = affs_writepage,
 	.write_begin = affs_write_begin,
@@ -833,6 +834,7 @@ err_bh:
 }
 
 const struct address_space_operations affs_aops_ofs = {
+	.set_page_dirty	= __set_page_dirty_buffers,
 	.readpage = affs_readpage_ofs,
 	//.writepage = affs_writepage_ofs,
 	.write_begin = affs_write_begin_ofs,
--- a/fs/bfs/file.c~mm-require-set_page_dirty-to-be-explicitly-wire-up
+++ a/fs/bfs/file.c
@@ -188,6 +188,7 @@ static sector_t bfs_bmap(struct address_
 }
 
 const struct address_space_operations bfs_aops = {
+	.set_page_dirty	= __set_page_dirty_buffers,
 	.readpage	= bfs_readpage,
 	.writepage	= bfs_writepage,
 	.write_begin	= bfs_write_begin,
--- a/fs/block_dev.c~mm-require-set_page_dirty-to-be-explicitly-wire-up
+++ a/fs/block_dev.c
@@ -1754,6 +1754,7 @@ static int blkdev_writepages(struct addr
 }
 
 static const struct address_space_operations def_blk_aops = {
+	.set_page_dirty	= __set_page_dirty_buffers,
 	.readpage	= blkdev_readpage,
 	.readahead	= blkdev_readahead,
 	.writepage	= blkdev_writepage,
--- a/fs/ecryptfs/mmap.c~mm-require-set_page_dirty-to-be-explicitly-wire-up
+++ a/fs/ecryptfs/mmap.c
@@ -533,7 +533,20 @@ static sector_t ecryptfs_bmap(struct add
 	return block;
 }
 
+#include <linux/buffer_head.h>
+
 const struct address_space_operations ecryptfs_aops = {
+	/*
+	 * XXX: This is pretty broken for multiple reasons: ecryptfs does not
+	 * actually use buffer_heads, and ecryptfs will crash without
+	 * CONFIG_BLOCK.  But it matches the behavior before the default for
+	 * address_space_operations without the ->set_page_dirty method was
+	 * cleaned up, so this is the best we can do without maintainer
+	 * feedback.
+	 */
+#ifdef CONFIG_BLOCK
+	.set_page_dirty = __set_page_dirty_buffers,
+#endif
 	.writepage = ecryptfs_writepage,
 	.readpage = ecryptfs_readpage,
 	.write_begin = ecryptfs_write_begin,
--- a/fs/exfat/inode.c~mm-require-set_page_dirty-to-be-explicitly-wire-up
+++ a/fs/exfat/inode.c
@@ -491,6 +491,7 @@ int exfat_block_truncate_page(struct ino
 }
 
 static const struct address_space_operations exfat_aops = {
+	.set_page_dirty	= __set_page_dirty_buffers,
 	.readpage	= exfat_readpage,
 	.readahead	= exfat_readahead,
 	.writepage	= exfat_writepage,
--- a/fs/ext2/inode.c~mm-require-set_page_dirty-to-be-explicitly-wire-up
+++ a/fs/ext2/inode.c
@@ -961,6 +961,7 @@ ext2_dax_writepages(struct address_space
 }
 
 const struct address_space_operations ext2_aops = {
+	.set_page_dirty		= __set_page_dirty_buffers,
 	.readpage		= ext2_readpage,
 	.readahead		= ext2_readahead,
 	.writepage		= ext2_writepage,
@@ -975,6 +976,7 @@ const struct address_space_operations ex
 };
 
 const struct address_space_operations ext2_nobh_aops = {
+	.set_page_dirty		= __set_page_dirty_buffers,
 	.readpage		= ext2_readpage,
 	.readahead		= ext2_readahead,
 	.writepage		= ext2_nobh_writepage,
--- a/fs/fat/inode.c~mm-require-set_page_dirty-to-be-explicitly-wire-up
+++ a/fs/fat/inode.c
@@ -342,6 +342,7 @@ int fat_block_truncate_page(struct inode
 }
 
 static const struct address_space_operations fat_aops = {
+	.set_page_dirty	= __set_page_dirty_buffers,
 	.readpage	= fat_readpage,
 	.readahead	= fat_readahead,
 	.writepage	= fat_writepage,
--- a/fs/gfs2/meta_io.c~mm-require-set_page_dirty-to-be-explicitly-wire-up
+++ a/fs/gfs2/meta_io.c
@@ -89,11 +89,13 @@ static int gfs2_aspace_writepage(struct
 }
 
 const struct address_space_operations gfs2_meta_aops = {
+	.set_page_dirty	= __set_page_dirty_buffers,
 	.writepage = gfs2_aspace_writepage,
 	.releasepage = gfs2_releasepage,
 };
 
 const struct address_space_operations gfs2_rgrp_aops = {
+	.set_page_dirty	= __set_page_dirty_buffers,
 	.writepage = gfs2_aspace_writepage,
 	.releasepage = gfs2_releasepage,
 };
--- a/fs/hfs/inode.c~mm-require-set_page_dirty-to-be-explicitly-wire-up
+++ a/fs/hfs/inode.c
@@ -159,6 +159,7 @@ static int hfs_writepages(struct address
 }
 
 const struct address_space_operations hfs_btree_aops = {
+	.set_page_dirty	= __set_page_dirty_buffers,
 	.readpage	= hfs_readpage,
 	.writepage	= hfs_writepage,
 	.write_begin	= hfs_write_begin,
@@ -168,6 +169,7 @@ const struct address_space_operations hf
 };
 
 const struct address_space_operations hfs_aops = {
+	.set_page_dirty	= __set_page_dirty_buffers,
 	.readpage	= hfs_readpage,
 	.writepage	= hfs_writepage,
 	.write_begin	= hfs_write_begin,
--- a/fs/hfsplus/inode.c~mm-require-set_page_dirty-to-be-explicitly-wire-up
+++ a/fs/hfsplus/inode.c
@@ -156,6 +156,7 @@ static int hfsplus_writepages(struct add
 }
 
 const struct address_space_operations hfsplus_btree_aops = {
+	.set_page_dirty	= __set_page_dirty_buffers,
 	.readpage	= hfsplus_readpage,
 	.writepage	= hfsplus_writepage,
 	.write_begin	= hfsplus_write_begin,
@@ -165,6 +166,7 @@ const struct address_space_operations hf
 };
 
 const struct address_space_operations hfsplus_aops = {
+	.set_page_dirty	= __set_page_dirty_buffers,
 	.readpage	= hfsplus_readpage,
 	.writepage	= hfsplus_writepage,
 	.write_begin	= hfsplus_write_begin,
--- a/fs/hpfs/file.c~mm-require-set_page_dirty-to-be-explicitly-wire-up
+++ a/fs/hpfs/file.c
@@ -196,6 +196,7 @@ static int hpfs_fiemap(struct inode *ino
 }
 
 const struct address_space_operations hpfs_aops = {
+	.set_page_dirty	= __set_page_dirty_buffers,
 	.readpage = hpfs_readpage,
 	.writepage = hpfs_writepage,
 	.readahead = hpfs_readahead,
--- a/fs/jfs/inode.c~mm-require-set_page_dirty-to-be-explicitly-wire-up
+++ a/fs/jfs/inode.c
@@ -356,6 +356,7 @@ static ssize_t jfs_direct_IO(struct kioc
 }
 
 const struct address_space_operations jfs_aops = {
+	.set_page_dirty	= __set_page_dirty_buffers,
 	.readpage	= jfs_readpage,
 	.readahead	= jfs_readahead,
 	.writepage	= jfs_writepage,
--- a/fs/minix/inode.c~mm-require-set_page_dirty-to-be-explicitly-wire-up
+++ a/fs/minix/inode.c
@@ -442,6 +442,7 @@ static sector_t minix_bmap(struct addres
 }
 
 static const struct address_space_operations minix_aops = {
+	.set_page_dirty	= __set_page_dirty_buffers,
 	.readpage = minix_readpage,
 	.writepage = minix_writepage,
 	.write_begin = minix_write_begin,
--- a/fs/nilfs2/mdt.c~mm-require-set_page_dirty-to-be-explicitly-wire-up
+++ a/fs/nilfs2/mdt.c
@@ -434,6 +434,7 @@ nilfs_mdt_write_page(struct page *page,
 
 
 static const struct address_space_operations def_mdt_aops = {
+	.set_page_dirty		= __set_page_dirty_buffers,
 	.writepage		= nilfs_mdt_write_page,
 };
 
--- a/fs/ocfs2/aops.c~mm-require-set_page_dirty-to-be-explicitly-wire-up
+++ a/fs/ocfs2/aops.c
@@ -2453,6 +2453,7 @@ static ssize_t ocfs2_direct_IO(struct ki
 }
 
 const struct address_space_operations ocfs2_aops = {
+	.set_page_dirty		= __set_page_dirty_buffers,
 	.readpage		= ocfs2_readpage,
 	.readahead		= ocfs2_readahead,
 	.writepage		= ocfs2_writepage,
--- a/fs/omfs/file.c~mm-require-set_page_dirty-to-be-explicitly-wire-up
+++ a/fs/omfs/file.c
@@ -372,6 +372,7 @@ const struct inode_operations omfs_file_
 };
 
 const struct address_space_operations omfs_aops = {
+	.set_page_dirty = __set_page_dirty_buffers,
 	.readpage = omfs_readpage,
 	.readahead = omfs_readahead,
 	.writepage = omfs_writepage,
--- a/fs/sysv/itree.c~mm-require-set_page_dirty-to-be-explicitly-wire-up
+++ a/fs/sysv/itree.c
@@ -495,6 +495,7 @@ static sector_t sysv_bmap(struct address
 }
 
 const struct address_space_operations sysv_aops = {
+	.set_page_dirty = __set_page_dirty_buffers,
 	.readpage = sysv_readpage,
 	.writepage = sysv_writepage,
 	.write_begin = sysv_write_begin,
--- a/fs/udf/file.c~mm-require-set_page_dirty-to-be-explicitly-wire-up
+++ a/fs/udf/file.c
@@ -125,6 +125,7 @@ static int udf_adinicb_write_end(struct
 }
 
 const struct address_space_operations udf_adinicb_aops = {
+	.set_page_dirty	= __set_page_dirty_buffers,
 	.readpage	= udf_adinicb_readpage,
 	.writepage	= udf_adinicb_writepage,
 	.write_begin	= udf_adinicb_write_begin,
--- a/fs/udf/inode.c~mm-require-set_page_dirty-to-be-explicitly-wire-up
+++ a/fs/udf/inode.c
@@ -235,6 +235,7 @@ static sector_t udf_bmap(struct address_
 }
 
 const struct address_space_operations udf_aops = {
+	.set_page_dirty	= __set_page_dirty_buffers,
 	.readpage	= udf_readpage,
 	.readahead	= udf_readahead,
 	.writepage	= udf_writepage,
--- a/fs/ufs/inode.c~mm-require-set_page_dirty-to-be-explicitly-wire-up
+++ a/fs/ufs/inode.c
@@ -526,6 +526,7 @@ static sector_t ufs_bmap(struct address_
 }
 
 const struct address_space_operations ufs_aops = {
+	.set_page_dirty = __set_page_dirty_buffers,
 	.readpage = ufs_readpage,
 	.writepage = ufs_writepage,
 	.write_begin = ufs_write_begin,
--- a/mm/page-writeback.c~mm-require-set_page_dirty-to-be-explicitly-wire-up
+++ a/mm/page-writeback.c
@@ -32,7 +32,6 @@
 #include <linux/sysctl.h>
 #include <linux/cpu.h>
 #include <linux/syscalls.h>
-#include <linux/buffer_head.h> /* __set_page_dirty_buffers */
 #include <linux/pagevec.h>
 #include <linux/timer.h>
 #include <linux/sched/rt.h>
@@ -2555,13 +2554,9 @@ EXPORT_SYMBOL(redirty_page_for_writepage
 /*
  * Dirty a page.
  *
- * For pages with a mapping this should be done under the page lock
- * for the benefit of asynchronous memory errors who prefer a consistent
- * dirty state. This rule can be broken in some special cases,
- * but should be better not to.
- *
- * If the mapping doesn't provide a set_page_dirty a_op, then
- * just fall through and assume that it wants buffer_heads.
+ * For pages with a mapping this should be done under the page lock for the
+ * benefit of asynchronous memory errors who prefer a consistent dirty state.
+ * This rule can be broken in some special cases, but should be better not to.
  */
 int set_page_dirty(struct page *page)
 {
@@ -2569,7 +2564,6 @@ int set_page_dirty(struct page *page)
 
 	page = compound_head(page);
 	if (likely(mapping)) {
-		int (*spd)(struct page *) = mapping->a_ops->set_page_dirty;
 		/*
 		 * readahead/lru_deactivate_page could remain
 		 * PG_readahead/PG_reclaim due to race with end_page_writeback
@@ -2582,11 +2576,7 @@ int set_page_dirty(struct page *page)
 		 */
 		if (PageReclaim(page))
 			ClearPageReclaim(page);
-#ifdef CONFIG_BLOCK
-		if (!spd)
-			spd = __set_page_dirty_buffers;
-#endif
-		return (*spd)(page);
+		return mapping->a_ops->set_page_dirty(page);
 	}
 	if (!PageDirty(page)) {
 		if (!TestSetPageDirty(page))
_

  parent reply	other threads:[~2021-06-29  2:36 UTC|newest]

Thread overview: 202+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-06-29  2:32 incoming Andrew Morton
2021-06-29  2:33 ` [patch 001/192] mm/gup: fix try_grab_compound_head() race with split_huge_page() Andrew Morton
2021-06-29  2:33 ` [patch 002/192] mm/page_alloc: fix memory map initialization for descending nodes Andrew Morton
2021-06-29  2:33 ` [patch 003/192] mm/page_alloc: correct return value of populated elements if bulk array is populated Andrew Morton
2021-06-29  2:33 ` [patch 004/192] kthread: switch to new kerneldoc syntax for named variable macro argument Andrew Morton
2021-06-29  2:33 ` [patch 005/192] kthread_worker: fix return value when kthread_mod_delayed_work() races with kthread_cancel_delayed_work_sync() Andrew Morton
2021-06-29  2:33 ` [patch 006/192] ia64: headers: drop duplicated words Andrew Morton
2021-06-29  2:33 ` [patch 007/192] ia64: mca_drv: fix incorrect array size calculation Andrew Morton
2021-06-29  2:33 ` [patch 008/192] streamline_config.pl: make spacing consistent Andrew Morton
2021-06-29  2:33 ` [patch 009/192] streamline_config.pl: add softtabstop=4 for vim users Andrew Morton
2021-06-29  2:33 ` [patch 010/192] scripts/spelling.txt: add more spellings to spelling.txt Andrew Morton
2021-06-29  2:33 ` [patch 011/192] ntfs: fix validity check for file name attribute Andrew Morton
2021-06-29  2:33 ` [patch 012/192] squashfs: add option to panic on errors Andrew Morton
2021-06-29  2:33 ` [patch 013/192] ocfs2: remove unnecessary INIT_LIST_HEAD() Andrew Morton
2021-06-29  2:34 ` [patch 014/192] ocfs2: fix snprintf() checking Andrew Morton
2021-06-29  2:34 ` [patch 015/192] ocfs2: remove redundant assignment to pointer queue Andrew Morton
2021-06-29  2:34 ` [patch 016/192] ocfs2: remove repeated uptodate check for buffer Andrew Morton
2021-06-29  2:34 ` [patch 017/192] ocfs2: replace simple_strtoull() with kstrtoull() Andrew Morton
2021-06-29  2:34 ` [patch 018/192] ocfs2: remove redundant initialization of variable ret Andrew Morton
2021-06-29  2:34 ` [patch 019/192] kernel: watchdog: modify the explanation related to watchdog thread Andrew Morton
2021-06-29  2:34 ` [patch 020/192] doc: " Andrew Morton
2021-06-29  2:34 ` [patch 021/192] doc: watchdog: modify the doc related to "watchdog/%u" Andrew Morton
2021-06-29  2:34 ` [patch 022/192] slab: use __func__ to trace function name Andrew Morton
2021-06-29  2:34 ` [patch 023/192] kunit: make test->lock irq safe Andrew Morton
2021-06-29  2:34 ` [patch 024/192] mm/slub, kunit: add a KUnit test for SLUB debugging functionality Andrew Morton
2021-06-29  2:34 ` [patch 025/192] slub: remove resiliency_test() function Andrew Morton
2021-06-29  2:34 ` [patch 026/192] mm, slub: change run-time assertion in kmalloc_index() to compile-time Andrew Morton
2021-06-29  2:34 ` [patch 027/192] slub: restore slub_debug=- behavior Andrew Morton
2021-06-29  2:34 ` [patch 028/192] slub: actually use 'message' in restore_bytes() Andrew Morton
2021-06-29  2:34 ` [patch 029/192] slub: indicate slab_fix() uses printf formats Andrew Morton
2021-06-29  2:34 ` [patch 030/192] slub: force on no_hash_pointers when slub_debug is enabled Andrew Morton
2021-06-29  2:34 ` [patch 031/192] mm: slub: move sysfs slab alloc/free interfaces to debugfs Andrew Morton
2021-06-29  2:34 ` [patch 032/192] mm/slub: add taint after the errors are printed Andrew Morton
2021-06-29  2:35 ` [patch 033/192] mm/kmemleak: fix possible wrong memory scanning period Andrew Morton
2021-06-29  2:35 ` [patch 034/192] dax: fix ENOMEM handling in grab_mapping_entry() Andrew Morton
2021-06-29  2:35 ` [patch 035/192] tools/vm/page_owner_sort.c: check malloc() return Andrew Morton
2021-06-29  2:35 ` [patch 036/192] mm/debug_vm_pgtable: ensure THP availability via has_transparent_hugepage() Andrew Morton
2021-06-29  2:35 ` [patch 037/192] mm: mmap_lock: use local locks instead of disabling preemption Andrew Morton
2021-06-29  2:35 ` [patch 038/192] mm/page_reporting: fix code style in __page_reporting_request() Andrew Morton
2021-06-29  2:35 ` [patch 039/192] mm/page_reporting: export reporting order as module parameter Andrew Morton
2021-06-29  2:35 ` [patch 040/192] mm/page_reporting: allow driver to specify reporting order Andrew Morton
2021-06-29  2:35 ` [patch 041/192] virtio_balloon: specify page reporting order if needed Andrew Morton
2021-06-29  2:35 ` [patch 042/192] mm: page-writeback: kill get_writeback_state() comments Andrew Morton
2021-06-29  2:35 ` [patch 043/192] mm/page-writeback: Fix performance when BDI's share of ratio is 0 Andrew Morton
2021-06-29  2:35 ` [patch 044/192] mm/page-writeback: update the comment of Dirty position control Andrew Morton
2021-06-29  2:35 ` [patch 045/192] mm/page-writeback: use __this_cpu_inc() in account_page_dirtied() Andrew Morton
2021-06-29  2:35 ` [patch 046/192] writeback, cgroup: do not switch inodes with I_WILL_FREE flag Andrew Morton
2021-06-29  2:35 ` [patch 047/192] writeback, cgroup: add smp_mb() to cgroup_writeback_umount() Andrew Morton
2021-06-29  2:35 ` [patch 048/192] writeback, cgroup: increment isw_nr_in_flight before grabbing an inode Andrew Morton
2021-06-29  2:35 ` [patch 049/192] writeback, cgroup: switch to rcu_work API in inode_switch_wbs() Andrew Morton
2021-06-29  2:35 ` [patch 050/192] writeback, cgroup: keep list of inodes attached to bdi_writeback Andrew Morton
2021-06-29  2:35 ` [patch 051/192] writeback, cgroup: split out the functional part of inode_switch_wbs_work_fn() Andrew Morton
2021-06-29  2:35 ` [patch 052/192] writeback, cgroup: support switching multiple inodes at once Andrew Morton
2021-06-29  2:36 ` [patch 053/192] writeback, cgroup: release dying cgwbs by switching attached inodes Andrew Morton
2021-06-29  2:36 ` [patch 054/192] fs: unexport __set_page_dirty Andrew Morton
2021-06-29  2:36 ` [patch 055/192] fs: move ramfs_aops to libfs Andrew Morton
2021-06-29  2:36 ` Andrew Morton [this message]
2021-06-29  2:36 ` [patch 057/192] mm/writeback: move __set_page_dirty() to core mm Andrew Morton
2021-06-29  2:36 ` [patch 058/192] mm/writeback: use __set_page_dirty in __set_page_dirty_nobuffers Andrew Morton
2021-06-29  2:36 ` [patch 059/192] iomap: use __set_page_dirty_nobuffers Andrew Morton
2021-06-29  2:36 ` [patch 060/192] fs: remove anon_set_page_dirty() Andrew Morton
2021-06-29  2:36 ` [patch 061/192] fs: remove noop_set_page_dirty() Andrew Morton
2021-06-29  2:36 ` [patch 062/192] mm: move page dirtying prototypes from mm.h Andrew Morton
2021-06-29  2:36 ` [patch 063/192] mm/gup_benchmark: support threading Andrew Morton
2021-06-29  2:36 ` [patch 064/192] mm: gup: allow FOLL_PIN to scale in SMP Andrew Morton
2021-06-29  2:36 ` [patch 065/192] mm: gup: pack has_pinned in MMF_HAS_PINNED Andrew Morton
2021-06-29  2:36 ` [patch 066/192] mm: pagewalk: fix walk for hugepage tables Andrew Morton
2021-06-29  2:36 ` [patch 067/192] mm/swapfile: use percpu_ref to serialize against concurrent swapoff Andrew Morton
2021-06-29  2:36 ` [patch 068/192] swap: fix do_swap_page() race with swapoff Andrew Morton
2021-06-29  2:36 ` [patch 069/192] mm/swap: remove confusing checking for non_swap_entry() in swap_ra_info() Andrew Morton
2021-06-29  2:36 ` [patch 070/192] mm/shmem: fix shmem_swapin() race with swapoff Andrew Morton
2021-06-29  2:37 ` [patch 071/192] mm/swapfile: move get_swap_page_of_type() under CONFIG_HIBERNATION Andrew Morton
2021-06-29  2:37 ` [patch 072/192] mm/swap: remove unused local variable nr_shadows Andrew Morton
2021-06-29  2:37 ` [patch 073/192] mm/swap_slots.c: delete meaningless forward declarations Andrew Morton
2021-06-29  2:37 ` [patch 074/192] mm, swap: remove unnecessary smp_rmb() in swap_type_to_swap_info() Andrew Morton
2021-06-29  2:37 ` [patch 075/192] mm: free idle swap cache page after COW Andrew Morton
2021-06-29  2:37 ` [patch 076/192] swap: check mapping_empty() for swap cache before being freed Andrew Morton
2021-06-29  2:37 ` [patch 077/192] mm/memcg: move mod_objcg_state() to memcontrol.c Andrew Morton
2021-06-29  2:37 ` [patch 078/192] mm/memcg: cache vmstat data in percpu memcg_stock_pcp Andrew Morton
2021-06-29  2:37 ` [patch 079/192] mm/memcg: improve refill_obj_stock() performance Andrew Morton
2021-06-29  2:37 ` [patch 080/192] mm/memcg: optimize user context object stock access Andrew Morton
2021-06-29  2:37 ` [patch 081/192] mm: memcg/slab: properly set up gfp flags for objcg pointer array Andrew Morton
2021-06-29  2:37 ` [patch 082/192] mm: memcg/slab: create a new set of kmalloc-cg-<n> caches Andrew Morton
2021-06-29  2:37 ` [patch 083/192] mm: memcg/slab: disable cache merging for KMALLOC_NORMAL caches Andrew Morton
2021-06-29  2:37 ` [patch 084/192] mm: memcontrol: fix root_mem_cgroup charging Andrew Morton
2021-06-29  2:37 ` [patch 085/192] mm: memcontrol: fix page charging in page replacement Andrew Morton
2021-06-29  2:37 ` [patch 086/192] mm: memcontrol: bail out early when !mm in get_mem_cgroup_from_mm Andrew Morton
2021-06-29  2:37 ` [patch 087/192] mm: memcontrol: remove the pgdata parameter of mem_cgroup_page_lruvec Andrew Morton
2021-06-29  2:37 ` [patch 088/192] mm: memcontrol: simplify lruvec_holds_page_lru_lock Andrew Morton
2021-06-29  2:37 ` [patch 089/192] mm: memcontrol: rename lruvec_holds_page_lru_lock to page_matches_lruvec Andrew Morton
2021-06-29  2:38 ` [patch 090/192] mm: memcontrol: simplify the logic of objcg pinning memcg Andrew Morton
2021-06-29  2:38 ` [patch 091/192] mm: memcontrol: move obj_cgroup_uncharge_pages() out of css_set_lock Andrew Morton
2021-06-29  2:38 ` [patch 092/192] mm: vmscan: remove noinline_for_stack Andrew Morton
2021-06-29  2:38 ` [patch 093/192] memcontrol: use flexible-array member Andrew Morton
2021-06-29  2:38 ` [patch 094/192] loop: use worker per cgroup instead of kworker Andrew Morton
2021-06-29  2:38 ` [patch 095/192] mm: charge active memcg when no mm is set Andrew Morton
2021-06-29  2:38 ` [patch 096/192] loop: charge i/o to mem and blk cg Andrew Morton
2021-06-29  2:38 ` [patch 097/192] mm: memcontrol: remove trailing semicolon in macros Andrew Morton
2021-06-29  2:38 ` [patch 098/192] perf: MAP_EXECUTABLE does not indicate VM_MAYEXEC Andrew Morton
2021-06-29  2:38 ` [patch 099/192] binfmt: remove in-tree usage of MAP_EXECUTABLE Andrew Morton
2021-06-29  2:38 ` [patch 100/192] mm: ignore MAP_EXECUTABLE in ksys_mmap_pgoff() Andrew Morton
2021-06-29  2:38 ` [patch 101/192] mm/mmap.c: logic of find_vma_intersection repeated in __do_munmap Andrew Morton
2021-06-29  2:38 ` [patch 102/192] mm/mmap: introduce unlock_range() for code cleanup Andrew Morton
2021-06-29  2:38 ` [patch 103/192] mm/mmap: use find_vma_intersection() in do_mmap() for overlap Andrew Morton
2021-06-29  2:38 ` [patch 104/192] mm/memory.c: fix comment of finish_mkwrite_fault() Andrew Morton
2021-06-29  2:38 ` [patch 105/192] mm: add vma_lookup(), update find_vma_intersection() comments Andrew Morton
2021-06-29  2:38 ` [patch 106/192] drm/i915/selftests: use vma_lookup() in __igt_mmap() Andrew Morton
2021-06-29  2:38 ` [patch 107/192] arch/arc/kernel/troubleshoot: use vma_lookup() instead of find_vma() Andrew Morton
2021-06-29  2:38 ` [patch 108/192] arch/arm64/kvm: use vma_lookup() instead of find_vma_intersection() Andrew Morton
2021-06-29  2:39 ` [patch 109/192] arch/powerpc/kvm/book3s_hv_uvmem: " Andrew Morton
2021-06-29  2:39 ` [patch 110/192] arch/powerpc/kvm/book3s: use vma_lookup() in kvmppc_hv_setup_htab_rma() Andrew Morton
2021-06-29  2:39 ` [patch 111/192] arch/mips/kernel/traps: use vma_lookup() instead of find_vma() Andrew Morton
2021-06-29  2:39 ` [patch 112/192] arch/m68k/kernel/sys_m68k: use vma_lookup() in sys_cacheflush() Andrew Morton
2021-06-29  2:39 ` [patch 113/192] x86/sgx: use vma_lookup() in sgx_encl_find() Andrew Morton
2021-06-29  2:39 ` [patch 114/192] virt/kvm: use vma_lookup() instead of find_vma_intersection() Andrew Morton
2021-06-29  2:39 ` [patch 115/192] vfio: " Andrew Morton
2021-06-29  2:39 ` [patch 116/192] net/ipv5/tcp: use vma_lookup() in tcp_zerocopy_receive() Andrew Morton
2021-06-29  2:39 ` [patch 117/192] drm/amdgpu: use vma_lookup() in amdgpu_ttm_tt_get_user_pages() Andrew Morton
2021-06-29  2:39 ` [patch 118/192] media: videobuf2: use vma_lookup() in get_vaddr_frames() Andrew Morton
2021-06-29  2:39 ` [patch 119/192] misc/sgi-gru/grufault: use vma_lookup() in gru_find_vma() Andrew Morton
2021-06-29  2:39 ` [patch 120/192] kernel/events/uprobes: use vma_lookup() in find_active_uprobe() Andrew Morton
2021-06-29  2:39 ` [patch 121/192] lib/test_hmm: use vma_lookup() in dmirror_migrate() Andrew Morton
2021-06-29  2:39 ` [patch 122/192] mm/ksm: use vma_lookup() in find_mergeable_vma() Andrew Morton
2021-06-29  2:39 ` [patch 123/192] mm/migrate: use vma_lookup() in do_pages_stat_array() Andrew Morton
2021-06-29  2:39 ` [patch 124/192] mm/mremap: use vma_lookup() in vma_to_resize() Andrew Morton
2021-06-29  2:39 ` [patch 125/192] mm/memory.c: use vma_lookup() in __access_remote_vm() Andrew Morton
2021-06-29  2:39 ` [patch 126/192] mm/mempolicy: " Andrew Morton
2021-06-29  2:39 ` [patch 127/192] mm: update legacy flush_tlb_* to use vma Andrew Morton
2021-06-29  2:39 ` [patch 128/192] mm: improve mprotect(R|W) efficiency on pages referenced once Andrew Morton
2021-06-29 17:50   ` Linus Torvalds
2021-06-30  0:12     ` Peter Xu
2021-06-30  1:39       ` Peter Xu
2021-06-30  2:25         ` Linus Torvalds
2021-06-30 16:42           ` Peter Xu
2021-06-30 18:03             ` Linus Torvalds
2021-07-01  1:27               ` Peter Xu
2021-07-01 18:29                 ` Linus Torvalds
2021-07-06  1:24                   ` Peter Xu
2021-06-29  2:40 ` [patch 129/192] h8300: remove unused variable Andrew Morton
2021-06-29  2:40 ` [patch 130/192] mm/dmapool: use DEVICE_ATTR_RO macro Andrew Morton
2021-06-29  2:40 ` [patch 131/192] mm, tracing: unify PFN format strings Andrew Morton
2021-06-29  2:40 ` [patch 132/192] mm/page_alloc: add an alloc_pages_bulk_array_node() helper Andrew Morton
2021-06-29  2:40 ` [patch 133/192] mm/vmalloc: switch to bulk allocator in __vmalloc_area_node() Andrew Morton
2021-06-29  2:40 ` [patch 134/192] mm/vmalloc: print a warning message first on failure Andrew Morton
2021-06-29  2:40 ` [patch 135/192] mm/vmalloc: remove quoted strings split across lines Andrew Morton
2021-06-29  2:40 ` [patch 136/192] mm/vmalloc: fallback to a single page allocator Andrew Morton
2021-06-29  2:40 ` [patch 137/192] mm: vmalloc: add cond_resched() in __vunmap() Andrew Morton
2021-06-29  2:40 ` [patch 138/192] printk: introduce dump_stack_lvl() Andrew Morton
2021-06-29  2:40 ` [patch 139/192] kasan: use dump_stack_lvl(KERN_ERR) to print stacks Andrew Morton
2021-06-29  2:40 ` [patch 140/192] kasan: test: improve failure message in KUNIT_EXPECT_KASAN_FAIL() Andrew Morton
2021-06-29  2:40 ` [patch 141/192] kasan: allow an architecture to disable inline instrumentation Andrew Morton
2021-06-29  2:40 ` [patch 142/192] kasan: allow architectures to provide an outline readiness check Andrew Morton
2021-06-29  2:40 ` [patch 143/192] mm: define default MAX_PTRS_PER_* in include/pgtable.h Andrew Morton
2021-06-29  2:40 ` [patch 144/192] kasan: use MAX_PTRS_PER_* for early shadow tables Andrew Morton
2021-06-29  2:40 ` [patch 145/192] kasan: rename CONFIG_KASAN_SW_TAGS_IDENTIFY to CONFIG_KASAN_TAGS_IDENTIFY Andrew Morton
2021-06-29  2:40 ` [patch 146/192] kasan: integrate the common part of two KASAN tag-based modes Andrew Morton
2021-06-29  2:40 ` [patch 147/192] kasan: add memory corruption identification support for hardware tag-based mode Andrew Morton
2021-06-29  2:41 ` [patch 148/192] mm: report which part of mem is being freed on initmem case Andrew Morton
2021-06-29  2:41 ` [patch 149/192] mm/mmzone.h: simplify is_highmem_idx() Andrew Morton
2021-06-29  2:41 ` [patch 150/192] mm: make __dump_page static Andrew Morton
2021-06-29  2:41 ` [patch 151/192] mm/page_alloc: bail out on fatal signal during reclaim/compaction retry attempt Andrew Morton
2021-06-29  2:41 ` [patch 152/192] mm/debug: factor PagePoisoned out of __dump_page Andrew Morton
2021-06-29  2:41 ` [patch 153/192] mm/page_owner: constify dump_page_owner Andrew Morton
2021-06-29  2:41 ` [patch 154/192] mm: make compound_head const-preserving Andrew Morton
2021-06-29  2:41 ` [patch 155/192] mm: constify get_pfnblock_flags_mask and get_pfnblock_migratetype Andrew Morton
2021-06-29  2:41 ` [patch 156/192] mm: constify page_count and page_ref_count Andrew Morton
2021-06-29  2:41 ` [patch 157/192] mm: optimise nth_page for contiguous memmap Andrew Morton
2021-06-29  2:41 ` [patch 158/192] mm/page_alloc: switch to pr_debug Andrew Morton
2021-06-29  2:41 ` [patch 159/192] kbuild: skip per-CPU BTF generation for pahole v1.18-v1.21 Andrew Morton
2021-06-29  2:41 ` [patch 160/192] mm/page_alloc: split per cpu page lists and zone stats Andrew Morton
2021-06-29  2:41 ` [patch 161/192] mm/page_alloc: convert per-cpu list protection to local_lock Andrew Morton
2021-06-29  2:41 ` [patch 162/192] mm/vmstat: convert NUMA statistics to basic NUMA counters Andrew Morton
2021-06-29  2:41 ` [patch 163/192] mm/vmstat: inline NUMA event counter updates Andrew Morton
2021-06-29  2:41 ` [patch 164/192] mm/page_alloc: batch the accounting updates in the bulk allocator Andrew Morton
2021-06-29  2:41 ` [patch 165/192] mm/page_alloc: reduce duration that IRQs are disabled for VM counters Andrew Morton
2021-06-29  2:41 ` [patch 166/192] mm/page_alloc: explicitly acquire the zone lock in __free_pages_ok Andrew Morton
2021-06-29  2:42 ` [patch 167/192] mm/page_alloc: avoid conflating IRQs disabled with zone->lock Andrew Morton
2021-06-29  2:42 ` [patch 168/192] mm/page_alloc: update PGFREE outside the zone lock in __free_pages_ok Andrew Morton
2021-06-29  2:42 ` [patch 169/192] mm: page_alloc: dump migrate-failed pages only at -EBUSY Andrew Morton
2021-06-29  2:42 ` [patch 170/192] mm/page_alloc: delete vm.percpu_pagelist_fraction Andrew Morton
2021-06-29  2:42 ` [patch 171/192] mm/page_alloc: disassociate the pcp->high from pcp->batch Andrew Morton
2021-06-29  2:42 ` [patch 172/192] mm/page_alloc: adjust pcp->high after CPU hotplug events Andrew Morton
2021-06-29  2:42 ` [patch 173/192] mm/page_alloc: scale the number of pages that are batch freed Andrew Morton
2021-06-29  2:42 ` [patch 174/192] mm/page_alloc: limit the number of pages on PCP lists when reclaim is active Andrew Morton
2021-06-29  2:42 ` [patch 175/192] mm/page_alloc: introduce vm.percpu_pagelist_high_fraction Andrew Morton
2021-06-29  2:42 ` [patch 176/192] mm: drop SECTION_SHIFT in code comments Andrew Morton
2021-06-29  2:42 ` [patch 177/192] mm/page_alloc: improve memmap_pages dbg msg Andrew Morton
2021-06-29  2:42 ` [patch 178/192] mm/page_alloc: fix counting of managed_pages Andrew Morton
2021-06-29  2:42 ` [patch 179/192] mm/page_alloc: move free_the_page Andrew Morton
2021-06-29  2:42 ` [patch 180/192] alpha: remove DISCONTIGMEM and NUMA Andrew Morton
2021-06-29  2:42 ` [patch 181/192] arc: update comment about HIGHMEM implementation Andrew Morton
2021-06-29  2:42 ` [patch 182/192] arc: remove support for DISCONTIGMEM Andrew Morton
2021-06-29  2:42 ` [patch 183/192] m68k: " Andrew Morton
2021-06-29  2:42 ` [patch 184/192] mm: remove CONFIG_DISCONTIGMEM Andrew Morton
2021-06-29  2:42 ` [patch 185/192] arch, mm: remove stale mentions of DISCONIGMEM Andrew Morton
2021-06-29  2:42 ` [patch 186/192] docs: remove description of DISCONTIGMEM Andrew Morton
2021-06-29  2:43 ` [patch 187/192] mm: replace CONFIG_NEED_MULTIPLE_NODES with CONFIG_NUMA Andrew Morton
2021-06-29  2:43 ` [patch 188/192] mm: replace CONFIG_FLAT_NODE_MEM_MAP with CONFIG_FLATMEM Andrew Morton
2021-06-29  2:43 ` [patch 189/192] mm/page_alloc: allow high-order pages to be stored on the per-cpu lists Andrew Morton
2021-06-29  2:43 ` [patch 190/192] mm/page_alloc: split pcp->high across all online CPUs for cpuless nodes Andrew Morton
2021-06-29  2:43 ` [patch 191/192] mm,hwpoison: send SIGBUS with error virutal address Andrew Morton
2021-06-29  2:43 ` [patch 192/192] mm,hwpoison: make get_hwpoison_page() call get_any_page() Andrew Morton

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210629023612.bG25ne0yF%akpm@linux-foundation.org \
    --to=akpm@linux-foundation.org \
    --cc=code@tyhicks.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=hch@lst.de \
    --cc=jack@suse.cz \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mm-commits@vger.kernel.org \
    --cc=torvalds@linux-foundation.org \
    --cc=viro@zeniv.linux.org.uk \
    --cc=willy@infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).