sapling/eden/fs/inodes
Chad Austin 3ac3738140 stop prefetching blobs on every open()
Summary:
When a file's contents are not cached by the kernel, open(), read(),
and close() are all piped into the FUSE daemon. But when a file's
contents ARE cached by the kernel, only open() and close() are. Thus,
in the common case, the kernel will notify us that a file is being
opened, but read() will be served out of cache.

In that case, prefetching the blob is not beneficial, because it will
be dropped anyway upon close().

In situations where the VFS cache is hot but eden's own caches are
cold, this is probably a win.

Reviewed By: strager

Differential Revision: D10044546

fbshipit-source-id: eeb0854dbff021b2c73f1a42f31a94dd9fcf0837
2018-09-26 11:39:56 -07:00
..
test test that inodes can be unloaded while they're loading 2018-09-25 17:36:46 -07:00
CheckoutAction.cpp Future<T>::then Future<T>::then() -> Future<T>::thenValue or thenTry. 2018-09-14 17:10:57 -07:00
CheckoutAction.h use Future::makeEmpty() instead of Optional<Future> 2018-06-13 10:22:42 -07:00
CheckoutContext.cpp Future<T>::then Future<T>::then(not-try-task) -> Future<T>::thenValue(task). 2018-08-22 12:07:41 -07:00
CheckoutContext.h Enabled additional compiler warnings in Eden. 2018-06-01 11:39:01 -07:00
CMakeLists.txt add CMake build files 2018-04-30 14:37:46 -07:00
DeferredDiffEntry.cpp Future<T>::then Future<T>::then() -> Future<T>::thenValue or thenTry. 2018-09-14 17:10:57 -07:00
DeferredDiffEntry.h Enabled additional compiler warnings in Eden. 2018-06-01 11:39:01 -07:00
DiffContext.cpp DiffContext changes to use TopLevelIgnores 2018-07-19 17:21:38 -07:00
DiffContext.h DiffContext changes to use TopLevelIgnores 2018-07-19 17:21:38 -07:00
Differ.cpp Future<T>::then Future<T>::then() -> Future<T>::thenValue or thenTry. 2018-09-14 17:10:57 -07:00
Differ.h update getScmStatus() to require the commit hash as an argument 2018-04-06 12:51:31 -07:00
DirEntry.cpp clarify DirEntry's ownership of InodeBase* 2018-07-17 21:37:35 -07:00
DirEntry.h clarify DirEntry's ownership of InodeBase* 2018-07-17 21:37:35 -07:00
EdenDispatcher.cpp change default entry generation to 0 2018-09-20 12:54:24 -07:00
EdenDispatcher.h mark a bunch of folly::Future<folly::Unit> functions with FOLLY_NODISCARD 2018-04-26 21:00:25 -07:00
EdenFileHandle.cpp restructure JournalDelta and fix Watchman subscription race 2018-08-15 14:52:06 -07:00
EdenFileHandle.h mark a bunch of folly::Future<folly::Unit> functions with FOLLY_NODISCARD 2018-04-26 21:00:25 -07:00
EdenMount.cpp Future<T>::then Future<T>::then() -> Future<T>::thenValue or thenTry. 2018-09-14 17:10:57 -07:00
EdenMount.h Use a deterministic executor in TestMount 2018-08-21 12:23:00 -07:00
FileInode.cpp stop prefetching blobs on every open() 2018-09-26 11:39:56 -07:00
FileInode.h add a safe getMetadata method to InodeBase 2018-08-23 16:55:58 -07:00
GlobNode.cpp Future<T>::then Future<T>::then() -> Future<T>::thenValue or thenTry. 2018-09-14 17:10:57 -07:00
GlobNode.h move GlobNode -> inodes dir 2018-07-13 11:22:19 -07:00
InodeBase.cpp add a safe getMetadata method to InodeBase 2018-08-23 16:55:58 -07:00
InodeBase.h add a safe getMetadata method to InodeBase 2018-08-23 16:55:58 -07:00
InodeDiffCallback.h run clang-format across all C++ files 2017-11-03 16:02:03 -07:00
InodeError.cpp throw all errno exceptions as std::generic_category 2018-03-20 13:38:45 -07:00
InodeError.h throw all errno exceptions as std::generic_category 2018-03-20 13:38:45 -07:00
InodeLoader.h Future<T>::then Future<T>::then(not-try-task) -> Future<T>::thenValue(task). 2018-08-22 12:07:41 -07:00
InodeMap.cpp remove InodeMap::lookupUnloadedInode 2018-09-24 10:39:43 -07:00
InodeMap.h remove InodeMap::lookupUnloadedInode 2018-09-24 10:39:43 -07:00
InodeMetadata.cpp allow changing uid/gid on files and directories 2018-05-24 00:15:54 -07:00
InodeMetadata.h allow changing permissions on directories 2018-05-22 11:22:19 -07:00
InodePtr-defs.h run clang-format across all C++ files 2017-11-03 16:02:03 -07:00
InodePtr.cpp fix opt build 2018-03-12 22:22:59 -07:00
InodePtr.h add explicit conversion from std::unique_ptr to InodePtr 2018-03-09 13:37:08 -08:00
InodePtrFwd.h run clang-format across all C++ files 2017-11-03 16:02:03 -07:00
InodeTable.h store FileInode and TreeInode timestamps in the InodeTable 2018-05-22 11:22:19 -07:00
InodeTimestamps.cpp mark parts of EdenTimestamp noexcept 2018-05-09 16:50:52 -07:00
InodeTimestamps.h update mtime on directories when renaming 2018-06-01 11:39:01 -07:00
Overlay.cpp Fix crash during inode scan 2018-09-17 14:23:53 -07:00
Overlay.h Fix crash during inode scan 2018-09-17 14:23:53 -07:00
overlay.thrift decouple whether an entry has an inode number from materialization status 2018-03-23 18:21:21 -07:00
ParentInodeInfo.h Split Dir into its own type and move TreeInodeState out of TreeInode 2018-06-01 09:38:45 -07:00
ServerState.cpp count FUSE accesses by process ID 2018-09-10 13:52:51 -07:00
ServerState.h count FUSE accesses by process ID 2018-09-10 13:52:51 -07:00
TopLevelIgnores.h Remove unused code for ingesting system and user ignore files 2018-07-30 19:06:33 -07:00
TreeInode.cpp Future<T>::then Future<T>::then() -> Future<T>::thenValue or thenTry. 2018-09-14 17:10:57 -07:00
TreeInode.h add a function that only unloads children unreferenced by FUSE 2018-09-12 14:37:25 -07:00
TreeInodeDirHandle.cpp store FileInode and TreeInode timestamps in the InodeTable 2018-05-22 11:22:19 -07:00
TreeInodeDirHandle.h remove the fusell namespace 2018-03-19 17:01:52 -07:00