All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Matthew Wilcox \(Oracle\) via Ocfs2-devel" <ocfs2-devel@oss.oracle.com>
To: linux-fsdevel@vger.kernel.org
Cc: linux-aio@kvack.org, linux-nfs@vger.kernel.org,
	cluster-devel@redhat.com, linux-ntfs-dev@lists.sourceforge.net,
	linux-kernel@vger.kernel.org,
	linux-f2fs-devel@lists.sourceforge.net,
	linux-block@vger.kernel.org, linux-mm@kvack.org,
	linux-mtd@lists.infradead.org, ocfs2-devel@oss.oracle.com,
	linux-ext4@vger.kernel.org,
	virtualization@lists.linux-foundation.org,
	linux-xfs@vger.kernel.org, linux-btrfs@vger.kernel.org
Subject: [Ocfs2-devel] [PATCH 08/20] mm/migrate: Convert migrate_page() to migrate_folio()
Date: Mon,  6 Jun 2022 21:40:38 +0100	[thread overview]
Message-ID: <20220606204050.2625949-9-willy@infradead.org> (raw)
In-Reply-To: <20220606204050.2625949-1-willy@infradead.org>

Convert all callers to pass a folio.  Most have the folio
already available.  Switch all users from aops->migratepage to
aops->migrate_folio.  Also turn the documentation into kerneldoc.

Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
---
 drivers/gpu/drm/i915/gem/i915_gem_userptr.c |  4 +--
 fs/btrfs/disk-io.c                          |  2 +-
 fs/nfs/write.c                              |  2 +-
 include/linux/migrate.h                     |  5 ++-
 mm/migrate.c                                | 37 +++++++++++----------
 mm/migrate_device.c                         |  3 +-
 mm/shmem.c                                  |  2 +-
 mm/swap_state.c                             |  2 +-
 8 files changed, 30 insertions(+), 27 deletions(-)

diff --git a/drivers/gpu/drm/i915/gem/i915_gem_userptr.c b/drivers/gpu/drm/i915/gem/i915_gem_userptr.c
index 094f06b4ce33..8423df021b71 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_userptr.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_userptr.c
@@ -216,8 +216,8 @@ i915_gem_userptr_put_pages(struct drm_i915_gem_object *obj,
 			 * However...!
 			 *
 			 * The mmu-notifier can be invalidated for a
-			 * migrate_page, that is alreadying holding the lock
-			 * on the page. Such a try_to_unmap() will result
+			 * migrate_folio, that is alreadying holding the lock
+			 * on the folio. Such a try_to_unmap() will result
 			 * in us calling put_pages() and so recursively try
 			 * to lock the page. We avoid that deadlock with
 			 * a trylock_page() and in exchange we risk missing
diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c
index 9ceb73f683af..8e5f1fa1e972 100644
--- a/fs/btrfs/disk-io.c
+++ b/fs/btrfs/disk-io.c
@@ -968,7 +968,7 @@ static int btree_migrate_folio(struct address_space *mapping,
 	if (folio_get_private(src) &&
 	    !filemap_release_folio(src, GFP_KERNEL))
 		return -EAGAIN;
-	return migrate_page(mapping, &dst->page, &src->page, mode);
+	return migrate_folio(mapping, dst, src, mode);
 }
 #else
 #define btree_migrate_folio NULL
diff --git a/fs/nfs/write.c b/fs/nfs/write.c
index 649b9e633459..69569696dde0 100644
--- a/fs/nfs/write.c
+++ b/fs/nfs/write.c
@@ -2139,7 +2139,7 @@ int nfs_migrate_folio(struct address_space *mapping, struct folio *dst,
 		folio_wait_fscache(src);
 	}
 
-	return migrate_page(mapping, &dst->page, &src->page, mode);
+	return migrate_folio(mapping, dst, src, mode);
 }
 #endif
 
diff --git a/include/linux/migrate.h b/include/linux/migrate.h
index 069a89e847f3..4ef22806cd8e 100644
--- a/include/linux/migrate.h
+++ b/include/linux/migrate.h
@@ -25,9 +25,8 @@ extern const char *migrate_reason_names[MR_TYPES];
 #ifdef CONFIG_MIGRATION
 
 extern void putback_movable_pages(struct list_head *l);
-extern int migrate_page(struct address_space *mapping,
-			struct page *newpage, struct page *page,
-			enum migrate_mode mode);
+int migrate_folio(struct address_space *mapping, struct folio *dst,
+		struct folio *src, enum migrate_mode mode);
 extern int migrate_pages(struct list_head *l, new_page_t new, free_page_t free,
 		unsigned long private, enum migrate_mode mode, int reason,
 		unsigned int *ret_succeeded);
diff --git a/mm/migrate.c b/mm/migrate.c
index e0a593e5b5f9..6232c291fdb9 100644
--- a/mm/migrate.c
+++ b/mm/migrate.c
@@ -594,34 +594,37 @@ EXPORT_SYMBOL(folio_migrate_copy);
  *                    Migration functions
  ***********************************************************/
 
-/*
- * Common logic to directly migrate a single LRU page suitable for
- * pages that do not use PagePrivate/PagePrivate2.
+/**
+ * migrate_folio() - Simple folio migration.
+ * @mapping: The address_space containing the folio.
+ * @dst: The folio to migrate the data to.
+ * @src: The folio containing the current data.
+ * @mode: How to migrate the page.
  *
- * Pages are locked upon entry and exit.
+ * Common logic to directly migrate a single LRU folio suitable for
+ * folios that do not use PagePrivate/PagePrivate2.
+ *
+ * Folios are locked upon entry and exit.
  */
-int migrate_page(struct address_space *mapping,
-		struct page *newpage, struct page *page,
-		enum migrate_mode mode)
+int migrate_folio(struct address_space *mapping, struct folio *dst,
+		struct folio *src, enum migrate_mode mode)
 {
-	struct folio *newfolio = page_folio(newpage);
-	struct folio *folio = page_folio(page);
 	int rc;
 
-	BUG_ON(folio_test_writeback(folio));	/* Writeback must be complete */
+	BUG_ON(folio_test_writeback(src));	/* Writeback must be complete */
 
-	rc = folio_migrate_mapping(mapping, newfolio, folio, 0);
+	rc = folio_migrate_mapping(mapping, dst, src, 0);
 
 	if (rc != MIGRATEPAGE_SUCCESS)
 		return rc;
 
 	if (mode != MIGRATE_SYNC_NO_COPY)
-		folio_migrate_copy(newfolio, folio);
+		folio_migrate_copy(dst, src);
 	else
-		folio_migrate_flags(newfolio, folio);
+		folio_migrate_flags(dst, src);
 	return MIGRATEPAGE_SUCCESS;
 }
-EXPORT_SYMBOL(migrate_page);
+EXPORT_SYMBOL(migrate_folio);
 
 #ifdef CONFIG_BLOCK
 /* Returns true if all buffers are successfully locked */
