From 7b3e1076f3196dd02af703a432c1ea6f9398c585 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Tue, 8 Nov 2022 13:21:34 +0100 Subject: [PATCH] 5.10-stable patches added patches: ext4-f2fs-fix-readahead-of-verity-data.patch --- ...t4-f2fs-fix-readahead-of-verity-data.patch | 62 +++++++++++++++++++ queue-5.10/series | 1 + 2 files changed, 63 insertions(+) create mode 100644 queue-5.10/ext4-f2fs-fix-readahead-of-verity-data.patch diff --git a/queue-5.10/ext4-f2fs-fix-readahead-of-verity-data.patch b/queue-5.10/ext4-f2fs-fix-readahead-of-verity-data.patch new file mode 100644 index 00000000000..775c7d9e9d2 --- /dev/null +++ b/queue-5.10/ext4-f2fs-fix-readahead-of-verity-data.patch @@ -0,0 +1,62 @@ +From 4fa0e3ff217f775cb58d2d6d51820ec519243fb9 Mon Sep 17 00:00:00 2001 +From: "Matthew Wilcox (Oracle)" +Date: Wed, 12 Oct 2022 20:34:19 +0100 +Subject: ext4,f2fs: fix readahead of verity data + +From: Matthew Wilcox (Oracle) + +commit 4fa0e3ff217f775cb58d2d6d51820ec519243fb9 upstream. + +The recent change of page_cache_ra_unbounded() arguments was buggy in the +two callers, causing us to readahead the wrong pages. Move the definition +of ractl down to after the index is set correctly. This affected +performance on configurations that use fs-verity. + +Link: https://lkml.kernel.org/r/20221012193419.1453558-1-willy@infradead.org +Fixes: 73bb49da50cd ("mm/readahead: make page_cache_ra_unbounded take a readahead_control") +Signed-off-by: Matthew Wilcox (Oracle) +Reported-by: Jintao Yin +Signed-off-by: Andrew Morton +Signed-off-by: Eric Biggers +Signed-off-by: Greg Kroah-Hartman +--- + fs/ext4/verity.c | 3 ++- + fs/f2fs/verity.c | 3 ++- + 2 files changed, 4 insertions(+), 2 deletions(-) + +--- a/fs/ext4/verity.c ++++ b/fs/ext4/verity.c +@@ -370,13 +370,14 @@ static struct page *ext4_read_merkle_tre + pgoff_t index, + unsigned long num_ra_pages) + { +- DEFINE_READAHEAD(ractl, NULL, inode->i_mapping, index); + struct page *page; + + index += ext4_verity_metadata_pos(inode) >> PAGE_SHIFT; + + page = find_get_page_flags(inode->i_mapping, index, FGP_ACCESSED); + if (!page || !PageUptodate(page)) { ++ DEFINE_READAHEAD(ractl, NULL, inode->i_mapping, index); ++ + if (page) + put_page(page); + else if (num_ra_pages > 1) +--- a/fs/f2fs/verity.c ++++ b/fs/f2fs/verity.c +@@ -261,13 +261,14 @@ static struct page *f2fs_read_merkle_tre + pgoff_t index, + unsigned long num_ra_pages) + { +- DEFINE_READAHEAD(ractl, NULL, inode->i_mapping, index); + struct page *page; + + index += f2fs_verity_metadata_pos(inode) >> PAGE_SHIFT; + + page = find_get_page_flags(inode->i_mapping, index, FGP_ACCESSED); + if (!page || !PageUptodate(page)) { ++ DEFINE_READAHEAD(ractl, NULL, inode->i_mapping, index); ++ + if (page) + put_page(page); + else if (num_ra_pages > 1) diff --git a/queue-5.10/series b/queue-5.10/series index a55b915bb46..3b78c70db9f 100644 --- a/queue-5.10/series +++ b/queue-5.10/series @@ -110,3 +110,4 @@ kvm-x86-mask-off-reserved-bits-in-cpuid.80000001h.patch kvm-x86-emulator-em_sysexit-should-update-ctxt-mode.patch kvm-x86-emulator-introduce-emulator_recalc_and_set_mode.patch kvm-x86-emulator-update-the-emulation-mode-after-cr0-write.patch +ext4-f2fs-fix-readahead-of-verity-data.patch -- 2.47.3