mirror of
https://github.com/facebook/sapling.git
synced 2024-10-10 08:47:12 +03:00
49b103584c
Summary: During an `hg update`, all the loaded inodes are unloaded and forgotten, except the ones that had a positive refcount, these are forgotten when FUSE calls the `forget` API. For NFS, this `forget` API doesn't exist but the protocol relies on file handle to stay valid for some time. The duration for which a file handle need to stay alive depends on several factor. The root one needs to always be valid, the rest relies on the lookup cache that the client keeps. This lookup cache is invalidated when the mtime for the parent directory changes, but mtime changes are often not immediately detected, as attributes are cached client side with the `acdirmin` and `acregmin` for directories and files. For now, this diff doesn't attempt to deal with files being out of date right after an `hg update`, it merely accounts for the NFS client being able to pass old file handles to EdenFS. The astude reader will have noticed that InodeNumber are never reclaimed for now, for that, a time-based mechanism will need to be added to forget InodeNumbers that have expired. Reviewed By: kmancini Differential Revision: D27405295 fbshipit-source-id: af4a4ce9e31bfcc335608da91f0247b50ab87b3f |
||
---|---|---|
.. | ||
benchharness | ||
benchmarks | ||
cli | ||
cli_rs | ||
config | ||
docs | ||
fuse | ||
inodes | ||
journal | ||
model | ||
monitor | ||
nfs | ||
notifications | ||
prjfs | ||
py | ||
rocksdb | ||
scripts | ||
service | ||
sqlite | ||
store | ||
takeover | ||
telemetry | ||
testharness | ||
third-party | ||
utils | ||
CMakeLists.txt |