Previously when s3fs had dirty local data and an application opened a
second fd it would remove the stat cache entry, query S3 for the size
which was still zero, then reinitialize FdEntry with this incorrect
size. Instead flush local data to S3 so this query works. It is
possible that a more involved patch could do this with a less
heavyweight approach but this requires changing open. This does not
completely fix git clone but allows it to proceed further. Also make
some cache methods const-correct. References #839.
Check the modification times to determine whether an object has
updated. This relies on low clock skew between s3fs and the S3
server; a more robust approach could use the ETag. Fixes#1047.
• Simplified the stat generation line (single exec using only stat)
• Quote variables so that the cache directory can also include spaces
• while/read loop to handle spaces in cached files
(IFS was causing problems when all the files were saved into a single variable)
Previously s3fs had a race condition where one client could delete
FdEntity that another client was using. Add a simple concurrent test
which previously failed but now succeeds. Fixes#964.
Previously s3fs experienced data loss when writing to the middle of a
file. Corrupt files would have the expected data from 0..offset+size
but unexpected NUL bytes from offset+size..EOF. References #808.
Details in README.md and s3fs-integration-test-common.sh
Factor out s3fs-fuse and s3proxy start/stop. The plan is to make it easier to
add test suites besides small-integration-test.sh that can test with various
s3fs options.
Each test run starts in a uniquely named at the top of the bucket. This allows
multiple runs against persistent storage without worrying about cleaning
up in error conditions that leave artifiacts behind.
Tests continues if a test case fails.
Results are summarized at the end of the test run
Environment variable to control debug level of s3fs-fuse
Environment variable to enable public bucket (makes it easier to poke
around with tools like curl)
Environment variable to start s3fs-fuse under valgrind
Environment variable that casues script sets up s3fs-fuse and then wait
indefinitely, making it easy to experiment manually with the mount
point.
Additional test case