From 5da70510b3e1a4a88a5962187cb3fa53c273b641 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Wed, 3 Sep 2025 17:02:56 -0400 Subject: [PATCH] kernel/fs: Fallback in vfs_request_io if read_pages/write_pages aren't available. Add a comment indicating why we don't call them unconditionally. Fixes #19642. --- src/system/kernel/fs/vfs_request_io.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/system/kernel/fs/vfs_request_io.cpp b/src/system/kernel/fs/vfs_request_io.cpp index 9dc4cddb2f..51d5498d73 100644 --- a/src/system/kernel/fs/vfs_request_io.cpp +++ b/src/system/kernel/fs/vfs_request_io.cpp @@ -119,11 +119,17 @@ public: vec.iov_base = buffer; vec.iov_len = *length; + // We need to use write_pages (if it exists) to bypass caches. + if (fWrite) { + if (!HAS_FS_CALL(fVnode, write_pages)) + return FS_CALL(fVnode, write, fCookie, offset, buffer, length); return FS_CALL(fVnode, write_pages, fCookie, offset, &vec, 1, length); } + if (!HAS_FS_CALL(fVnode, read_pages)) + return FS_CALL(fVnode, read, fCookie, offset, buffer, length); return FS_CALL(fVnode, read_pages, fCookie, offset, &vec, 1, length); }