@@ -672,7 +675,7 @@ static int __buffer_migrate_folio(struct address_space *mapping,
 
 	head = folio_buffers(src);
 	if (!head)
-		return migrate_page(mapping, &dst->page, &src->page, mode);
+		return migrate_folio(mapping, dst, src, mode);
 
 	/* Check whether page does not have extra refs before we do more work */
 	expected_count = folio_expected_refs(mapping, src);
@@ -849,7 +852,7 @@ static int fallback_migrate_folio(struct address_space *mapping,
 	    !filemap_release_folio(src, GFP_KERNEL))
 		return mode == MIGRATE_SYNC ? -EAGAIN : -EBUSY;
 
-	return migrate_page(mapping, &dst->page, &src->page, mode);
+	return migrate_folio(mapping, dst, src, mode);
 }
 
 /*
@@ -877,7 +880,7 @@ static int move_to_new_folio(struct folio *dst, struct folio *src,
 
 	if (likely(is_lru)) {
 		if (!mapping)
-			rc = migrate_page(mapping, &dst->page, &src->page, mode);
+			rc = migrate_folio(mapping, dst, src, mode);
 		else if (mapping->a_ops->migrate_folio)
 			/*
 			 * Most folios have a mapping and most filesystems
diff --git a/mm/migrate_device.c b/mm/migrate_device.c
index 5052093d0262..5dd97c39ca6a 100644
--- a/mm/migrate_device.c
+++ b/mm/migrate_device.c
@@ -718,7 +718,8 @@ void migrate_vma_pages(struct migrate_vma *migrate)
 			continue;
 		}
 
-		r = migrate_page(mapping, newpage, page, MIGRATE_SYNC_NO_COPY);
+		r = migrate_folio(mapping, page_folio(newpage),
+				page_folio(page), MIGRATE_SYNC_NO_COPY);
 		if (r != MIGRATEPAGE_SUCCESS)
 			migrate->src[i] &= ~MIGRATE_PFN_MIGRATE;
 	}
diff --git a/mm/shmem.c b/mm/shmem.c
index 313ae7df59d8..e37ff6a1a6d0 100644
--- a/mm/shmem.c
+++ b/mm/shmem.c
@@ -3801,7 +3801,7 @@ const struct address_space_operations shmem_aops = {
 	.write_end	= shmem_write_end,
 #endif
 #ifdef CONFIG_MIGRATION
-	.migratepage	= migrate_page,
+	.migrate_folio	= migrate_folio,
 #endif
 	.error_remove_page = shmem_error_remove_page,
 };
diff --git a/mm/swap_state.c b/mm/swap_state.c
index f5b6f5638908..0a2021fc55ad 100644
--- a/mm/swap_state.c
+++ b/mm/swap_state.c
@@ -33,7 +33,7 @@ static const struct address_space_operations swap_aops = {
 	.writepage	= swap_writepage,
 	.dirty_folio	= noop_dirty_folio,
 #ifdef CONFIG_MIGRATION
-	.migratepage	= migrate_page,
+	.migrate_folio	= migrate_folio,
 #endif
 };
 
-- 
2.35.1


_______________________________________________
Ocfs2-devel mailing list
Ocfs2-devel@oss.oracle.com
https://oss.oracle.com/mailman/listinfo/ocfs2-devel

WARNING: multiple messages have this Message-ID (diff)
From: "Matthew Wilcox (Oracle)" <willy@infradead.org>
To: linux-fsdevel@vger.kernel.org
Cc: "Matthew Wilcox (Oracle)" <willy@infradead.org>,
	linux-kernel@vger.kernel.org, linux-block@vger.kernel.org,
	linux-aio@kvack.org, linux-btrfs@vger.kernel.org,
	linux-ext4@vger.kernel.org,
	linux-f2fs-devel@lists.sourceforge.net, cluster-devel@redhat.com,
	linux-mm@kvack.org, linux-xfs@vger.kernel.org,
	linux-nfs@vger.kernel.org, linux-ntfs-dev@lists.sourceforge.net,
	ocfs2-devel@oss.oracle.com, linux-mtd@lists.infradead.org,
	virtualization@lists.linux-foundation.org
Subject: [PATCH 08/20] mm/migrate: Convert migrate_page() to migrate_folio()
Date: Mon,  6 Jun 2022 21:40:38 +0100	[thread overview]
Message-ID: <20220606204050.2625949-9-willy@infradead.org> (raw)
In-Reply-To: <20220606204050.2625949-1-willy@infradead.org>

Convert all callers to pass a folio.  Most have the folio
already available.  Switch all users from aops->migratepage to
aops->migrate_folio.  Also turn the documentation into kerneldoc.

Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
---
 drivers/gpu/drm/i915/gem/i915_gem_userptr.c |  4 +--
 fs/btrfs/disk-io.c                          |  2 +-
 fs/nfs/write.c                              |  2 +-
 include/linux/migrate.h                     |  5 ++-
 mm/migrate.c                                | 37 +++++++++++----------
 mm/migrate_device.c                         |  3 +-
 mm/shmem.c                                  |  2 +-
 mm/swap_state.c                             |  2 +-
 8 files changed, 30 insertions(+), 27 deletions(-)

diff --git a/drivers/gpu/drm/i915/gem/i915_gem_userptr.c b/drivers/gpu/drm/i915/gem/i915_gem_userptr.c
index 094f06b4ce33..8423df021b71 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_userptr.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_userptr.c
@@ -216,8 +216,8 @@ i915_gem_userptr_put_pages(struct drm_i915_gem_object *obj,
 			 * However...!
 			 *
 			 * The mmu-notifier can be invalidated for a
-			 * migrate_page, that is alreadying holding the lock
-			 * on the page. Such a try_to_unmap() will result
+			 * migrate_folio, that is alreadying holding the lock
+			 * on the folio. Such a try_to_unmap() will result
 			 * in us calling put_pages() and so recursively try
 			 * to lock the page. We avoid that deadlock with
 			 * a trylock_page() and in exchange we risk missing
diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c
index 9ceb73f683af..8e5f1fa1e972 100644
--- a/fs/btrfs/disk-io.c
+++ b/fs/btrfs/disk-io.c
@@ -968,7 +968,7 @@ static int btree_migrate_folio(struct address_space *mapping,
 	if (folio_get_private(src) &&
 	    !filemap_release_folio(src, GFP_KERNEL))
 		return -EAGAIN;
-	return migrate_page(mapping, &dst->page, &src->page, mode);
+	return migrate_folio(mapping, dst, src, mode);
 }
 #else
 #define btree_migrate_folio NULL
diff --git a/fs/nfs/write.c b/fs/nfs/write.c
index 649b9e633459..69569696dde0 100644
--- a/fs/nfs/write.c
+++ b/fs/nfs/write.c
@@ -2139,7 +2139,7 @@ int nfs_migrate_folio(struct address_space *mapping, struct folio *dst,
 		folio_wait_fscache(src);
 	}
 
-	return migrate_page(mapping, &dst->page, &src->page, mode);
+	return migrate_folio(mapping, dst, src, mode);
 }
 #endif
 
diff --git a/include/linux/migrate.h b/include/linux/migrate.h
index 069a89e847f3..4ef22806cd8e 100644
--- a/include/linux/migrate.h
+++ b/include/linux/migrate.h
@@ -25,9 +25,8 @@ extern const char *migrate_reason_names[MR_TYPES];
 #ifdef CONFIG_MIGRATION
 
 extern void putback_movable_pages(struct list_head *l);
-extern int migrate_page(struct address_space *mapping,
-			struct page *newpage, struct page *page,
-			enum migrate_mode mode);
+int migrate_folio(struct address_space *mapping, struct folio *dst,
+		struct folio *src, enum migrate_mode mode);
 extern int migrate_pages(struct list_head *l, new_page_t new, free_page_t free,
 		unsigned long private, enum migrate_mode mode, int reason,
 		unsigned int *ret_succeeded);
diff --git a/mm/migrate.c b/mm/migrate.c
index e0a593e5b5f9..6232c291fdb9 100644
--- a/mm/migrate.c
+++ b/mm/migrate.c
@@ -594,34 +594,37 @@ EXPORT_SYMBOL(folio_migrate_copy);
  *                    Migration functions
  ***********************************************************/
 
-/*
- * Common logic to directly migrate a single LRU page suitable for
- * pages that do not use PagePrivate/PagePrivate2.
+/**
+ * migrate_folio() - Simple folio migration.
+ * @mapping: The address_space containing the folio.
+ * @dst: The folio to migrate the data to.
+ * @src: The folio containing the current data.
+ * @mode: How to migrate the page.
  *
- * Pages are locked upon entry and exit.
+ * Common logic to directly migrate a single LRU folio suitable for
+ * folios that do not use PagePrivate/PagePrivate2.
+ *
+ * Folios are locked upon entry and exit.
  */
-int migrate_page(struct address_space *mapping,
-		struct page *newpage, struct page *page,
-		enum migrate_mode mode)
+int migrate_folio(struct address_space *mapping, struct folio *dst,
+		struct folio *src, enum migrate_mode mode)
 {
-	struct folio *newfolio = page_folio(newpage);
-	struct folio *folio = page_folio(page);
 	int rc;
 
-	BUG_ON(folio_test_writeback(folio));	/* Writeback must be complete */
+	BUG_ON(folio_test_writeback(src));	/* Writeback must be complete */
 
-	rc = folio_migrate_mapping(mapping, newfolio, folio, 0);
+	rc = folio_migrate_mapping(mapping, dst, src, 0);
 
 	if (rc != MIGRATEPAGE_SUCCESS)
 		return rc;
 
 	if (mode != MIGRATE_SYNC_NO_COPY)
-		folio_migrate_copy(newfolio, folio);
+		folio_migrate_copy(dst, src);
 	else
-		folio_migrate_flags(newfolio, folio);
+		folio_migrate_flags(dst, src);
 	return MIGRATEPAGE_SUCCESS;
 }
-EXPORT_SYMBOL(migrate_page);
+EXPORT_SYMBOL(migrate_folio);
 
 #ifdef CONFIG_BLOCK
 /* Returns true if all buffers are successfully locked */
