| Age | Commit message (Collapse) | Author | 
 | 
...against concurrent closes.
The testcase
	(set -e; while true; do truncate -s $RANDOM b; done) &
	(set -e; while true; do truncate -s $RANDOM b; done) &
uncovered lots of unnecessary RMW failures that were the result
of concurrent closes.
With this patch, the only remaining error is "Truncate on forgotten file"
that is probably caused by a problem in the go-fuse lib
( https://github.com/hanwen/go-fuse/issues/95 )
 | 
 | 
The directory may have been concurrently deleted or moved. Failure to
read the diriv is not an error in that case.
Downgrading the message to debug.
 | 
 | 
 | 
 | 
This makes sure writing to a file fails early if the underlying
filesystem does not support fallocate. It also prevents partial header
write due to ENOSPC.
 | 
 | 
 | 
 | 
Another 3x performance boost for applications that walk the
directory tree.
Excerpt from performance.txt:
VERSION         UNTAR    LS     RM
v0.4               48     1.5    5
v0.5-rc1           56     7     19
v0.5-rc1-1         54     4.1    9
v0.5-rc1-2         45     1.7	 3.4  <---- THIS VERSION
 | 
 | 
Formerly, we called decryptPath for every name.
That resulted in a directory walk that reads in all diriv files
on the way.
Massive improvement for RM and LS (check performance.txt for details)
VERSION         UNTAR   RM   LS
v0.4               48    5    1.5
v0.5-rc1           56   19    7
v0.5-rc1-1         54    9    4.1   <---- THIS VERSION
 | 
 | 
It decrypted all file names using the root directory iv
 | 
 | 
 | 
 | 
 | 
 | 
(unused so far)
 | 
 | 
 | 
 | 
 |