sapling/eden/fs
Xavier Deguillard 8b82dc96cb prjfs: make readdir asynchronous
Summary:
As of right now, opendir is the expensive callbacks due to fetching the sizes
for all the files in a directory. This strategy however breaks down when
timeouts are added as very large directories would trigger the timeout, not
because EdenFS is having a hard time reaching Mononoke, but because of
bandwidth limitation.

To avoid this issue, we need to have a per-file timeout and thus makes opendir
just trigger the futures, but not wait on them. The waiting bit will happen
at readdir time which will also enable having a timeout per file.

The one drawback to this is that the ObjectFetchContext that is passed in by
opendir cannot live long enough to be used in the size future. For now, we can
use a null context, but a proper context will need to be passed in, in the
future.

Reviewed By: wez

Differential Revision: D24895089

fbshipit-source-id: e10ceae2f7c49b4a006b15a34f85d06a2863ae3a
2020-11-13 14:27:26 -08:00
..
benchharness add 4k random writes benchmark 2020-07-14 16:13:37 -07:00
benchmarks Remove dead includes in eden 2020-10-09 15:25:47 -07:00
cli Change Prefetch Profiles command name 2020-11-13 12:28:15 -08:00
config remove dependency on glog 2020-11-10 16:31:15 -08:00
docs Some minor modifications to verbiage in documentation 2020-07-06 22:20:17 -07:00
fuse edenfs: brace for macfuse 2020-11-12 18:09:19 -08:00
inodes prjfs: make readdir asynchronous 2020-11-13 14:27:26 -08:00
journal remove dependency on glog 2020-11-10 16:31:15 -08:00
model remove dependency on glog 2020-11-10 16:31:15 -08:00
monitor Remove dead includes in eden 2020-10-09 15:25:47 -07:00
notifications notifications: support Windows 2020-11-11 09:37:56 -08:00
prjfs prjfs: make readdir asynchronous 2020-11-13 14:27:26 -08:00
py give new thrift client access to streaming APIs 2020-10-07 23:36:40 -07:00
rocksdb Remove dead includes in eden 2019-10-11 16:45:01 -07:00
scripts move eden/scripts/ into eden/fs/ 2020-11-04 18:29:49 -08:00
service enable skipping Metadata prefetches during eden prefetches 2020-11-11 16:30:02 -08:00
sqlite remove dependency on glog 2020-11-10 16:31:15 -08:00
store enable skipping Metadata prefetches during eden prefetches 2020-11-11 16:30:02 -08:00
takeover inodes: rename FUSE refcount to fs refcount 2020-11-04 17:34:01 -08:00
telemetry prjfs: make readdir asynchronous 2020-11-13 14:27:26 -08:00
testharness enable skipping Metadata prefetches during eden prefetches 2020-11-11 16:30:02 -08:00
third-party eden: support NO_OPEN support on macOS 2020-07-27 17:53:03 -07:00
utils pathfuncs: silence warning 2020-11-11 20:00:39 -08:00
CMakeLists.txt prjfs: move win/mount into prjfs 2020-09-22 09:09:56 -07:00