@@ -672,7 +675,7 @@ static int __buffer_migrate_folio(struct address_space *mapping,
 
 	head = folio_buffers(src);
 	if (!head)
-		return migrate_page(mapping, &dst->page, &src->page, mode);
+		return migrate_folio(mapping, dst, src, mode);
 
 	/* Check whether page does not have extra refs before we do more work */
 	expected_count = folio_expected_refs(mapping, src);
@@ -849,7 +852,7 @@ static int fallback_migrate_folio(struct address_space *mapping,
 	    !filemap_release_folio(src, GFP_KERNEL))
 		return mode == MIGRATE_SYNC ? -EAGAIN : -EBUSY;
 
-	return migrate_page(mapping, &dst->page, &src->page, mode);
+	return migrate_folio(mapping, dst, src, mode);
 }
 
 /*
@@ -877,7 +880,7 @@ static int move_to_new_folio(struct folio *dst, struct folio *src,
 
 	if (likely(is_lru)) {
 		if (!mapping)
-			rc = migrate_page(mapping, &dst->page, &src->page, mode);
+			rc = migrate_folio(mapping, dst, src, mode);
 		else if (mapping->a_ops->migrate_folio)
 			/*
 			 * Most folios have a mapping and most filesystems
diff --git a/mm/migrate_device.c b/mm/migrate_device.c
index 5052093d0262..5dd97c39ca6a 100644
--- a/mm/migrate_device.c
+++ b/mm/migrate_device.c
@@ -718,7 +718,8 @@ void migrate_vma_pages(struct migrate_vma *migrate)
 			continue;
 		}
 
-		r = migrate_page(mapping, newpage, page, MIGRATE_SYNC_NO_COPY);
+		r = migrate_folio(mapping, page_folio(newpage),
+				page_folio(page), MIGRATE_SYNC_NO_COPY);
 		if (r != MIGRATEPAGE_SUCCESS)
 			migrate->src[i] &= ~MIGRATE_PFN_MIGRATE;
 	}
diff --git a/mm/shmem.c b/mm/shmem.c
index 313ae7df59d8..e37ff6a1a6d0 100644
--- a/mm/shmem.c
+++ b/mm/shmem.c
@@ -3801,7 +3801,7 @@ const struct address_space_operations shmem_aops = {
 	.write_end	= shmem_write_end,
 #endif
 #ifdef CONFIG_MIGRATION
-	.migratepage	= migrate_page,
+	.migrate_folio	= migrate_folio,
 #endif
 	.error_remove_page = shmem_error_remove_page,
 };
diff --git a/mm/swap_state.c b/mm/swap_state.c
index f5b6f5638908..0a2021fc55ad 100644
--- a/mm/swap_state.c
+++ b/mm/swap_state.c
@@ -33,7 +33,7 @@ static const struct address_space_operations swap_aops = {
 	.writepage	= swap_writepage,
 	.dirty_folio	= noop_dirty_folio,
 #ifdef CONFIG_MIGRATION
-	.migratepage	= migrate_page,
+	.migrate_folio	= migrate_folio,
 #endif
 };
 
-- 
2.35.1


WARNING: multiple messages have this Message-ID (diff)
From: "Matthew Wilcox (Oracle)" <willy@infradead.org>
To: linux-fsdevel@vger.kernel.org
Cc: linux-aio@kvack.org, linux-nfs@vger.kernel.org,
	cluster-devel@redhat.com, linux-ntfs-dev@lists.sourceforge.net,
	linux-kernel@vger.kernel.org,
	"Matthew Wilcox \(Oracle\)" <willy@infradead.org>,
	linux-f2fs-devel@lists.sourceforge.net,
	linux-block@vger.kernel.org, linux-mm@kvack.org,
	linux-mtd@lists.infradead.org, ocfs2-devel@oss.oracle.com,
	linux-ext4@vger.kernel.org,
	virtualization@lists.linux-foundation.org,
	linux-xfs@vger.kernel.org, linux-btrfs@vger.kernel.org
Subject: [f2fs-dev] [PATCH 08/20] mm/migrate: Convert migrate_page() to migrate_folio()
Date: Mon,  6 Jun 2022 21:40:38 +0100	[thread overview]
Message-ID: <20220606204050.2625949-9-willy@infradead.org> (raw)
In-Reply-To: <20220606204050.2625949-1-willy@infradead.org>

Convert all callers to pass a folio.  Most have the folio
already available.  Switch all users from aops->migratepage to
aops->migrate_folio.  Also turn the documentation into kerneldoc.

Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
---
 drivers/gpu/drm/i915/gem/i915_gem_userptr.c |  4 +--
 fs/btrfs/disk-io.c                          |  2 +-
 fs/nfs/write.c                              |  2 +-
 include/linux/migrate.h                     |  5 ++-
 mm/migrate.c                                | 37 +++++++++++----------
 mm/migrate_device.c                         |  3 +-
 mm/shmem.c                                  |  2 +-
 mm/swap_state.c                             |  2 +-
 8 files changed, 30 insertions(+), 27 deletions(-)

diff --git a/drivers/gpu/drm/i915/gem/i915_gem_userptr.c b/drivers/gpu/drm/i915/gem/i915_gem_userptr.c
index 094f06b4ce33..8423df021b71 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_userptr.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_userptr.c
@@ -216,8 +216,8 @@ i915_gem_userptr_put_pages(struct drm_i915_gem_object *obj,
 			 * However...!
 			 *
 			 * The mmu-notifier can be invalidated for a
-			 * migrate_page, that is alreadying holding the lock
-			 * on the page. Such a try_to_unmap() will result
+			 * migrate_folio, that is alreadying holding the lock
+			 * on the folio. Such a try_to_unmap() will result
 			 * in us calling put_pages() and so recursively try
 			 * to lock the page. We avoid that deadlock with
 			 * a trylock_page() and in exchange we risk missing
diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c
index 9ceb73f683af..8e5f1fa1e972 100644
--- a/fs/btrfs/disk-io.c
+++ b/fs/btrfs/disk-io.c
@@ -968,7 +968,7 @@ static int btree_migrate_folio(struct address_space *mapping,
 	if (folio_get_private(src) &&
 	    !filemap_release_folio(src, GFP_KERNEL))
 		return -EAGAIN;
-	return migrate_page(mapping, &dst->page, &src->page, mode);
+	return migrate_folio(mapping, dst, src, mode);
 }
 #else
 #define btree_migrate_folio NULL
diff --git a/fs/nfs/write.c b/fs/nfs/write.c
index 649b9e633459..69569696dde0 100644
--- a/fs/nfs/write.c
+++ b/fs/nfs/write.c
@@ -2139,7 +2139,7 @@ int nfs_migrate_folio(struct address_space *mapping, struct folio *dst,
 		folio_wait_fscache(src);
 	}
 
-	return migrate_page(mapping, &dst->page, &src->page, mode);
+	return migrate_folio(mapping, dst, src, mode);
 }
 #endif
 
diff --git a/include/linux/migrate.h b/include/linux/migrate.h
index 069a89e847f3..4ef22806cd8e 100644
--- a/include/linux/migrate.h
+++ b/include/linux/migrate.h
@@ -25,9 +25,8 @@ extern const char *migrate_reason_names[MR_TYPES];
 #ifdef CONFIG_MIGRATION
 
 extern void putback_movable_pages(struct list_head *l);
-extern int migrate_page(struct address_space *mapping,
-			struct page *newpage, struct page *page,
-			enum migrate_mode mode);
+int migrate_folio(struct address_space *mapping, struct folio *dst,
+		struct folio *src, enum migrate_mode mode);
 extern int migrate_pages(struct list_head *l, new_page_t new, free_page_t free,
 		unsigned long private, enum migrate_mode mode, int reason,
 		unsigned int *ret_succeeded);
diff --git a/mm/migrate.c b/mm/migrate.c
index e0a593e5b5f9..6232c291fdb9 100644
--- a/mm/migrate.c
+++ b/mm/migrate.c
@@ -594,34 +594,37 @@ EXPORT_SYMBOL(folio_migrate_copy);
  *                    Migration functions
  ***********************************************************/
 
-/*
- * Common logic to directly migrate a single LRU page suitable for
- * pages that do not use PagePrivate/PagePrivate2.
+/**
+ * migrate_folio() - Simple folio migration.
+ * @mapping: The address_space containing the folio.
+ * @dst: The folio to migrate the data to.
+ * @src: The folio containing the current data.
+ * @mode: How to migrate the page.
  *
- * Pages are locked upon entry and exit.
+ * Common logic to directly migrate a single LRU folio suitable for
+ * folios that do not use PagePrivate/PagePrivate2.
+ *
+ * Folios are locked upon entry and exit.
  */
-int migrate_page(struct address_space *mapping,
-		struct page *newpage, struct page *page,
-		enum migrate_mode mode)
+int migrate_folio(struct address_space *mapping, struct folio *dst,
+		struct folio *src, enum migrate_mode mode)
 {
-	struct folio *newfolio = page_folio(newpage);
-	struct folio *folio = page_folio(page);
 	int rc;
 
-	BUG_ON(folio_test_writeback(folio));	/* Writeback must be complete */
+	BUG_ON(folio_test_writeback(src));	/* Writeback must be complete */
 
-	rc = folio_migrate_mapping(mapping, newfolio, folio, 0);
+	rc = folio_migrate_mapping(mapping, dst, src, 0);
 
 	if (rc != MIGRATEPAGE_SUCCESS)
 		return rc;
 
 	if (mode != MIGRATE_SYNC_NO_COPY)
-		folio_migrate_copy(newfolio, folio);
+		folio_migrate_copy(dst, src);
 	else
-		folio_migrate_flags(newfolio, folio);
+		folio_migrate_flags(dst, src);
 	return MIGRATEPAGE_SUCCESS;
 }
-EXPORT_SYMBOL(migrate_page);
+EXPORT_SYMBOL(migrate_folio);
 
 #ifdef CONFIG_BLOCK
 /* Returns true if all buffers are successfully locked */
@@ -672,7 +675,7 @@ static int __buffer_migrate_folio(struct address_space *mapping,
 
 	head = folio_buffers(src);
 	if (!head)
-		return migrate_page(mapping, &dst->page, &src->page, mode);
+		return migrate_folio(mapping, dst, src, mode);
 
 	/* Check whether page does not have extra refs before we do more work */
 	expected_count = folio_expected_refs(mapping, src);
@@ -849,7 +852,7 @@ static int fallback_migrate_folio(struct address_space *mapping,
 	    !filemap_release_folio(src, GFP_KERNEL))
 		return mode == MIGRATE_SYNC ? -EAGAIN : -EBUSY;
 
-	return migrate_page(mapping, &dst->page, &src->page, mode);
+	return migrate_folio(mapping, dst, src, mode);
 }
 
 /*
@@ -877,7 +880,7 @@ static int move_to_new_folio(struct folio *dst, struct folio *src,
 
 	if (likely(is_lru)) {
 		if (!mapping)
-			rc = migrate_page(mapping, &dst->page, &src->page, mode);
+			rc = migrate_folio(mapping, dst, src, mode);
 		else if (mapping->a_ops->migrate_folio)
 			/*
 			 * Most folios have a mapping and most filesystems
diff --git a/mm/migrate_device.c b/mm/migrate_device.c
index 5052093d0262..5dd97c39ca6a 100644
--- a/mm/migrate_device.c
+++ b/mm/migrate_device.c
@@ -718,7 +718,8 @@ void migrate_vma_pages(struct migrate_vma *migrate)
 			continue;
 		}
 
-		r = migrate_page(mapping, newpage, page, MIGRATE_SYNC_NO_COPY);
+		r = migrate_folio(mapping, page_folio(newpage),
+				page_folio(page), MIGRATE_SYNC_NO_COPY);
 		if (r != MIGRATEPAGE_SUCCESS)
 			migrate->src[i] &= ~MIGRATE_PFN_MIGRATE;
 	}
diff --git a/mm/shmem.c b/mm/shmem.c
index 313ae7df59d8..e37ff6a1a6d0 100644
--- a/mm/shmem.c
+++ b/mm/shmem.c
@@ -3801,7 +3801,7 @@ const struct address_space_operations shmem_aops = {
 	.write_end	= shmem_write_end,
 #endif
 #ifdef CONFIG_MIGRATION
-	.migratepage	= migrate_page,
+	.migrate_folio	= migrate_folio,
 #endif
 	.error_remove_page = shmem_error_remove_page,
 };
diff --git a/mm/swap_state.c b/mm/swap_state.c
index f5b6f5638908..0a2021fc55ad 100644
--- a/mm/swap_state.c
+++ b/mm/swap_state.c
@@ -33,7 +33,7 @@ static const struct address_space_operations swap_aops = {
 	.writepage	= swap_writepage,
 	.dirty_folio	= noop_dirty_folio,
 #ifdef CONFIG_MIGRATION
-	.migratepage	= migrate_page,
+	.migrate_folio	= migrate_folio,
 #endif
 };
 
-- 
2.35.1



_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

WARNING: multiple messages have this Message-ID (diff)
From: "Matthew Wilcox (Oracle)" <willy@infradead.org>
To: linux-fsdevel@vger.kernel.org
Cc: linux-aio@kvack.org, linux-nfs@vger.kernel.org,
	cluster-devel@redhat.com, linux-ntfs-dev@lists.sourceforge.net,
	linux-kernel@vger.kernel.org,
	"Matthew Wilcox \(Oracle\)" <willy@infradead.org>,
	linux-f2fs-devel@lists.sourceforge.net,
	linux-block@vger.kernel.org, linux-mm@kvack.org,
	linux-mtd@lists.infradead.org, ocfs2-devel@oss.oracle.com,
	linux-ext4@vger.kernel.org,
	virtualization@lists.linux-foundation.org,
	linux-xfs@vger.kernel.org, linux-btrfs@vger.kernel.org
Subject: [PATCH 08/20] mm/migrate: Convert migrate_page() to migrate_folio()
Date: Mon,  6 Jun 2022 21:40:38 +0100	[thread overview]
Message-ID: <20220606204050.2625949-9-willy@infradead.org> (raw)
In-Reply-To: <20220606204050.2625949-1-willy@infradead.org>

Convert all callers to pass a folio.  Most have the folio
already available.  Switch all users from aops->migratepage to
aops->migrate_folio.  Also turn the documentation into kerneldoc.

Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
---
 drivers/gpu/drm/i915/gem/i915_gem_userptr.c |  4 +--
 fs/btrfs/disk-io.c                          |  2 +-
 fs/nfs/write.c                              |  2 +-
 include/linux/migrate.h                     |  5 ++-
 mm/migrate.c                                | 37 +++++++++++----------
 mm/migrate_device.c                         |  3 +-
 mm/shmem.c                                  |  2 +-
 mm/swap_state.c                             |  2 +-
 8 files changed, 30 insertions(+), 27 deletions(-)

diff --git a/drivers/gpu/drm/i915/gem/i915_gem_userptr.c b/drivers/gpu/drm/i915/gem/i915_gem_userptr.c
index 094f06b4ce33..8423df021b71 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_userptr.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_userptr.c
@@ -216,8 +216,8 @@ i915_gem_userptr_put_pages(struct drm_i915_gem_object *obj,
 			 * However...!
 			 *
 			 * The mmu-notifier can be invalidated for a
-			 * migrate_page, that is alreadying holding the lock
-			 * on the page. Such a try_to_unmap() will result
+			 * migrate_folio, that is alreadying holding the lock
+			 * on the folio. Such a try_to_unmap() will result
 			 * in us calling put_pages() and so recursively try
 			 * to lock the page. We avoid that deadlock with
 			 * a trylock_page() and in exchange we risk missing
diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c
index 9ceb73f683af..8e5f1fa1e972 100644
--- a/fs/btrfs/disk-io.c
+++ b/fs/btrfs/disk-io.c
@@ -968,7 +968,7 @@ static int btree_migrate_folio(struct address_space *mapping,
 	if (folio_get_private(src) &&
 	    !filemap_release_folio(src, GFP_KERNEL))
 		return -EAGAIN;
-	return migrate_page(mapping, &dst->page, &src->page, mode);
+	return migrate_folio(mapping, dst, src, mode);
 }
 #else
 #define btree_migrate_folio NULL
diff --git a/fs/nfs/write.c b/fs/nfs/write.c
index 649b9e633459..69569696dde0 100644
--- a/fs/nfs/write.c
+++ b/fs/nfs/write.c
@@ -2139,7 +2139,7 @@ int nfs_migrate_folio(struct address_space *mapping, struct folio *dst,
 		folio_wait_fscache(src);
 	}
 
-	return migrate_page(mapping, &dst->page, &src->page, mode);
+	return migrate_folio(mapping, dst, src, mode);
 }
 #endif
 
diff --git a/include/linux/migrate.h b/include/linux/migrate.h
index 069a89e847f3..4ef22806cd8e 100644
--- a/include/linux/migrate.h
+++ b/include/linux/migrate.h
@@ -25,9 +25,8 @@ extern const char *migrate_reason_names[MR_TYPES];
 #ifdef CONFIG_MIGRATION
 
 extern void putback_movable_pages(struct list_head *l);
-extern int migrate_page(struct address_space *mapping,
-			struct page *newpage, struct page *page,
-			enum migrate_mode mode);
+int migrate_folio(struct address_space *mapping, struct folio *dst,
+		struct folio *src, enum migrate_mode mode);
 extern int migrate_pages(struct list_head *l, new_page_t new, free_page_t free,
 		unsigned long private, enum migrate_mode mode, int reason,
 		unsigned int *ret_succeeded);
diff --git a/mm/migrate.c b/mm/migrate.c
index e0a593e5b5f9..6232c291fdb9 100644
--- a/mm/migrate.c
+++ b/mm/migrate.c
@@ -594,34 +594,37 @@ EXPORT_SYMBOL(folio_migrate_copy);
  *                    Migration functions
  ***********************************************************/
 
