sapling/eden/integration
Adam Simpkins 086fc9ac30 send FUSE invalidation requests in a separate thread
Summary:
Update FuseChannel to send all invalidation requests in a separate thread.

This eliminates a deadlock that could previously occur during checkout
operations.  The invalidation requests would block until they could acquire the
kernel's inode lock on the inode in question.  However, the inode lock may
already be held by another thread attempting to perform an unlink() or rename()
call.  These FUSE unlink or rename operations would be blocked waiting on
Eden's mount point rename lock, which was acquired by the checkout operation.

Checkout operations now let the invalidations complete asynchronously, but we
wait for all invalidation operations to complete before indicating to our
caller that the checkout has succeeded.

Reviewed By: chadaustin, wez

Differential Revision: D7404971

fbshipit-source-id: 6fa20c00d054e210eb0258d247d083010557f210
2018-03-27 11:23:42 -07:00
..
hg send FUSE invalidation requests in a separate thread 2018-03-27 11:23:42 -07:00
lib move the tree generation utility function to a helper module 2018-03-26 19:20:33 -07:00
basic_test.py don't throw in the version check if eden is not installed 2018-01-30 21:50:39 -08:00
clone_test.py don't swallow sudo's stdout and stderr in eden daemon 2018-03-14 12:46:19 -07:00
debug_getpath_test.py decouple whether an entry has an inode number from materialization status 2018-03-23 18:21:21 -07:00
fsattr.cpp add fsattr utility for testing purposes 2018-01-30 21:50:39 -08:00
health_test.py move integration tests to eden/integration 2017-01-31 14:41:14 -08:00
help_test.py add test verifying eden help succeeds 2017-11-07 16:06:32 -08:00
hypothesis_simple_test.py add .eden "magic" dir 2017-03-24 23:07:42 -07:00
info_test.py Fix a test I broke (eden/integration/info_test.py) 2017-12-01 17:21:35 -08:00
materialized_query_test.py do a better job at reporting "new" in watchman results. 2017-08-11 12:57:37 -07:00
mmap_test.py fix bug for mmap larger than the file but within a page reading zero bytes 2017-11-28 20:06:04 -08:00
oexcl_test.py move integration tests to eden/integration 2017-01-31 14:41:14 -08:00
patch_test.py use ENOTTY to report unsupported ioctl, fix listxattr 2018-01-09 12:33:20 -08:00
persistence_test.py add a test for persisting timestamps across runs 2018-03-07 20:00:35 -08:00
rc_test.py fix integration tests after eden list output changes 2018-01-05 13:53:23 -08:00
remount_test.py allow integration tests to select a storage engine 2018-02-08 20:06:55 -08:00
rename_test.py add .eden "magic" dir 2017-03-24 23:07:42 -07:00
repo_test.py move integration tests to eden/integration 2017-01-31 14:41:14 -08:00
sed_test.py move integration tests to eden/integration 2017-01-31 14:41:14 -08:00
setattr_test.py adjust setattr expectations when run as root 2018-01-30 21:50:39 -08:00
takeover_test.py add a new integration test to trigger the "inodes still loaded" crash 2018-03-20 16:47:12 -07:00
thrift_test.py update getScmStatusBetweenRevisions() to avoid creating inode objects 2018-03-20 16:47:12 -07:00
unixsocket_test.py add basic mknod support 2017-03-30 23:53:05 -07:00
unlink_test.py move integration tests to eden/integration 2017-01-31 14:41:14 -08:00
xattr_test.py move integration tests to eden/integration 2017-01-31 14:41:14 -08:00