linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* start removing writepage instances v2
@ 2022-12-02 10:26 Christoph Hellwig
  2022-12-02 10:26 ` [PATCH 1/7] extfat: remove ->writepage Christoph Hellwig
                   ` (6 more replies)
  0 siblings, 7 replies; 8+ messages in thread
From: Christoph Hellwig @ 2022-12-02 10:26 UTC (permalink / raw)
  To: Andrew Morton, Namjae Jeon, Sungjong Seo, Jan Kara,
	OGAWA Hirofumi, Mikulas Patocka, Dave Kleikamp, Bob Copeland
  Cc: linux-fsdevel, linux-ext4, jfs-discussion, linux-karma-devel, linux-mm

Hi all,

The VM doesn't need or want ->writepage for writeback and is fine with
just having ->writepages as long as ->migrate_folio is implemented.

This series removes all ->writepage instances that use
block_write_full_page directly and also have a plain mpage_writepages
based ->writepages.

Andrew, can you pick this up through the -mm tree?

Changes since v1:
 - dropped the ext2 and udf patches that Jan merged through
   his tree
 - collected a bunch of ACKs

Diffstat:
 exfat/inode.c   |    9 ++-------
 fat/inode.c     |    9 ++-------
 hfs/inode.c     |    2 +-
 hfsplus/inode.c |    2 +-
 hpfs/file.c     |    9 ++-------
 jfs/inode.c     |    7 +------
 omfs/file.c     |    7 +------
 7 files changed, 10 insertions(+), 35 deletions(-)


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH 1/7] extfat: remove ->writepage
  2022-12-02 10:26 start removing writepage instances v2 Christoph Hellwig
@ 2022-12-02 10:26 ` Christoph Hellwig
  2022-12-02 10:26 ` [PATCH 2/7] fat: " Christoph Hellwig
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Christoph Hellwig @ 2022-12-02 10:26 UTC (permalink / raw)
  To: Andrew Morton, Namjae Jeon, Sungjong Seo, Jan Kara,
	OGAWA Hirofumi, Mikulas Patocka, Dave Kleikamp, Bob Copeland
  Cc: linux-fsdevel, linux-ext4, jfs-discussion, linux-karma-devel,
	linux-mm, Johannes Weiner

->writepage is a very inefficient method to write back data, and only
used through write_cache_pages or a a fallback when no ->migrate_folio
method is present.

Set ->migrate_folio to the generic buffer_head based helper, and remove
the ->writepage implementation.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Acked-by: Namjae Jeon <linkinjeon@kernel.org>
Acked-by: Johannes Weiner <hannes@cmpxchg.org>
---
 fs/exfat/inode.c | 9 ++-------
 1 file changed, 2 insertions(+), 7 deletions(-)

diff --git a/fs/exfat/inode.c b/fs/exfat/inode.c
index 5590a1e83126c9..eac95bcd9a8aae 100644
--- a/fs/exfat/inode.c
+++ b/fs/exfat/inode.c
@@ -345,11 +345,6 @@ static void exfat_readahead(struct readahead_control *rac)
 	mpage_readahead(rac, exfat_get_block);
 }
 