-/*
- * Common logic to directly migrate a single LRU page suitable for
- * pages that do not use PagePrivate/PagePrivate2.
+/**
+ * migrate_folio() - Simple folio migration.
+ * @mapping: The address_space containing the folio.
+ * @dst: The folio to migrate the data to.
+ * @src: The folio containing the current data.
+ * @mode: How to migrate the page.
  *
- * Pages are locked upon entry and exit.
+ * Common logic to directly migrate a single LRU folio suitable for
+ * folios that do not use PagePrivate/PagePrivate2.
+ *
+ * Folios are locked upon entry and exit.
  */
-int migrate_page(struct address_space *mapping,
-		struct page *newpage, struct page *page,
-		enum migrate_mode mode)
+int migrate_folio(struct address_space *mapping, struct folio *dst,
+		struct folio *src, enum migrate_mode mode)
 {
-	struct folio *newfolio = page_folio(newpage);
-	struct folio *folio = page_folio(page);
 	int rc;
 
-	BUG_ON(folio_test_writeback(folio));	/* Writeback must be complete */
+	BUG_ON(folio_test_writeback(src));	/* Writeback must be complete */
 
-	rc = folio_migrate_mapping(mapping, newfolio, folio, 0);
+	rc = folio_migrate_mapping(mapping, dst, src, 0);
 
 	if (rc != MIGRATEPAGE_SUCCESS)
 		return rc;
 
 	if (mode != MIGRATE_SYNC_NO_COPY)
-		folio_migrate_copy(newfolio, folio);
+		folio_migrate_copy(dst, src);
 	else
-		folio_migrate_flags(newfolio, folio);
+		folio_migrate_flags(dst, src);
 	return MIGRATEPAGE_SUCCESS;
 }
-EXPORT_SYMBOL(migrate_page);
+EXPORT_SYMBOL(migrate_folio);
 
 #ifdef CONFIG_BLOCK
 /* Returns true if all buffers are successfully locked */
@@ -672,7 +675,7 @@ static int __buffer_migrate_folio(struct address_space *mapping,
 
 	head = folio_buffers(src);
 	if (!head)
-		return migrate_page(mapping, &dst->page, &src->page, mode);
+		return migrate_folio(mapping, dst, src, mode);
 
 	/* Check whether page does not have extra refs before we do more work */
 	expected_count = folio_expected_refs(mapping, src);
@@ -849,7 +852,7 @@ static int fallback_migrate_folio(struct address_space *mapping,
 	    !filemap_release_folio(src, GFP_KERNEL))
 		return mode == MIGRATE_SYNC ? -EAGAIN : -EBUSY;
 
-	return migrate_page(mapping, &dst->page, &src->page, mode);
+	return migrate_folio(mapping, dst, src, mode);
 }
 
 /*
@@ -877,7 +880,7 @@ static int move_to_new_folio(struct folio *dst, struct folio *src,
 
 	if (likely(is_lru)) {
 		if (!mapping)
-			rc = migrate_page(mapping, &dst->page, &src->page, mode);
+			rc = migrate_folio(mapping, dst, src, mode);
 		else if (mapping->a_ops->migrate_folio)
 			/*
 			 * Most folios have a mapping and most filesystems
diff --git a/mm/migrate_device.c b/mm/migrate_device.c
index 5052093d0262..5dd97c39ca6a 100644
--- a/mm/migrate_device.c
+++ b/mm/migrate_device.c
@@ -718,7 +718,8 @@ void migrate_vma_pages(struct migrate_vma *migrate)
 			continue;
 		}
 
-		r = migrate_page(mapping, newpage, page, MIGRATE_SYNC_NO_COPY);
+		r = migrate_folio(mapping, page_folio(newpage),
+				page_folio(page), MIGRATE_SYNC_NO_COPY);
 		if (r != MIGRATEPAGE_SUCCESS)
 			migrate->src[i] &= ~MIGRATE_PFN_MIGRATE;
 	}
diff --git a/mm/shmem.c b/mm/shmem.c
index 313ae7df59d8..e37ff6a1a6d0 100644
--- a/mm/shmem.c
+++ b/mm/shmem.c
@@ -3801,7 +3801,7 @@ const struct address_space_operations shmem_aops = {
 	.write_end	= shmem_write_end,
 #endif
 #ifdef CONFIG_MIGRATION
-	.migratepage	= migrate_page,
+	.migrate_folio	= migrate_folio,
 #endif
 	.error_remove_page = shmem_error_remove_page,
 };
diff --git a/mm/swap_state.c b/mm/swap_state.c
index f5b6f5638908..0a2021fc55ad 100644
--- a/mm/swap_state.c
+++ b/mm/swap_state.c
@@ -33,7 +33,7 @@ static const struct address_space_operations swap_aops = {
 	.writepage	= swap_writepage,
 	.dirty_folio	= noop_dirty_folio,
 #ifdef CONFIG_MIGRATION
-	.migratepage	= migrate_page,
+	.migrate_folio	= migrate_folio,
 #endif
 };
 
-- 
2.35.1

_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization

WARNING: multiple messages have this Message-ID (diff)
From: "Matthew Wilcox (Oracle)" <willy@infradead.org>
To: linux-fsdevel@vger.kernel.org
Cc: "Matthew Wilcox (Oracle)" <willy@infradead.org>,
	linux-kernel@vger.kernel.org, linux-block@vger.kernel.org,
	linux-aio@kvack.org, linux-btrfs@vger.kernel.org,
	linux-ext4@vger.kernel.org,
	linux-f2fs-devel@lists.sourceforge.net, cluster-devel@redhat.com,
	linux-mm@kvack.org, linux-xfs@vger.kernel.org,
	linux-nfs@vger.kernel.org, linux-ntfs-dev@lists.sourceforge.net,
	ocfs2-devel@oss.oracle.com, linux-mtd@lists.infradead.org,
	virtualization@lists.linux-foundation.org
Subject: [PATCH 08/20] mm/migrate: Convert migrate_page() to migrate_folio()
Date: Mon,  6 Jun 2022 21:40:38 +0100	[thread overview]
Message-ID: <20220606204050.2625949-9-willy@infradead.org> (raw)
In-Reply-To: <20220606204050.2625949-1-willy@infradead.org>

Convert all callers to pass a folio.  Most have the folio
already available.  Switch all users from aops->migratepage to
aops->migrate_folio.  Also turn the documentation into kerneldoc.

Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
---
 drivers/gpu/drm/i915/gem/i915_gem_userptr.c |  4 +--
 fs/btrfs/disk-io.c                          |  2 +-
 fs/nfs/write.c                              |  2 +-
 include/linux/migrate.h                     |  5 ++-
 mm/migrate.c                                | 37 +++++++++++----------
 mm/migrate_device.c                         |  3 +-
 mm/shmem.c                                  |  2 +-
 mm/swap_state.c                             |  2 +-
 8 files changed, 30 insertions(+), 27 deletions(-)

diff --git a/drivers/gpu/drm/i915/gem/i915_gem_userptr.c b/drivers/gpu/drm/i915/gem/i915_gem_userptr.c
index 094f06b4ce33..8423df021b71 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_userptr.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_userptr.c
@@ -216,8 +216,8 @@ i915_gem_userptr_put_pages(struct drm_i915_gem_object *obj,
 			 * However...!
 			 *
 			 * The mmu-notifier can be invalidated for a
-			 * migrate_page, that is alreadying holding the lock
-			 * on the page. Such a try_to_unmap() will result
+			 * migrate_folio, that is alreadying holding the lock
+			 * on the folio. Such a try_to_unmap() will result
 			 * in us calling put_pages() and so recursively try
 			 * to lock the page. We avoid that deadlock with
 			 * a trylock_page() and in exchange we risk missing
diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c
index 9ceb73f683af..8e5f1fa1e972 100644
--- a/fs/btrfs/disk-io.c
+++ b/fs/btrfs/disk-io.c
@@ -968,7 +968,7 @@ static int btree_migrate_folio(struct address_space *mapping,
 	if (folio_get_private(src) &&
 	    !filemap_release_folio(src, GFP_KERNEL))
 		return -EAGAIN;
-	return migrate_page(mapping, &dst->page, &src->page, mode);
+	return migrate_folio(mapping, dst, src, mode);
 }
 #else
 #define btree_migrate_folio NULL
diff --git a/fs/nfs/write.c b/fs/nfs/write.c
index 649b9e633459..69569696dde0 100644
--- a/fs/nfs/write.c
+++ b/fs/nfs/write.c
@@ -2139,7 +2139,7 @@ int nfs_migrate_folio(struct address_space *mapping, struct folio *dst,
 		folio_wait_fscache(src);
 	}
 
-	return migrate_page(mapping, &dst->page, &src->page, mode);
+	return migrate_folio(mapping, dst, src, mode);
 }
 #endif
 
diff --git a/include/linux/migrate.h b/include/linux/migrate.h
index 069a89e847f3..4ef22806cd8e 100644
--- a/include/linux/migrate.h
+++ b/include/linux/migrate.h
@@ -25,9 +25,8 @@ extern const char *migrate_reason_names[MR_TYPES];
 #ifdef CONFIG_MIGRATION
 
 extern void putback_movable_pages(struct list_head *l);
-extern int migrate_page(struct address_space *mapping,
-			struct page *newpage, struct page *page,
-			enum migrate_mode mode);
+int migrate_folio(struct address_space *mapping, struct folio *dst,
+		struct folio *src, enum migrate_mode mode);
 extern int migrate_pages(struct list_head *l, new_page_t new, free_page_t free,
 		unsigned long private, enum migrate_mode mode, int reason,
 		unsigned int *ret_succeeded);
diff --git a/mm/migrate.c b/mm/migrate.c
index e0a593e5b5f9..6232c291fdb9 100644
--- a/mm/migrate.c
+++ b/mm/migrate.c
@@ -594,34 +594,37 @@ EXPORT_SYMBOL(folio_migrate_copy);
  *                    Migration functions
  ***********************************************************/
 
