sapling/eden/integration
Xavier Deguillard 4308f92515 prjfs: move notification handling to the background
Summary:
Now that notifications are running in a serial executor, and are also issuing
disk IO, notifications are significantly slower than they used to be. While
writing to the working copy is an overall anti-pattern, some workflows (like
Unity) do and it's thus critical that their performance isn't affected
negatively.

In order to solve this, we can simply move the handling of notifications to the
background and answer the notification immediately, since notifications can no
longer fail, we shouldn't need to send an error back to ProjectedFS which would
anyway be ignored.

The drawback is of course that applications are no longer blocked while the
notification is being processed in EdenFS, and thus any operation that needs to
get a synced up inode hierarchy will need to wait on all the pending
notifications.

Reviewed By: chadaustin, genevievehelsel

Differential Revision: D32480993

fbshipit-source-id: 7ad6b07f540f7d9a52a35a0ff3b94911ef5267af
2022-01-18 17:23:14 -08:00
..
fsck fs: fix license header 2022-01-04 15:00:07 -08:00
helpers fs: fix license header 2022-01-04 15:00:07 -08:00
hg fs: fix license header 2022-01-04 15:00:07 -08:00
lib fs: fix license header 2022-01-04 15:00:07 -08:00
snapshot fs: fix license header 2022-01-04 15:00:07 -08:00
basic_test.py fs: fix license header 2022-01-04 15:00:07 -08:00
casing_test.py fs: fix license header 2022-01-04 15:00:07 -08:00
chown_test.py fs: fix license header 2022-01-04 15:00:07 -08:00
clone_test.py fs: fix license header 2022-01-04 15:00:07 -08:00
CMakeLists.txt fs: fix license header 2022-01-04 15:00:07 -08:00
config_test.py fs: fix license header 2022-01-04 15:00:07 -08:00
corrupt_overlay_test.py fs: fix license header 2022-01-04 15:00:07 -08:00
debug_getpath_test.py fs: fix license header 2022-01-04 15:00:07 -08:00
debug_test.py fs: fix license header 2022-01-04 15:00:07 -08:00
doteden_test.py fs: fix license header 2022-01-04 15:00:07 -08:00
edenclient_test.py fs: fix license header 2022-01-04 15:00:07 -08:00
fsck_test.py fs: fix license header 2022-01-04 15:00:07 -08:00
glob_test.py fs: fix license header 2022-01-04 15:00:07 -08:00
health_test.py fs: fix license header 2022-01-04 15:00:07 -08:00
help_test.py fs: fix license header 2022-01-04 15:00:07 -08:00
info_test.py fs: fix license header 2022-01-04 15:00:07 -08:00
linux_cgroup_test.py fs: fix license header 2022-01-04 15:00:07 -08:00
materialized_query_test.py fs: fix license header 2022-01-04 15:00:07 -08:00
mmap_test.py fs: fix license header 2022-01-04 15:00:07 -08:00
mount_test.py fs: fix license header 2022-01-04 15:00:07 -08:00
oexcl_test.py fs: fix license header 2022-01-04 15:00:07 -08:00
patch_test.py fs: fix license header 2022-01-04 15:00:07 -08:00
persistence_test.py fs: fix license header 2022-01-04 15:00:07 -08:00
rage_test.py fs: fix license header 2022-01-04 15:00:07 -08:00
rc_test.py fs: fix license header 2022-01-04 15:00:07 -08:00
redirect_test.py fs: fix license header 2022-01-04 15:00:07 -08:00
remount_test.py fs: fix license header 2022-01-04 15:00:07 -08:00
rename_test.py fs: fix license header 2022-01-04 15:00:07 -08:00
restart_test.py fs: fix license header 2022-01-04 15:00:07 -08:00
rocksdb_store_test.py fs: fix license header 2022-01-04 15:00:07 -08:00
sed_test.py fs: fix license header 2022-01-04 15:00:07 -08:00
service_log_test.py fs: fix license header 2022-01-04 15:00:07 -08:00
setattr_test.py fs: fix license header 2022-01-04 15:00:07 -08:00
stale_inode_test.py fs: fix license header 2022-01-04 15:00:07 -08:00
stale_test.py fs: fix license header 2022-01-04 15:00:07 -08:00
start_test.py fs: fix license header 2022-01-04 15:00:07 -08:00
stats_test.py prjfs: move notification handling to the background 2022-01-18 17:23:14 -08:00
stop_test.py fs: fix license header 2022-01-04 15:00:07 -08:00
systemd_test.py fs: fix license header 2022-01-04 15:00:07 -08:00
takeover_test.py fs: fix license header 2022-01-04 15:00:07 -08:00
thrift_test.py fs: fix license header 2022-01-04 15:00:07 -08:00
unicode_test.py fs: fix license header 2022-01-04 15:00:07 -08:00
unixsocket_test.py fs: fix license header 2022-01-04 15:00:07 -08:00
unlink_test.py fs: fix license header 2022-01-04 15:00:07 -08:00
userinfo_test.py fs: fix license header 2022-01-04 15:00:07 -08:00
windows_fsck_test.py fs: fix license header 2022-01-04 15:00:07 -08:00
xattr_test.py fs: fix license header 2022-01-04 15:00:07 -08:00