sapling/eden/fs
Xavier Deguillard ad5402810a win: make .eden/config an in-memory blob
Summary:
At mount time, EdenFS will try to create the .eden/config file which will
indicate to the client that this is an EdenFS repo, this config also contains
the location of the socket to talk to EdenFS.

On unices, and while the .eden directory is slightly different, the content of
this directory is written onto the overlay, but on Windows, the overlay is the
repository itself. What this means is that creating this config file will end
up triggering a ProjFS callback, which can potentially lead to deadlocks if
we're not careful.

A future change will simply prevent these recursive callbacks from happening
and thus a solution needs to be found for the .eden/config file itself. Since
the file itself is tiny (about 400B), and should only be accessed once[0], the
simple approach to keep it in memory and special case it works perfectly.

[0]: Once a file was read fully by ProjFS, it's present in the overlay and
     EdenFS will no longer be requested to provide it.

Reviewed By: chadaustin

Differential Revision: D22310734

fbshipit-source-id: 6b2dba2164496ebd251104d7875b51569be2471f
2020-07-24 22:28:27 -07:00
..
benchharness add 4k random writes benchmark 2020-07-14 16:13:37 -07:00
benchmarks add 4k random writes benchmark 2020-07-14 16:13:37 -07:00
cli allow specifying a mount for 'eden debug gc_process_fetch' 2020-07-23 11:54:12 -07:00
config Migrate to field_ref Thrift API 2020-07-21 11:23:35 -07:00
docs Some minor modifications to verbiage in documentation 2020-07-06 22:20:17 -07:00
fuse refactor fuse handler table 2020-07-24 13:03:07 -07:00
inodes win: make .eden/config an in-memory blob 2020-07-24 22:28:27 -07:00
journal Migrate to field_ref Thrift API 2020-07-21 11:23:35 -07:00
model model: report symlink/executable as regular files on Windows 2020-05-12 08:46:35 -07:00
monitor enable log rotation in edenfs_monitor 2020-05-07 20:05:46 -07:00
notifications eden: show desktop notification for blob/tree fetch errors 2020-02-10 08:28:49 -08:00
py thrift: do not test for socket before connecting to it 2020-07-22 15:37:14 -07:00
rocksdb Remove dead includes in eden 2019-10-11 16:45:01 -07:00
service allow specifying a mount for 'eden debug gc_process_fetch' 2020-07-23 11:54:12 -07:00
sqlite silence some msvc warnings from sqlite.{h,cpp} 2020-04-26 21:14:24 -07:00
store get priority from ObjectFetchContext in BackingStore 2020-07-24 08:24:02 -07:00
takeover Migrate to field_ref Thrift API 2020-07-21 11:23:35 -07:00
telemetry send fetch heavy events to Scuba 2020-07-02 07:57:15 -07:00
testharness get priority from ObjectFetchContext in BackingStore 2020-07-24 08:24:02 -07:00
third-party move third-party/ into eden/fs/ 2020-05-04 11:33:12 -07:00
utils Migrate to field_ref Thrift API 2020-07-21 11:23:35 -07:00
win win: make .eden/config an in-memory blob 2020-07-24 22:28:27 -07:00
CMakeLists.txt revert: Run Eden as a Windows service 2020-05-28 09:01:03 -07:00