-/*
- * Common logic to directly migrate a single LRU page suitable for
- * pages that do not use PagePrivate/PagePrivate2.
+/**
+ * migrate_folio() - Simple folio migration.
+ * @mapping: The address_space containing the folio.
+ * @dst: The folio to migrate the data to.
+ * @src: The folio containing the current data.
+ * @mode: How to migrate the page.
  *
- * Pages are locked upon entry and exit.
+ * Common logic to directly migrate a single LRU folio suitable for
+ * folios that do not use PagePrivate/PagePrivate2.
+ *
+ * Folios are locked upon entry and exit.
  */
-int migrate_page(struct address_space *mapping,
-		struct page *newpage, struct page *page,
-		enum migrate_mode mode)
+int migrate_folio(struct address_space *mapping, struct folio *dst,
+		struct folio *src, enum migrate_mode mode)
 {
-	struct folio *newfolio = page_folio(newpage);
-	struct folio *folio = page_folio(page);
 	int rc;
 
-	BUG_ON(folio_test_writeback(folio));	/* Writeback must be complete */
+	BUG_ON(folio_test_writeback(src));	/* Writeback must be complete */
 
-	rc = folio_migrate_mapping(mapping, newfolio, folio, 0);
+	rc = folio_migrate_mapping(mapping, dst, src, 0);
 
 	if (rc != MIGRATEPAGE_SUCCESS)
 		return rc;
 
 	if (mode != MIGRATE_SYNC_NO_COPY)
-		folio_migrate_copy(newfolio, folio);
+		folio_migrate_copy(dst, src);
 	else
-		folio_migrate_flags(newfolio, folio);
+		folio_migrate_flags(dst, src);
 	return MIGRATEPAGE_SUCCESS;
 }
-EXPORT_SYMBOL(migrate_page);
+EXPORT_SYMBOL(migrate_folio);
 
 #ifdef CONFIG_BLOCK
 /* Returns true if all buffers are successfully locked */
@@ -672,7 +675,7 @@ static int __buffer_migrate_folio(struct address_space *mapping,
 
 	head = folio_buffers(src);
 	if (!head)
-		return migrate_page(mapping, &dst->page, &src->page, mode);
+		return migrate_folio(mapping, dst, src, mode);
 
 	/* Check whether page does not have extra refs before we do more work */
 	expected_count = folio_expected_refs(mapping, src);
@@ -849,7 +852,7 @@ static int fallback_migrate_folio(struct address_space *mapping,
 	    !filemap_release_folio(src, GFP_KERNEL))
 		return mode == MIGRATE_SYNC ? -EAGAIN : -EBUSY;
 
-	return migrate_page(mapping, &dst->page, &src->page, mode);
+	return migrate_folio(mapping, dst, src, mode);
 }
 
 /*
@@ -877,7 +880,7 @@ static int move_to_new_folio(struct folio *dst, struct folio *src,
 
 	if (likely(is_lru)) {
 		if (!mapping)
-			rc = migrate_page(mapping, &dst->page, &src->page, mode);
+			rc = migrate_folio(mapping, dst, src, mode);
 		else if (mapping->a_ops->migrate_folio)
 			/*
 			 * Most folios have a mapping and most filesystems
diff --git a/mm/migrate_device.c b/mm/migrate_device.c
index 5052093d0262..5dd97c39ca6a 100644
--- a/mm/migrate_device.c
+++ b/mm/migrate_device.c
@@ -718,7 +718,8 @@ void migrate_vma_pages(struct migrate_vma *migrate)
 			continue;
 		}
 
-		r = migrate_page(mapping, newpage, page, MIGRATE_SYNC_NO_COPY);
+		r = migrate_folio(mapping, page_folio(newpage),
+				page_folio(page), MIGRATE_SYNC_NO_COPY);
 		if (r != MIGRATEPAGE_SUCCESS)
 			migrate->src[i] &= ~MIGRATE_PFN_MIGRATE;
 	}
diff --git a/mm/shmem.c b/mm/shmem.c
index 313ae7df59d8..e37ff6a1a6d0 100644
--- a/mm/shmem.c
+++ b/mm/shmem.c
@@ -3801,7 +3801,7 @@ const struct address_space_operations shmem_aops = {
 	.write_end	= shmem_write_end,
 #endif
 #ifdef CONFIG_MIGRATION
-	.migratepage	= migrate_page,
+	.migrate_folio	= migrate_folio,
 #endif
 	.error_remove_page = shmem_error_remove_page,
 };
diff --git a/mm/swap_state.c b/mm/swap_state.c
index f5b6f5638908..0a2021fc55ad 100644
--- a/mm/swap_state.c
+++ b/mm/swap_state.c
@@ -33,7 +33,7 @@ static const struct address_space_operations swap_aops = {
 	.writepage	= swap_writepage,
 	.dirty_folio	= noop_dirty_folio,
 #ifdef CONFIG_MIGRATION
-	.migratepage	= migrate_page,
+	.migrate_folio	= migrate_folio,
 #endif
 };
 
-- 
2.35.1


______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/

WARNING: multiple messages have this Message-ID (diff)
From: Matthew Wilcox (Oracle) <willy@infradead.org>
To: cluster-devel.redhat.com
Subject: [Cluster-devel] [PATCH 08/20] mm/migrate: Convert migrate_page() to migrate_folio()
Date: Mon,  6 Jun 2022 21:40:38 +0100	[thread overview]
Message-ID: <20220606204050.2625949-9-willy@infradead.org> (raw)
In-Reply-To: <20220606204050.2625949-1-willy@infradead.org>

Convert all callers to pass a folio.  Most have the folio
already available.  Switch all users from aops->migratepage to
aops->migrate_folio.  Also turn the documentation into kerneldoc.

Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
---
 drivers/gpu/drm/i915/gem/i915_gem_userptr.c |  4 +--
 fs/btrfs/disk-io.c                          |  2 +-
 fs/nfs/write.c                              |  2 +-
 include/linux/migrate.h                     |  5 ++-
 mm/migrate.c                                | 37 +++++++++++----------
 mm/migrate_device.c                         |  3 +-
 mm/shmem.c                                  |  2 +-
 mm/swap_state.c                             |  2 +-
 8 files changed, 30 insertions(+), 27 deletions(-)

diff --git a/drivers/gpu/drm/i915/gem/i915_gem_userptr.c b/drivers/gpu/drm/i915/gem/i915_gem_userptr.c
index 094f06b4ce33..8423df021b71 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_userptr.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_userptr.c
@@ -216,8 +216,8 @@ i915_gem_userptr_put_pages(struct drm_i915_gem_object *obj,
 			 * However...!
 			 *
 			 * The mmu-notifier can be invalidated for a
-			 * migrate_page, that is alreadying holding the lock
-			 * on the page. Such a try_to_unmap() will result
+			 * migrate_folio, that is alreadying holding the lock
+			 * on the folio. Such a try_to_unmap() will result
 			 * in us calling put_pages() and so recursively try
 			 * to lock the page. We avoid that deadlock with
 			 * a trylock_page() and in exchange we risk missing
diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c
index 9ceb73f683af..8e5f1fa1e972 100644
--- a/fs/btrfs/disk-io.c
+++ b/fs/btrfs/disk-io.c
@@ -968,7 +968,7 @@ static int btree_migrate_folio(struct address_space *mapping,
 	if (folio_get_private(src) &&
 	    !filemap_release_folio(src, GFP_KERNEL))
 		return -EAGAIN;
-	return migrate_page(mapping, &dst->page, &src->page, mode);
+	return migrate_folio(mapping, dst, src, mode);
 }
 #else
 #define btree_migrate_folio NULL
diff --git a/fs/nfs/write.c b/fs/nfs/write.c
index 649b9e633459..69569696dde0 100644
--- a/fs/nfs/write.c
+++ b/fs/nfs/write.c
@@ -2139,7 +2139,7 @@ int nfs_migrate_folio(struct address_space *mapping, struct folio *dst,
 		folio_wait_fscache(src);
 	}
 
-	return migrate_page(mapping, &dst->page, &src->page, mode);
+	return migrate_folio(mapping, dst, src, mode);
 }
 #endif
 
diff --git a/include/linux/migrate.h b/include/linux/migrate.h
index 069a89e847f3..4ef22806cd8e 100644
--- a/include/linux/migrate.h
+++ b/include/linux/migrate.h
@@ -25,9 +25,8 @@ extern const char *migrate_reason_names[MR_TYPES];
 #ifdef CONFIG_MIGRATION
 
 extern void putback_movable_pages(struct list_head *l);
-extern int migrate_page(struct address_space *mapping,
-			struct page *newpage, struct page *page,
-			enum migrate_mode mode);
+int migrate_folio(struct address_space *mapping, struct folio *dst,
+		struct folio *src, enum migrate_mode mode);
 extern int migrate_pages(struct list_head *l, new_page_t new, free_page_t free,
 		unsigned long private, enum migrate_mode mode, int reason,
 		unsigned int *ret_succeeded);
diff --git a/mm/migrate.c b/mm/migrate.c
index e0a593e5b5f9..6232c291fdb9 100644
--- a/mm/migrate.c
+++ b/mm/migrate.c
@@ -594,34 +594,37 @@ EXPORT_SYMBOL(folio_migrate_copy);
  *                    Migration functions
  ***********************************************************/
 