-static int exfat_writepage(struct page *page, struct writeback_control *wbc)
-{
-	return block_write_full_page(page, exfat_get_block, wbc);
-}
-
 static int exfat_writepages(struct address_space *mapping,
 		struct writeback_control *wbc)
 {
@@ -473,12 +468,12 @@ static const struct address_space_operations exfat_aops = {
 	.invalidate_folio = block_invalidate_folio,
 	.read_folio	= exfat_read_folio,
 	.readahead	= exfat_readahead,
-	.writepage	= exfat_writepage,
 	.writepages	= exfat_writepages,
 	.write_begin	= exfat_write_begin,
 	.write_end	= exfat_write_end,
 	.direct_IO	= exfat_direct_IO,
-	.bmap		= exfat_aop_bmap
+	.bmap		= exfat_aop_bmap,
+	.migrate_folio	= buffer_migrate_folio,
 };
 
 static inline unsigned long exfat_hash(loff_t i_pos)
-- 
2.30.2



^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 2/7] fat: remove ->writepage
  2022-12-02 10:26 start removing writepage instances v2 Christoph Hellwig
  2022-12-02 10:26 ` [PATCH 1/7] extfat: remove ->writepage Christoph Hellwig
@ 2022-12-02 10:26 ` Christoph Hellwig
  2022-12-02 10:26 ` [PATCH 3/7] hfs: " Christoph Hellwig
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Christoph Hellwig @ 2022-12-02 10:26 UTC (permalink / raw)
  To: Andrew Morton, Namjae Jeon, Sungjong Seo, Jan Kara,
	OGAWA Hirofumi, Mikulas Patocka, Dave Kleikamp, Bob Copeland
  Cc: linux-fsdevel, linux-ext4, jfs-discussion, linux-karma-devel,
	linux-mm, Johannes Weiner

->writepage is a very inefficient method to write back data, and only
used through write_cache_pages or a a fallback when no ->migrate_folio
method is present.

Set ->migrate_folio to the generic buffer_head based helper, and remove
the ->writepage implementation.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Acked-by: Johannes Weiner <hannes@cmpxchg.org>
---
 fs/fat/inode.c | 9 ++-------
 1 file changed, 2 insertions(+), 7 deletions(-)

diff --git a/fs/fat/inode.c b/fs/fat/inode.c
index 1cbcc4608dc78f..d99b8549ec8f91 100644
--- a/fs/fat/inode.c
+++ b/fs/fat/inode.c
@@ -194,11 +194,6 @@ static int fat_get_block(struct inode *inode, sector_t iblock,
 	return 0;
 }
 
-static int fat_writepage(struct page *page, struct writeback_control *wbc)
-{
-	return block_write_full_page(page, fat_get_block, wbc);
-}
-
 static int fat_writepages(struct address_space *mapping,
 			  struct writeback_control *wbc)
 {
@@ -346,12 +341,12 @@ static const struct address_space_operations fat_aops = {
 	.invalidate_folio = block_invalidate_folio,
 	.read_folio	= fat_read_folio,
 	.readahead	= fat_readahead,
-	.writepage	= fat_writepage,
 	.writepages	= fat_writepages,
 	.write_begin	= fat_write_begin,
 	.write_end	= fat_write_end,
 	.direct_IO	= fat_direct_IO,
-	.bmap		= _fat_bmap
+	.bmap		= _fat_bmap,
+	.migrate_folio	= buffer_migrate_folio,
 };
 
 /*
-- 
2.30.2



^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 3/7] hfs: remove ->writepage
  2022-12-02 10:26 start removing writepage instances v2 Christoph Hellwig
  2022-12-02 10:26 ` [PATCH 1/7] extfat: remove ->writepage Christoph Hellwig
  2022-12-02 10:26 ` [PATCH 2/7] fat: " Christoph Hellwig
@ 2022-12-02 10:26 ` Christoph Hellwig
  2022-12-02 10:26 ` [PATCH 4/7] hfsplus: " Christoph Hellwig
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Christoph Hellwig @ 2022-12-02 10:26 UTC (permalink / raw)
  To: Andrew Morton, Namjae Jeon, Sungjong Seo, Jan Kara,
	OGAWA Hirofumi, Mikulas Patocka, Dave Kleikamp, Bob Copeland
  Cc: linux-fsdevel, linux-ext4, jfs-discussion, linux-karma-devel,
	linux-mm, Johannes Weiner

->writepage is a very inefficient method to write back data, and only
used through write_cache_pages or a a fallback when no ->migrate_folio
method is present.

Set ->migrate_folio to the generic buffer_head based helper, and stop
wiring up ->writepage for hfs_aops.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Acked-by: Johannes Weiner <hannes@cmpxchg.org>
---
 fs/hfs/inode.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/fs/hfs/inode.c b/fs/hfs/inode.c
index c4526f16355d54..16466a5e88b44b 100644
--- a/fs/hfs/inode.c
+++ b/fs/hfs/inode.c
@@ -173,12 +173,12 @@ const struct address_space_operations hfs_aops = {
 	.dirty_folio	= block_dirty_folio,
 	.invalidate_folio = block_invalidate_folio,
 	.read_folio	= hfs_read_folio,
-	.writepage	= hfs_writepage,
 	.write_begin	= hfs_write_begin,
 	.write_end	= generic_write_end,
 	.bmap		= hfs_bmap,
 	.direct_IO	= hfs_direct_IO,
 	.writepages	= hfs_writepages,
+	.migrate_folio	= buffer_migrate_folio,
 };
 
 /*
-- 
2.30.2



^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 4/7] hfsplus: remove ->writepage
  2022-12-02 10:26 start removing writepage instances v2 Christoph Hellwig
                   ` (2 preceding siblings ...)
  2022-12-02 10:26 ` [PATCH 3/7] hfs: " Christoph Hellwig
@ 2022-12-02 10:26 ` Christoph Hellwig
  2022-12-02 10:26 ` [PATCH 5/7] hpfs: " Christoph Hellwig
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Christoph Hellwig @ 2022-12-02 10:26 UTC (permalink / raw)
  To: Andrew Morton, Namjae Jeon, Sungjong Seo, Jan Kara,
	OGAWA Hirofumi, Mikulas Patocka, Dave Kleikamp, Bob Copeland
  Cc: linux-fsdevel, linux-ext4, jfs-discussion, linux-karma-devel,
	linux-mm, Johannes Weiner

->writepage is a very inefficient method to write back data, and only
used through write_cache_pages or a a fallback when no ->migrate_folio
method is present.

Set ->migrate_folio to the generic buffer_head based helper, and stop
wiring up ->writepage for hfsplus_aops.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Acked-by: Johannes Weiner <hannes@cmpxchg.org>
---
 fs/hfsplus/inode.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/fs/hfsplus/inode.c b/fs/hfsplus/inode.c
index aeab83ed1c9c6e..d6572ad2407a7c 100644
--- a/fs/hfsplus/inode.c
+++ b/fs/hfsplus/inode.c
@@ -170,12 +170,12 @@ const struct address_space_operations hfsplus_aops = {
 	.dirty_folio	= block_dirty_folio,
 	.invalidate_folio = block_invalidate_folio,
 	.read_folio	= hfsplus_read_folio,
-	.writepage	= hfsplus_writepage,
 	.write_begin	= hfsplus_write_begin,
 	.write_end	= generic_write_end,
 	.bmap		= hfsplus_bmap,
 	.direct_IO	= hfsplus_direct_IO,
 	.writepages	= hfsplus_writepages,
+	.migrate_folio	= buffer_migrate_folio,
 };
 
 const struct dentry_operations hfsplus_dentry_operations = {
-- 
2.30.2



^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 5/7] hpfs: remove ->writepage
  2022-12-02 10:26 start removing writepage instances v2 Christoph Hellwig
                   ` (3 preceding siblings ...)
  2022-12-02 10:26 ` [PATCH 4/7] hfsplus: " Christoph Hellwig
@ 2022-12-02 10:26 ` Christoph Hellwig
  2022-12-02 10:26 ` [PATCH 6/7] jfs: " Christoph Hellwig
  2022-12-02 10:26 ` [PATCH 7/7] omfs: " Christoph Hellwig
  6 siblings, 0 replies; 8+ messages in thread
