From: Andrew Price anprice@redhat.com
[ Upstream commit 5c8f12cf1e64e0e8e6cb80b0c935389973e8be8d ]
Clears up the warning added in 7ee3647243e5 ("migrate: Remove call to ->writepage") that occurs in various xfstests, causing "something found in dmesg" failures.
[ 341.136573] gfs2_meta_aops does not implement migrate_folio [ 341.136953] WARNING: CPU: 1 PID: 36 at mm/migrate.c:944 move_to_new_folio+0x2f8/0x300
Signed-off-by: Andrew Price anprice@redhat.com Signed-off-by: Andreas Gruenbacher agruenba@redhat.com Signed-off-by: Sasha Levin sashal@kernel.org ---
LLM Generated explanations, may be completely bogus:
Based on my analysis, I can now provide my assessment:
**YES**
This commit should be backported to stable kernel trees for the following reasons:
1. **Fixes a real bug**: The commit fixes a warning that appears in xfstests runs where GFS2 filesystems trigger a WARN_ONCE in mm/migrate.c:944 because the gfs2_meta_aops and gfs2_rgrp_aops address space operations don't implement the migrate_folio callback.
2. **Small and contained fix**: The change is minimal - it only adds two lines setting `.migrate_folio = buffer_migrate_folio_norefs,` to two address_space_operations structures in fs/gfs2/meta_io.c. This is a very low-risk change.
3. **Prevents test failures**: Without this fix, xfstests fail with "something found in dmesg" errors due to the warning, which affects testing infrastructure and CI systems.
4. **Follows established pattern**: The fix uses `buffer_migrate_folio_norefs`, which is the standard migration function for filesystems that use buffer heads without additional reference counting requirements. This same function is already used by ext4, nilfs2, and block device operations.
5. **Regression from upstream change**: The warning was introduced by commit 7ee3647243e5 ("migrate: Remove call to ->writepage"), which enforces that filesystems must implement migrate_folio. This makes the fix necessary for proper operation with newer kernels.
The fix is a classic stable tree candidate: it addresses a specific bug, has minimal code changes, doesn't introduce new features or architectural changes, and fixes a regression that affects users running tests on GFS2 filesystems.
fs/gfs2/meta_io.c | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/fs/gfs2/meta_io.c b/fs/gfs2/meta_io.c index 1f42eae112fb..b1a368fc089f 100644 --- a/fs/gfs2/meta_io.c +++ b/fs/gfs2/meta_io.c @@ -93,6 +93,7 @@ const struct address_space_operations gfs2_meta_aops = { .invalidate_folio = block_invalidate_folio, .writepage = gfs2_aspace_writepage, .release_folio = gfs2_release_folio, + .migrate_folio = buffer_migrate_folio_norefs, };
const struct address_space_operations gfs2_rgrp_aops = { @@ -100,6 +101,7 @@ const struct address_space_operations gfs2_rgrp_aops = { .invalidate_folio = block_invalidate_folio, .writepage = gfs2_aspace_writepage, .release_folio = gfs2_release_folio, + .migrate_folio = buffer_migrate_folio_norefs, };
/**