-/*
- * Common logic to directly migrate a single LRU page suitable for
- * pages that do not use PagePrivate/PagePrivate2.
+/**
+ * migrate_folio() - Simple folio migration.
+ * @mapping: The address_space containing the folio.
+ * @dst: The folio to migrate the data to.
+ * @src: The folio containing the current data.
+ * @mode: How to migrate the page.
  *
- * Pages are locked upon entry and exit.
+ * Common logic to directly migrate a single LRU folio suitable for
+ * folios that do not use PagePrivate/PagePrivate2.
+ *
+ * Folios are locked upon entry and exit.
  */
-int migrate_page(struct address_space *mapping,
-		struct page *newpage, struct page *page,
-		enum migrate_mode mode)
+int migrate_folio(struct address_space *mapping, struct folio *dst,
+		struct folio *src, enum migrate_mode mode)
 {
-	struct folio *newfolio = page_folio(newpage);
-	struct folio *folio = page_folio(page);
 	int rc;
 
-	BUG_ON(folio_test_writeback(folio));	/* Writeback must be complete */
+	BUG_ON(folio_test_writeback(src));	/* Writeback must be complete */
 
-	rc = folio_migrate_mapping(mapping, newfolio, folio, 0);
+	rc = folio_migrate_mapping(mapping, dst, src, 0);
 
 	if (rc != MIGRATEPAGE_SUCCESS)
 		return rc;
 
 	if (mode != MIGRATE_SYNC_NO_COPY)
-		folio_migrate_copy(newfolio, folio);
+		folio_migrate_copy(dst, src);
 	else
-		folio_migrate_flags(newfolio, folio);
+		folio_migrate_flags(dst, src);
 	return MIGRATEPAGE_SUCCESS;
 }
-EXPORT_SYMBOL(migrate_page);
+EXPORT_SYMBOL(migrate_folio);
 
 #ifdef CONFIG_BLOCK
 /* Returns true if all buffers are successfully locked */
