From d0b07ec244832f1921aaf240ab40aa037e60cf01 Mon Sep 17 00:00:00 2001 From: Jim906 Date: Tue, 8 Jul 2025 19:16:42 -0400 Subject: [PATCH] nfs4: Disable file cache to invalidate it * When resetting the file cache, use file_cache_disable() to remove all pages, instead of calling file_cache_delete(). * Possible fix for #19656. file_cache_delete doesn't actually delete the VMCache object, so when file_cache_create() is called the returned file_cache_ref just points to the same VMCache as before. Change-Id: Ifba42b51c52f11980fd97212d0c3bdfdc1e55085 Reviewed-on: https://review.haiku-os.org/c/haiku/+/9448 Tested-by: Commit checker robot Reviewed-by: waddlesplash --- src/add-ons/kernel/file_systems/nfs4/Inode.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/add-ons/kernel/file_systems/nfs4/Inode.cpp b/src/add-ons/kernel/file_systems/nfs4/Inode.cpp index d2826d7fad..bccb37465e 100644 --- a/src/add-ons/kernel/file_systems/nfs4/Inode.cpp +++ b/src/add-ons/kernel/file_systems/nfs4/Inode.cpp @@ -173,14 +173,19 @@ Inode::RevalidateFileCache() return B_OK; SyncAndCommit(true); - file_cache_delete(fFileCache); + result = file_cache_disable(fFileCache); + if (result != B_OK) { + INFORM("RevalidateFileCache: failed to disable cache\n"); + return result; + } struct stat st; fMetaCache.InvalidateStat(); result = Stat(&st); if (result == B_OK) fMaxFileSize = st.st_size; - fFileCache = file_cache_create(fFileSystem->DevId(), ID(), fMaxFileSize); + file_cache_set_size(fFileCache, fMaxFileSize); + file_cache_enable(fFileCache); fChange = change; return B_OK;