From: Christoph Hellwig @ 2022-12-02 10:26 UTC (permalink / raw)
  To: Andrew Morton, Namjae Jeon, Sungjong Seo, Jan Kara,
	OGAWA Hirofumi, Mikulas Patocka, Dave Kleikamp, Bob Copeland
  Cc: linux-fsdevel, linux-ext4, jfs-discussion, linux-karma-devel,
	linux-mm, Johannes Weiner

->writepage is a very inefficient method to write back data, and only
used through write_cache_pages or a a fallback when no ->migrate_folio
method is present.

Set ->migrate_folio to the generic buffer_head based helper, and remove
the ->writepage implementation.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Acked-by: Johannes Weiner <hannes@cmpxchg.org>
---
 fs/hpfs/file.c | 9 ++-------
 1 file changed, 2 insertions(+), 7 deletions(-)

diff --git a/fs/hpfs/file.c b/fs/hpfs/file.c
index f7547a62c81f6a..88952d4a631e6c 100644
--- a/fs/hpfs/file.c
+++ b/fs/hpfs/file.c
@@ -163,11 +163,6 @@ static int hpfs_read_folio(struct file *file, struct folio *folio)
 	return mpage_read_folio(folio, hpfs_get_block);
 }
 
-static int hpfs_writepage(struct page *page, struct writeback_control *wbc)
-{
-	return block_write_full_page(page, hpfs_get_block, wbc);
-}
-
 static void hpfs_readahead(struct readahead_control *rac)
 {
 	mpage_readahead(rac, hpfs_get_block);
@@ -248,12 +243,12 @@ const struct address_space_operations hpfs_aops = {
 	.dirty_folio	= block_dirty_folio,
 	.invalidate_folio = block_invalidate_folio,
 	.read_folio = hpfs_read_folio,
-	.writepage = hpfs_writepage,
 	.readahead = hpfs_readahead,
 	.writepages = hpfs_writepages,
 	.write_begin = hpfs_write_begin,
 	.write_end = hpfs_write_end,
-	.bmap = _hpfs_bmap
+	.bmap = _hpfs_bmap,
+	.migrate_folio = buffer_migrate_folio,
 };
 
 const struct file_operations hpfs_file_ops =
-- 
2.30.2



^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 6/7] jfs: remove ->writepage
  2022-12-02 10:26 start removing writepage instances v2 Christoph Hellwig
                   ` (4 preceding siblings ...)
  2022-12-02 10:26 ` [PATCH 5/7] hpfs: " Christoph Hellwig