@@ -672,7 +675,7 @@ static int __buffer_migrate_folio(struct address_space *mapping,
 
 	head = folio_buffers(src);
 	if (!head)
-		return migrate_page(mapping, &dst->page, &src->page, mode);
+		return migrate_folio(mapping, dst, src, mode);
 
 	/* Check whether page does not have extra refs before we do more work */
 	expected_count = folio_expected_refs(mapping, src);
@@ -849,7 +852,7 @@ static int fallback_migrate_folio(struct address_space *mapping,
 	    !filemap_release_folio(src, GFP_KERNEL))
 		return mode == MIGRATE_SYNC ? -EAGAIN : -EBUSY;
 
-	return migrate_page(mapping, &dst->page, &src->page, mode);
+	return migrate_folio(mapping, dst, src, mode);
 }
 
 /*
@@ -877,7 +880,7 @@ static int move_to_new_folio(struct folio *dst, struct folio *src,
 
 	if (likely(is_lru)) {
 		if (!mapping)
-			rc = migrate_page(mapping, &dst->page, &src->page, mode);
+			rc = migrate_folio(mapping, dst, src, mode);
 		else if (mapping->a_ops->migrate_folio)
 			/*
 			 * Most folios have a mapping and most filesystems
diff --git a/mm/migrate_device.c b/mm/migrate_device.c
index 5052093d0262..5dd97c39ca6a 100644
--- a/mm/migrate_device.c
+++ b/mm/migrate_device.c
@@ -718,7 +718,8 @@ void migrate_vma_pages(struct migrate_vma *migrate)
 			continue;
 		}
 
-		r = migrate_page(mapping, newpage, page, MIGRATE_SYNC_NO_COPY);
+		r = migrate_folio(mapping, page_folio(newpage),
+				page_folio(page), MIGRATE_SYNC_NO_COPY);
 		if (r != MIGRATEPAGE_SUCCESS)
 			migrate->src[i] &= ~MIGRATE_PFN_MIGRATE;
 	}
diff --git a/mm/shmem.c b/mm/shmem.c
index 313ae7df59d8..e37ff6a1a6d0 100644
--- a/mm/shmem.c
+++ b/mm/shmem.c
@@ -3801,7 +3801,7 @@ const struct address_space_operations shmem_aops = {
 	.write_end	= shmem_write_end,
 #endif
 #ifdef CONFIG_MIGRATION
-	.migratepage	= migrate_page,
+	.migrate_folio	= migrate_folio,
 #endif
 	.error_remove_page = shmem_error_remove_page,
 };
diff --git a/mm/swap_state.c b/mm/swap_state.c
index f5b6f5638908..0a2021fc55ad 100644
--- a/mm/swap_state.c
+++ b/mm/swap_state.c
@@ -33,7 +33,7 @@ static const struct address_space_operations swap_aops = {
 	.writepage	= swap_writepage,
 	.dirty_folio	= noop_dirty_folio,
 #ifdef CONFIG_MIGRATION
-	.migratepage	= migrate_page,
+	.migrate_folio	= migrate_folio,
 #endif
 };
 
-- 
2.35.1


  parent reply	other threads:[~2022-06-06 20:41 UTC|newest]

Thread overview: 281+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-06-06 20:40 [Ocfs2-devel] [PATCH 00/20] Convert aops->migratepage to aops->migrate_folio Matthew Wilcox (Oracle) via Ocfs2-devel
2022-06-06 20:40 ` [Cluster-devel] " Matthew Wilcox
2022-06-06 20:40 ` Matthew Wilcox (Oracle)
2022-06-06 20:40 ` Matthew Wilcox (Oracle)
2022-06-06 20:40 ` [f2fs-dev] " Matthew Wilcox (Oracle)
2022-06-06 20:40 ` Matthew Wilcox (Oracle)
2022-06-06 20:40 ` [Ocfs2-devel] [PATCH 01/20] fs: Add aops->migrate_folio Matthew Wilcox (Oracle) via Ocfs2-devel
2022-06-06 20:40   ` [Cluster-devel] " Matthew Wilcox
2022-06-06 20:40   ` Matthew Wilcox (Oracle)
2022-06-06 20:40   ` Matthew Wilcox (Oracle)
2022-06-06 20:40   ` [f2fs-dev] " Matthew Wilcox (Oracle)
2022-06-06 20:40   ` Matthew Wilcox (Oracle)
2022-06-08  8:09   ` [Ocfs2-devel] " Christoph Hellwig via Ocfs2-devel
2022-06-08  8:09     ` [Cluster-devel] " Christoph Hellwig
2022-06-08  8:09     ` Christoph Hellwig
2022-06-08  8:09     ` Christoph Hellwig
2022-06-08  8:09     ` [f2fs-dev] " Christoph Hellwig
2022-06-08  8:09     ` Christoph Hellwig
2022-06-06 20:40 ` [Ocfs2-devel] [PATCH 02/20] mm/migrate: Convert fallback_migrate_page() to fallback_migrate_folio() Matthew Wilcox (Oracle) via Ocfs2-devel
2022-06-06 20:40   ` [Cluster-devel] " Matthew Wilcox
2022-06-06 20:40   ` Matthew Wilcox (Oracle)
2022-06-06 20:40   ` Matthew Wilcox (Oracle)
2022-06-06 20:40   ` [f2fs-dev] " Matthew Wilcox (Oracle)
2022-06-06 20:40   ` Matthew Wilcox (Oracle)
2022-06-08  8:11   ` [Ocfs2-devel] " Christoph Hellwig via Ocfs2-devel
2022-06-08  8:11     ` [Cluster-devel] " Christoph Hellwig
2022-06-08  8:11     ` Christoph Hellwig
2022-06-08  8:11     ` Christoph Hellwig
2022-06-08  8:11     ` [f2fs-dev] " Christoph Hellwig
2022-06-08  8:11     ` Christoph Hellwig
2022-06-06 20:40 ` [Ocfs2-devel] [PATCH 03/20] mm/migrate: Convert writeout() to take a folio Matthew Wilcox (Oracle) via Ocfs2-devel
2022-06-06 20:40   ` [Cluster-devel] " Matthew Wilcox
2022-06-06 20:40   ` Matthew Wilcox (Oracle)
2022-06-06 20:40   ` Matthew Wilcox (Oracle)
2022-06-06 20:40   ` [f2fs-dev] " Matthew Wilcox (Oracle)
2022-06-06 20:40   ` Matthew Wilcox (Oracle)
2022-06-08  8:11   ` Christoph Hellwig
2022-06-08  8:11     ` [Cluster-devel] " Christoph Hellwig
2022-06-08  8:11     ` [Ocfs2-devel] " Christoph Hellwig via Ocfs2-devel
2022-06-08  8:11     ` Christoph Hellwig
2022-06-08  8:11     ` Christoph Hellwig
2022-06-08  8:11     ` [f2fs-dev] " Christoph Hellwig
2022-06-06 20:40 ` [Ocfs2-devel] [PATCH 04/20] mm/migrate: Convert buffer_migrate_page() to buffer_migrate_folio() Matthew Wilcox (Oracle) via Ocfs2-devel
2022-06-06 20:40   ` [Cluster-devel] " Matthew Wilcox
2022-06-06 20:40   ` Matthew Wilcox (Oracle)
2022-06-06 20:40   ` Matthew Wilcox (Oracle)
2022-06-06 20:40   ` [f2fs-dev] " Matthew Wilcox (Oracle)
2022-06-06 20:40   ` Matthew Wilcox (Oracle)
2022-06-07  3:37   ` kernel test robot
2022-06-07  3:37     ` [Cluster-devel] " kernel test robot
2022-06-07  3:37     ` [Ocfs2-devel] " kernel test robot via Ocfs2-devel
2022-06-07  3:37     ` kernel test robot
2022-06-07  3:37     ` kernel test robot
2022-06-07  3:37     ` [f2fs-dev] " kernel test robot
2022-06-07 14:57     ` Matthew Wilcox
2022-06-07 14:57       ` [Cluster-devel] " Matthew Wilcox
2022-06-07 14:57       ` Matthew Wilcox
2022-06-07 14:57       ` [f2fs-dev] " Matthew Wilcox
2022-06-07 14:57       ` Matthew Wilcox
2022-06-07 14:57       ` [Ocfs2-devel] " Matthew Wilcox via Ocfs2-devel
2022-06-07 14:57       ` Matthew Wilcox
2022-06-07  8:01   ` kernel test robot
2022-06-07  8:01     ` [Cluster-devel] " kernel test robot
2022-06-07  8:01     ` kernel test robot
2022-06-07  8:01     ` [Ocfs2-devel] " kernel test robot via Ocfs2-devel
2022-06-07  8:01     ` kernel test robot
2022-06-07  8:01     ` [f2fs-dev] " kernel test robot
2022-06-08  8:12   ` [Ocfs2-devel] " Christoph Hellwig via Ocfs2-devel
2022-06-08  8:12     ` [Cluster-devel] " Christoph Hellwig
2022-06-08  8:12     ` Christoph Hellwig
2022-06-08  8:12     ` Christoph Hellwig
2022-06-08  8:12     ` [f2fs-dev] " Christoph Hellwig
2022-06-08  8:12     ` Christoph Hellwig
2022-06-06 20:40 ` [Ocfs2-devel] [PATCH 05/20] mm/migrate: Convert expected_page_refs() to folio_expected_refs() Matthew Wilcox (Oracle) via Ocfs2-devel
2022-06-06 20:40   ` [Cluster-devel] " Matthew Wilcox
2022-06-06 20:40   ` Matthew Wilcox (Oracle)
2022-06-06 20:40   ` Matthew Wilcox (Oracle)
2022-06-06 20:40   ` [f2fs-dev] " Matthew Wilcox (Oracle)
2022-06-06 20:40   ` Matthew Wilcox (Oracle)
2022-06-07 13:41   ` Brian Foster
2022-06-07 13:41     ` [Cluster-devel] " Brian Foster
2022-06-07 13:41     ` Brian Foster
2022-06-07 13:41     ` Brian Foster
2022-06-07 13:41     ` [f2fs-dev] " Brian Foster
2022-06-07 13:41     ` [Ocfs2-devel] " Brian Foster via Ocfs2-devel
2022-06-07 14:11     ` Matthew Wilcox
2022-06-07 14:11       ` [Cluster-devel] " Matthew Wilcox
2022-06-07 14:11       ` [Ocfs2-devel] " Matthew Wilcox via Ocfs2-devel
2022-06-07 14:11       ` Matthew Wilcox
2022-06-07 14:11       ` Matthew Wilcox
2022-06-07 14:11       ` [f2fs-dev] " Matthew Wilcox
2022-06-08  8:14   ` [Ocfs2-devel] " Christoph Hellwig via Ocfs2-devel
2022-06-08  8:14     ` [Cluster-devel] " Christoph Hellwig
2022-06-08  8:14     ` Christoph Hellwig
2022-06-08  8:14     ` Christoph Hellwig
2022-06-08  8:14     ` [f2fs-dev] " Christoph Hellwig
2022-06-08  8:14     ` Christoph Hellwig
2022-06-06 20:40 ` [Ocfs2-devel] [PATCH 06/20] btrfs: Convert btree_migratepage to migrate_folio Matthew Wilcox (Oracle) via Ocfs2-devel
2022-06-06 20:40   ` [Cluster-devel] " Matthew Wilcox
2022-06-06 20:40   ` Matthew Wilcox (Oracle)
2022-06-06 20:40   ` Matthew Wilcox (Oracle)
2022-06-06 20:40   ` [f2fs-dev] " Matthew Wilcox (Oracle)
2022-06-06 20:40   ` Matthew Wilcox (Oracle)
2022-06-08  8:16   ` Christoph Hellwig
2022-06-08  8:16     ` [Cluster-devel] " Christoph Hellwig
2022-06-08  8:16     ` Christoph Hellwig
2022-06-08  8:16     ` Christoph Hellwig
2022-06-08  8:16     ` [f2fs-dev] " Christoph Hellwig
2022-06-08  8:16     ` [Ocfs2-devel] " Christoph Hellwig via Ocfs2-devel
2022-06-06 20:40 ` [Ocfs2-devel] [PATCH 07/20] nfs: Convert " Matthew Wilcox (Oracle) via Ocfs2-devel
2022-06-06 20:40   ` [Cluster-devel] " Matthew Wilcox
2022-06-06 20:40   ` Matthew Wilcox (Oracle)
2022-06-06 20:40   ` Matthew Wilcox (Oracle)
2022-06-06 20:40   ` [f2fs-dev] " Matthew Wilcox (Oracle)
2022-06-06 20:40   ` Matthew Wilcox (Oracle)
2022-06-07 19:02   ` Anna Schumaker
2022-06-07 19:02     ` [Cluster-devel] " Anna Schumaker
2022-06-07 19:02     ` Anna Schumaker
2022-06-07 19:02     ` [f2fs-dev] " Anna Schumaker
2022-06-08  8:17   ` [Ocfs2-devel] " Christoph Hellwig via Ocfs2-devel
2022-06-08  8:17     ` [Cluster-devel] " Christoph Hellwig
2022-06-08  8:17     ` Christoph Hellwig
2022-06-08  8:17     ` Christoph Hellwig
2022-06-08  8:17     ` [f2fs-dev] " Christoph Hellwig
2022-06-08  8:17     ` Christoph Hellwig
2022-06-06 20:40 ` Matthew Wilcox (Oracle) via Ocfs2-devel [this message]
2022-06-06 20:40   ` [Cluster-devel] [PATCH 08/20] mm/migrate: Convert migrate_page() to migrate_folio() Matthew Wilcox
2022-06-06 20:40   ` Matthew Wilcox (Oracle)
2022-06-06 20:40   ` Matthew Wilcox (Oracle)
2022-06-06 20:40   ` [f2fs-dev] " Matthew Wilcox (Oracle)
2022-06-06 20:40   ` Matthew Wilcox (Oracle)
2022-06-08  8:18   ` [Ocfs2-devel] " Christoph Hellwig via Ocfs2-devel
2022-06-08  8:18     ` [Cluster-devel] " Christoph Hellwig
2022-06-08  8:18     ` Christoph Hellwig
2022-06-08  8:18     ` Christoph Hellwig
2022-06-08  8:18     ` [f2fs-dev] " Christoph Hellwig
2022-06-08  8:18     ` Christoph Hellwig
2022-06-06 20:40 ` [Ocfs2-devel] [PATCH 09/20] mm/migrate: Add filemap_migrate_folio() Matthew Wilcox (Oracle) via Ocfs2-devel
2022-06-06 20:40   ` [Cluster-devel] " Matthew Wilcox
2022-06-06 20:40   ` Matthew Wilcox (Oracle)
2022-06-06 20:40   ` Matthew Wilcox (Oracle)
2022-06-06 20:40   ` [f2fs-dev] " Matthew Wilcox (Oracle)
2022-06-06 20:40   ` Matthew Wilcox (Oracle)
2022-06-08  8:19   ` [Ocfs2-devel] " Christoph Hellwig via Ocfs2-devel
2022-06-08  8:19     ` [Cluster-devel] " Christoph Hellwig
2022-06-08  8:19     ` Christoph Hellwig
2022-06-08  8:19     ` Christoph Hellwig
2022-06-08  8:19     ` [f2fs-dev] " Christoph Hellwig
2022-06-08  8:19     ` Christoph Hellwig
2022-06-06 20:40 ` [Ocfs2-devel] [PATCH 10/20] btrfs: Convert btrfs_migratepage to migrate_folio Matthew Wilcox (Oracle) via Ocfs2-devel
2022-06-06 20:40   ` [Cluster-devel] " Matthew Wilcox
2022-06-06 20:40   ` Matthew Wilcox (Oracle)
2022-06-06 20:40   ` Matthew Wilcox (Oracle)
2022-06-06 20:40   ` [f2fs-dev] " Matthew Wilcox (Oracle)
2022-06-06 20:40   ` Matthew Wilcox (Oracle)
2022-06-08  8:19   ` Christoph Hellwig
2022-06-08  8:19     ` [Cluster-devel] " Christoph Hellwig
2022-06-08  8:19     ` Christoph Hellwig
2022-06-08  8:19     ` [f2fs-dev] " Christoph Hellwig
2022-06-08  8:19     ` [Ocfs2-devel] " Christoph Hellwig via Ocfs2-devel
2022-06-08  8:19     ` Christoph Hellwig
2022-06-06 20:40 ` [Ocfs2-devel] [PATCH 11/20] ubifs: Convert to filemap_migrate_folio() Matthew Wilcox (Oracle) via Ocfs2-devel
2022-06-06 20:40   ` [Cluster-devel] " Matthew Wilcox
2022-06-06 20:40   ` Matthew Wilcox (Oracle)
2022-06-06 20:40   ` Matthew Wilcox (Oracle)
2022-06-06 20:40   ` [f2fs-dev] " Matthew Wilcox (Oracle)
2022-06-06 20:40   ` Matthew Wilcox (Oracle)
2022-06-06 20:40 ` [Ocfs2-devel] [PATCH 12/20] f2fs: " Matthew Wilcox (Oracle) via Ocfs2-devel
2022-06-06 20:40   ` [Cluster-devel] " Matthew Wilcox
2022-06-06 20:40   ` Matthew Wilcox (Oracle)
2022-06-06 20:40   ` Matthew Wilcox (Oracle)
2022-06-06 20:40   ` [f2fs-dev] " Matthew Wilcox (Oracle)
2022-06-06 20:40   ` Matthew Wilcox (Oracle)
2022-06-06 20:40 ` [Ocfs2-devel] [PATCH 13/20] aio: Convert to migrate_folio Matthew Wilcox (Oracle) via Ocfs2-devel
2022-06-06 20:40   ` [Cluster-devel] " Matthew Wilcox
2022-06-06 20:40   ` Matthew Wilcox (Oracle)
2022-06-06 20:40   ` Matthew Wilcox (Oracle)
2022-06-06 20:40   ` [f2fs-dev] " Matthew Wilcox (Oracle)
2022-06-06 20:40   ` Matthew Wilcox (Oracle)
2022-06-08  8:20   ` [Ocfs2-devel] " Christoph Hellwig via Ocfs2-devel
2022-06-08  8:20     ` [Cluster-devel] " Christoph Hellwig
2022-06-08  8:20     ` Christoph Hellwig
2022-06-08  8:20     ` Christoph Hellwig
2022-06-08  8:20     ` [f2fs-dev] " Christoph Hellwig
2022-06-08  8:20     ` Christoph Hellwig
2022-06-06 20:40 ` [Ocfs2-devel] [PATCH 14/20] hugetlb: " Matthew Wilcox (Oracle) via Ocfs2-devel
2022-06-06 20:40   ` [Cluster-devel] " Matthew Wilcox
2022-06-06 20:40   ` Matthew Wilcox (Oracle)
2022-06-06 20:40   ` Matthew Wilcox (Oracle)
2022-06-06 20:40   ` [f2fs-dev] " Matthew Wilcox (Oracle)
2022-06-06 20:40   ` Matthew Wilcox (Oracle)
2022-06-07  6:13   ` kernel test robot
2022-06-07  6:13     ` [Cluster-devel] " kernel test robot
2022-06-07  6:13     ` kernel test robot
2022-06-07  6:13     ` kernel test robot
2022-06-07  6:13     ` [f2fs-dev] " kernel test robot
2022-06-07  6:13     ` [Ocfs2-devel] " kernel test robot via Ocfs2-devel
2022-06-07 15:02     ` Matthew Wilcox
2022-06-07 15:02       ` [Cluster-devel] " Matthew Wilcox
2022-06-07 15:02       ` Matthew Wilcox
2022-06-07 15:02       ` [f2fs-dev] " Matthew Wilcox
2022-06-07 15:02       ` Matthew Wilcox
2022-06-07 15:02       ` Matthew Wilcox
2022-06-07 15:02       ` [Ocfs2-devel] " Matthew Wilcox via Ocfs2-devel
2022-06-06 20:40 ` [Ocfs2-devel] [PATCH 15/20] balloon: " Matthew Wilcox (Oracle) via Ocfs2-devel
2022-06-06 20:40   ` [Cluster-devel] " Matthew Wilcox
2022-06-06 20:40   ` Matthew Wilcox (Oracle)
2022-06-06 20:40   ` Matthew Wilcox (Oracle)
2022-06-06 20:40   ` [f2fs-dev] " Matthew Wilcox (Oracle)
2022-06-06 20:40   ` Matthew Wilcox (Oracle)
2022-06-07  7:36   ` David Hildenbrand
2022-06-07  7:36     ` [Cluster-devel] " David Hildenbrand
2022-06-07  7:36     ` David Hildenbrand
2022-06-07  7:36     ` [Ocfs2-devel] " David Hildenbrand via Ocfs2-devel
2022-06-07  7:36     ` David Hildenbrand
2022-06-07  7:36     ` [f2fs-dev] " David Hildenbrand
2022-06-07 14:24     ` Matthew Wilcox
2022-06-07 14:24       ` [Cluster-devel] " Matthew Wilcox
2022-06-07 14:24       ` Matthew Wilcox
2022-06-07 14:24       ` Matthew Wilcox
2022-06-07 14:24       ` [f2fs-dev] " Matthew Wilcox
2022-06-07 14:24       ` [Ocfs2-devel] " Matthew Wilcox via Ocfs2-devel
2022-06-07 19:21       ` Matthew Wilcox via Ocfs2-devel
2022-06-07 19:21         ` [Cluster-devel] " Matthew Wilcox
2022-06-07 19:21         ` Matthew Wilcox
2022-06-07 19:21         ` Matthew Wilcox
2022-06-07 19:21         ` [f2fs-dev] " Matthew Wilcox
2022-06-07 19:21         ` Matthew Wilcox
2022-06-08  9:59         ` David Hildenbrand
2022-06-08  9:59           ` [Cluster-devel] " David Hildenbrand
2022-06-08  9:59           ` David Hildenbrand
2022-06-08  9:59           ` [f2fs-dev] " David Hildenbrand
2022-06-08  9:59           ` [Ocfs2-devel] " David Hildenbrand via Ocfs2-devel
2022-06-08  9:59           ` David Hildenbrand
2022-06-08 13:06           ` Rafael Aquini
2022-06-08 13:06             ` [Cluster-devel] " Rafael Aquini
2022-06-08 13:06             ` Rafael Aquini
2022-06-08 13:06             ` Rafael Aquini
2022-06-08 13:06             ` [f2fs-dev] " Rafael Aquini
2022-06-06 20:40 ` [Ocfs2-devel] [PATCH 16/20] secretmem: " Matthew Wilcox (Oracle) via Ocfs2-devel
2022-06-06 20:40   ` [Cluster-devel] " Matthew Wilcox
2022-06-06 20:40   ` Matthew Wilcox (Oracle)
2022-06-06 20:40   ` Matthew Wilcox (Oracle)
2022-06-06 20:40   ` [f2fs-dev] " Matthew Wilcox (Oracle)
2022-06-06 20:40   ` Matthew Wilcox (Oracle)
2022-06-06 20:40 ` [Ocfs2-devel] [PATCH 17/20] z3fold: " Matthew Wilcox (Oracle) via Ocfs2-devel
2022-06-06 20:40   ` [Cluster-devel] " Matthew Wilcox
2022-06-06 20:40   ` Matthew Wilcox (Oracle)
2022-06-06 20:40   ` Matthew Wilcox (Oracle)
2022-06-06 20:40   ` [f2fs-dev] " Matthew Wilcox (Oracle)
2022-06-06 20:40   ` Matthew Wilcox (Oracle)
2022-06-06 20:40 ` [Ocfs2-devel] [PATCH 18/20] zsmalloc: " Matthew Wilcox (Oracle) via Ocfs2-devel
2022-06-06 20:40   ` [Cluster-devel] " Matthew Wilcox
2022-06-06 20:40   ` Matthew Wilcox (Oracle)
2022-06-06 20:40   ` Matthew Wilcox (Oracle)
2022-06-06 20:40   ` [f2fs-dev] " Matthew Wilcox (Oracle)
2022-06-06 20:40   ` Matthew Wilcox (Oracle)
2022-06-06 20:40 ` [Ocfs2-devel] [PATCH 19/20] fs: Remove aops->migratepage() Matthew Wilcox (Oracle) via Ocfs2-devel
2022-06-06 20:40   ` [Cluster-devel] " Matthew Wilcox
2022-06-06 20:40   ` Matthew Wilcox (Oracle)
2022-06-06 20:40   ` Matthew Wilcox (Oracle)
2022-06-06 20:40   ` [f2fs-dev] " Matthew Wilcox (Oracle)
2022-06-06 20:40   ` Matthew Wilcox (Oracle)
2022-06-08  8:21   ` [Ocfs2-devel] " Christoph Hellwig via Ocfs2-devel
2022-06-08  8:21     ` [Cluster-devel] " Christoph Hellwig
2022-06-08  8:21     ` Christoph Hellwig
2022-06-08  8:21     ` Christoph Hellwig
2022-06-08  8:21     ` [f2fs-dev] " Christoph Hellwig
2022-06-08  8:21     ` Christoph Hellwig
2022-06-06 20:40 ` [Ocfs2-devel] [PATCH 20/20] mm/folio-compat: Remove migration compatibility functions Matthew Wilcox (Oracle) via Ocfs2-devel
2022-06-06 20:40   ` [Cluster-devel] " Matthew Wilcox
2022-06-06 20:40   ` Matthew Wilcox (Oracle)
2022-06-06 20:40   ` Matthew Wilcox (Oracle)
2022-06-06 20:40   ` [f2fs-dev] " Matthew Wilcox (Oracle)
2022-06-06 20:40   ` Matthew Wilcox (Oracle)
2022-06-08  8:22   ` [Ocfs2-devel] " Christoph Hellwig via Ocfs2-devel
2022-06-08  8:22     ` [Cluster-devel] " Christoph Hellwig
2022-06-08  8:22     ` Christoph Hellwig
2022-06-08  8:22     ` Christoph Hellwig
2022-06-08  8:22     ` [f2fs-dev] " Christoph Hellwig
2022-06-08  8:22     ` Christoph Hellwig

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=20220606204050.2625949-9-willy@infradead.org \
    --to=ocfs2-devel@oss.oracle.com \
    --cc=cluster-devel@redhat.com \
    --cc=linux-aio@kvack.org \
    --cc=linux-block@vger.kernel.org \
    --cc=linux-btrfs@vger.kernel.org \
    --cc=linux-ext4@vger.kernel.org \
    --cc=linux-f2fs-devel@lists.sourceforge.net \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linux-mtd@lists.infradead.org \
    --cc=linux-nfs@vger.kernel.org \
    --cc=linux-ntfs-dev@lists.sourceforge.net \
    --cc=linux-xfs@vger.kernel.org \
    --cc=virtualization@lists.linux-foundation.org \
    --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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.