Your patch certainly can fix the problem with my testcases, but I don't
think it's
a good way. There are other paths that can call do_invalidatepage , for
instance
block ioctl to discard and zero_range.
On 2020/8/24 23:51, Jan Kara wrote:
Hello,
On Sat 22-08-20 16:22:16, Ye Bin wrote:
Ye Bin (2):
ext4: Add comment to BUFFER_FLAGS_DISCARD for search code
jbd2: Fix race between do_invalidatepage and init_page_buffers
fs/buffer.c | 12 +++++++++++-
fs/jbd2/journal.c | 7 +++++++
include/linux/buffer_head.h | 2 ++
3 files changed, 20 insertions(+), 1 deletion(-)
Thanks for the good description of the problem and the analysis. I could
now easily understand what was really happening on your system. I think the
problem should be fixed differently through - it is a problem of
block_write_full_page() that it invalidates buffers while JBD2 is working
with them. Attached patch should also fix the problem. Can you please test
whether it fixes your testcase as well? Thanks!
Honza