@ 2022-12-02 10:26 ` Christoph Hellwig
  2022-12-02 10:26 ` [PATCH 7/7] omfs: " Christoph Hellwig
  6 siblings, 0 replies; 8+ messages in thread
From: Christoph Hellwig @ 2022-12-02 10:26 UTC (permalink / raw)
  To: Andrew Morton, Namjae Jeon, Sungjong Seo, Jan Kara,
	OGAWA Hirofumi, Mikulas Patocka, Dave Kleikamp, Bob Copeland
  Cc: linux-fsdevel, linux-ext4, jfs-discussion, linux-karma-devel,
	linux-mm, Dave Kleikamp, Johannes Weiner

->writepage is a very inefficient method to write back data, and only
used through write_cache_pages or a a fallback when no ->migrate_folio
method is present.

Set ->migrate_folio to the generic buffer_head based helper, and remove
the ->writepage implementation.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Acked-by: Dave Kleikamp <dave.kleikamp@oracle.com>
Acked-by: Johannes Weiner <hannes@cmpxchg.org>
---
 fs/jfs/inode.c | 7 +------
 1 file changed, 1 insertion(+), 6 deletions(-)

diff --git a/fs/jfs/inode.c b/fs/jfs/inode.c
index d1ec920aa030a8..8ac10e39605081 100644
--- a/fs/jfs/inode.c
+++ b/fs/jfs/inode.c
@@ -264,11 +264,6 @@ int jfs_get_block(struct inode *ip, sector_t lblock,
 	return rc;
 }
 
