diff options
author | 2020-02-19 01:23:26 +0000 | |
---|---|---|
committer | 2020-02-19 11:07:43 +0000 | |
commit | a76c349ea76a43d5bb7e4d889bb43cccf72371fc (patch) | |
tree | c41e7ba6cf889522d76c6abf61f4bb439580b583 /jni/node-inl.h | |
parent | dab62a2b9b915d78752f925fda06eefa5f2d81c4 (diff) |
Invalidate FUSE VFS dentry cache
To improve filesystem performance we can reduce unnecessary
requests to the FUSE daemon by enabling VFS caching of dentries
after a FUSE_LOOKUP request.
To enable correctly, we should ensure that the lower filesystem
dentries are not modified outside of the FUSE driver. Unfortunately,
we already do this when handling IO requests over binder using the
ContentResolver interface.
To fix, we should invalidate any FUSE dentries in the VFS cache so that
subsequent lookups for those files do not return incorrectly cached
values from the VFS.
This change just adds support for invalidating FUSE VFS cache
dentries, subsequent cl will call it when required. Note that it
should never be called in the execution path of a related filesytem
operation. See fuse_lowlevel.h for more details. Will ensure that this
is never called in the FUSE execution path in a follow up
Test: atest FuseDaemonHostTest#testVfsCacheConsistency
Bug: 145741152
Change-Id: I54e67f63a29c82a392916fb28d1a7f8f894c685b
Diffstat (limited to 'jni/node-inl.h')
-rw-r--r-- | jni/node-inl.h | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/jni/node-inl.h b/jni/node-inl.h index 76d1ba91b..e21ae5448 100644 --- a/jni/node-inl.h +++ b/jni/node-inl.h @@ -160,6 +160,11 @@ class node { return name_; } + node* GetParent() const { + std::lock_guard<std::recursive_mutex> guard(*lock_); + return parent_; + } + inline void AddHandle(handle* h) { std::lock_guard<std::recursive_mutex> guard(*lock_); handles_.emplace_back(std::unique_ptr<handle>(h)); |