sapling/eden/fs/inodes
Xavier Deguillard d1ad84db19 inodes: prepopulate the InodeMap on mount
Summary:
On Windows, the working copy doesn't go away on unmount, instead placeholders
and full files[0] are still present on disk. For this reason, EdenFS needs to
either overly invalidate files and directories at update times, or need to
remember what is present on disk so the state can be recovered.

For now, this diff simply focus on reloading all the inodes that are present on
disk in the InodeMap.

[0]: https://docs.microsoft.com/en-us/windows/win32/projfs/cache-state

Reviewed By: chadaustin

Differential Revision: D28889082

fbshipit-source-id: 90170c1291da563bea455c8032dc8282a093c9b3
2021-06-08 16:04:56 -07:00
..
overlay overlay: only log first 50 fsck errors 2021-04-22 13:12:50 -07:00
sqliteoverlay sqlite: release StatementCache before releasing SqliteDatabase 2021-03-16 23:30:22 -07:00
test eden: pass path to overlay test data via Buck 2021-06-08 04:21:08 -07:00
treeoverlay overlay: allow creation of in-memory overlay 2021-06-08 10:14:09 -07:00
CacheHint.h Tidy up license headers 2019-10-11 05:28:23 -07:00
CheckoutAction.cpp remove dependency on glog 2020-11-10 16:31:15 -08:00
CheckoutAction.h Avoid overfetching in checkout 2020-11-03 10:58:22 -08:00
CheckoutContext.cpp introduce a variable-width RootId type that identifies the root of an EdenFS checkout's contents 2021-06-07 17:25:31 -07:00
CheckoutContext.h introduce a variable-width RootId type that identifies the root of an EdenFS checkout's contents 2021-06-07 17:25:31 -07:00
CMakeLists.txt nfs: implement SETATTR RPC 2021-03-11 08:31:07 -08:00
DeferredDiffEntry.cpp remove dependency on glog 2020-11-10 16:31:15 -08:00
DeferredDiffEntry.h add an ObjectFetchContext interface 2020-02-05 13:15:01 -08:00
DirEntry.cpp remove dependency on glog 2020-11-10 16:31:15 -08:00
DirEntry.h utils: introduce CaseSensitivity 2021-04-20 13:08:27 -07:00
EdenDispatcherFactory.cpp fs: add an NfsDispatcher 2021-02-17 23:32:38 -08:00
EdenDispatcherFactory.h fs: add an NfsDispatcher 2021-02-17 23:32:38 -08:00
EdenMount.cpp inodes: prepopulate the InodeMap on mount 2021-06-08 16:04:56 -07:00
EdenMount.h inodes: prepopulate the InodeMap on mount 2021-06-08 16:04:56 -07:00
EdenMountError.h Tidy up license headers 2019-10-11 05:28:23 -07:00
FileInode.cpp thread ObjectFetchContext write, setattr, fallocate 2021-06-04 14:57:47 -07:00
FileInode.h thread ObjectFetchContext write, setattr, fallocate 2021-06-04 14:57:47 -07:00
FuseDispatcherImpl.cpp thread ObjectFetchContext write, setattr, fallocate 2021-06-04 14:57:47 -07:00
FuseDispatcherImpl.h thread ObjectFetchContext write, setattr, fallocate 2021-06-04 14:57:47 -07:00
GlobNode.cpp introduce a variable-width RootId type that identifies the root of an EdenFS checkout's contents 2021-06-07 17:25:31 -07:00
GlobNode.h introduce a variable-width RootId type that identifies the root of an EdenFS checkout's contents 2021-06-07 17:25:31 -07:00
InodeBase.cpp inodes: make InodeBase::stat return an ImmediateFuture 2021-05-27 10:57:52 -07:00
InodeBase.h thread ObjectFetchContext write, setattr, fallocate 2021-06-04 14:57:47 -07:00
InodeError.cpp allow querying Overlay file size outside of FileInode 2020-10-23 11:16:10 -07:00
InodeError.h Tidy up license headers 2019-10-11 05:28:23 -07:00
InodeLoader.h thread ObjectFetchContext thrift applyToInodes 2021-06-04 14:57:46 -07:00
InodeMap.cpp inodes: prepopulate the InodeMap on mount 2021-06-08 16:04:56 -07:00
InodeMap.h inodes: prepopulate the InodeMap on mount 2021-06-08 16:04:56 -07:00
InodeMetadata.cpp inodes: make InodeBase::setattr independant from FUSE 2021-03-05 11:11:19 -08:00
InodeMetadata.h inodes: make InodeBase::setattr independant from FUSE 2021-03-05 11:11:19 -08:00
InodeNumber.cpp inodes: move fuse/InodeNumber.{cpp,h} into inodes/ 2020-09-02 12:15:48 -07:00
InodeNumber.h remove dependency on glog 2020-11-10 16:31:15 -08:00
InodePtr-defs.h remove dependency on glog 2020-11-10 16:31:15 -08:00
InodePtr.cpp Apply clang-format update fixes 2021-01-10 10:06:29 -08:00
InodePtr.h remove dependency on glog 2020-11-10 16:31:15 -08:00
InodePtrFwd.h Tidy up license headers 2019-10-11 05:28:23 -07:00
InodeTable.h Apply clang-format update fixes 2021-01-10 10:06:29 -08:00
InodeTimestamps.cpp inodes: make InodeBase::setattr independant from FUSE 2021-03-05 11:11:19 -08:00
InodeTimestamps.h inodes: make lastCheckoutTime an EdenTimestamp 2021-04-19 14:38:14 -07:00
IOverlay.h add new operation-aware APIs to IOverlay 2021-03-02 09:58:16 -08:00
NfsDispatcherImpl.cpp thread ObjectFetchContext write, setattr, fallocate 2021-06-04 14:57:47 -07:00
NfsDispatcherImpl.h nfs: convert Nfsd3 to ImmediateFuture 2021-05-13 16:51:34 -07:00
Overlay.cpp overlay: allow creation of in-memory overlay 2021-06-08 10:14:09 -07:00
Overlay.h overlay: allow creation of in-memory overlay 2021-06-08 10:14:09 -07:00
OverlayFile.cpp implement FUSE_FALLOCATE 2021-01-20 19:04:59 -08:00
OverlayFile.h implement FUSE_FALLOCATE 2021-01-20 19:04:59 -08:00
OverlayFileAccess.cpp Back out "checkout: keep InodeNumber constant during checkout" 2021-05-12 12:26:53 -07:00
OverlayFileAccess.h Back out "checkout: keep InodeNumber constant during checkout" 2021-05-12 12:26:53 -07:00
ParentInodeInfo.h Tidy up license headers 2019-10-11 05:28:23 -07:00
PrjfsDispatcherImpl.cpp thread ObjectFetchContext rename 2021-06-04 14:57:46 -07:00
PrjfsDispatcherImpl.h inodes: move dispatchers around 2021-02-10 11:52:06 -08:00
RequestContext.cpp telemetry: switch to using quantile stats instead of histograms 2021-02-14 16:37:08 -08:00
RequestContext.h telemetry: switch to using quantile stats instead of histograms 2021-02-14 16:37:08 -08:00
ServerState.cpp nfs: add NfsServer class 2021-02-09 12:47:11 -08:00
ServerState.h nfs: allow mountd and nfsd sockets to be non-inet on macOS 2021-05-12 13:06:57 -07:00
Traverse.cpp inodes: make loadOverlayDir to return empty dir when missing 2021-03-02 09:58:18 -08:00
Traverse.h inodes: rename FUSE refcount to fs refcount 2020-11-04 17:34:01 -08:00
TreeInode.cpp thread ObjectFetchContext write, setattr, fallocate 2021-06-04 14:57:47 -07:00
TreeInode.h thread ObjectFetchContext write, setattr, fallocate 2021-06-04 14:57:47 -07:00
TreePrefetchLease.cpp limit the number of tree prefetch operations that can run in parallel 2019-12-20 16:14:19 -08:00
TreePrefetchLease.h fix one case of logging of null ClientPid 2020-08-31 10:05:02 -07:00