-static int jfs_writepage(struct page *page, struct writeback_control *wbc)
-{
-	return block_write_full_page(page, jfs_get_block, wbc);
-}
-
 static int jfs_writepages(struct address_space *mapping,
 			struct writeback_control *wbc)
 {
@@ -355,12 +350,12 @@ const struct address_space_operations jfs_aops = {
 	.invalidate_folio = block_invalidate_folio,
 	.read_folio	= jfs_read_folio,
 	.readahead	= jfs_readahead,
-	.writepage	= jfs_writepage,
 	.writepages	= jfs_writepages,
 	.write_begin	= jfs_write_begin,
 	.write_end	= jfs_write_end,
 	.bmap		= jfs_bmap,
 	.direct_IO	= jfs_direct_IO,
+	.migrate_folio	= buffer_migrate_folio,
 };
 
 /*
-- 
2.30.2



^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 7/7] omfs: remove ->writepage
  2022-12-02 10:26 start removing writepage instances v2 Christoph Hellwig
                   ` (5 preceding siblings ...)
  2022-12-02 10:26 ` [PATCH 6/7] jfs: " Christoph Hellwig
@ 2022-12-02 10:26 ` Christoph Hellwig
  6 siblings, 0 replies; 8+ messages in thread
From: Christoph Hellwig @ 2022-12-02 10:26 UTC (permalink / raw)
  To: Andrew Morton, Namjae Jeon, Sungjong Seo, Jan Kara,
	OGAWA Hirofumi, Mikulas Patocka, Dave Kleikamp, Bob Copeland
  Cc: linux-fsdevel, linux-ext4, jfs-discussion, linux-karma-devel,
	linux-mm, Johannes Weiner

->writepage is a very inefficient method to write back data, and only
used through write_cache_pages or a a fallback when no ->migrate_folio
method is present.

Set ->migrate_folio to the generic buffer_head based helper, and remove
the ->writepage implementation.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Acked-by: Bob Copeland <me@bobcopeland.com>
Acked-by: Johannes Weiner <hannes@cmpxchg.org>
---
 fs/omfs/file.c | 7 +------
 1 file changed, 1 insertion(+), 6 deletions(-)

diff --git a/fs/omfs/file.c b/fs/omfs/file.c
index fa7fe2393ff686..3a5b4b88a58385 100644
--- a/fs/omfs/file.c
+++ b/fs/omfs/file.c
@@ -294,11 +294,6 @@ static void omfs_readahead(struct readahead_control *rac)
 	mpage_readahead(rac, omfs_get_block);
 }
 
-static int omfs_writepage(struct page *page, struct writeback_control *wbc)
-{
-	return block_write_full_page(page, omfs_get_block, wbc);
-}
-
 static int
 omfs_writepages(struct address_space *mapping, struct writeback_control *wbc)
 {
@@ -375,10 +370,10 @@ const struct address_space_operations omfs_aops = {
 	.invalidate_folio = block_invalidate_folio,
 	.read_folio = omfs_read_folio,
 	.readahead = omfs_readahead,
-	.writepage = omfs_writepage,
 	.writepages = omfs_writepages,
 	.write_begin = omfs_write_begin,
 	.write_end = generic_write_end,
 	.bmap = omfs_bmap,
+	.migrate_folio = buffer_migrate_folio,
 };
 
-- 
2.30.2



^ permalink raw reply related	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2022-12-02 10:27 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-12-02 10:26 start removing writepage instances v2 Christoph Hellwig
2022-12-02 10:26 ` [PATCH 1/7] extfat: remove ->writepage Christoph Hellwig
2022-12-02 10:26 ` [PATCH 2/7] fat: " Christoph Hellwig
2022-12-02 10:26 ` [PATCH 3/7] hfs: " Christoph Hellwig
2022-12-02 10:26 ` [PATCH 4/7] hfsplus: " Christoph Hellwig
2022-12-02 10:26 ` [PATCH 5/7] hpfs: " Christoph Hellwig
2022-12-02 10:26 ` [PATCH 6/7] jfs: " Christoph Hellwig
2022-12-02 10:26 ` [PATCH 7/7] omfs: " Christoph Hellwig

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).