Commit Graph

705 Commits

Author SHA1 Message Date
Sebastian Messmer
bbdfc5c234 Simplify FsppNodeTest 2017-01-22 01:11:26 +00:00
Sebastian Messmer
42765c6be6 Merge from develop 2017-01-21 20:24:09 +00:00
Sebastian Messmer
e37d84a3d6 fspp::Dir, fspp::File and fspp::Symlink don't inherit from fspp::Node anymore. This allows file systems to return a generic fspp::Node instead of a concrete subclass when the operation doesn't need to know what type of node it is. 2017-01-21 19:16:35 +00:00
Sebastian Messmer
8c9cea6413 Fix nullversion recognition in gitversion 2016-12-31 16:22:57 +01:00
Sebastian Messmer
681f415272 Use curl_global_init/curl_global_cleanup for cleaner shutdown of executable 2016-10-26 13:50:20 -07:00
Sebastian Messmer
abae027538 Fix compiler error on FreeBSD 2016-10-20 10:35:29 +02:00
Sebastian Messmer
fb123f8fd0 Removed fixed TODOs 2016-10-14 12:34:42 +02:00
Sebastian Messmer
9d05b8571c Merge from develop 2016-10-13 18:30:27 +02:00
Sebastian Messmer
bd74a5b762 More detailed error reporting if key derivation fails 2016-10-02 11:01:14 +02:00
Sebastian Messmer
ce218f264a Silence a static analysis warning 2016-09-25 20:36:35 +02:00
Sebastian Messmer
58d6a454d7 Merge branch 'develop' into next 2016-09-25 11:41:33 +02:00
Sebastian Messmer
6464bfb4b7 Disable update checks in noninteractive mode 2016-09-25 11:40:01 +02:00
Sebastian Messmer
e009040264 Merge from develop 2016-09-25 02:53:35 +02:00
Sebastian Messmer
443298844e Fix test cases 2016-09-25 02:50:28 +02:00
Sebastian Messmer
b027f8c007 Merge from develop 2016-09-24 20:43:54 +02:00
Sebastian Messmer
1e9fdc9aa7 Refactor noninteractive mode. All yes/no questions are forced to define a default that will be used in noninteractive mode. 2016-09-24 20:28:56 +02:00
Sebastian Messmer
1cf52b307d Fix locking in LockPool 2016-09-24 17:02:23 +02:00
Sebastian Messmer
11a85ed29f Allow building with -DCRYFS_UPDATE_CHECKS=off, which will create an executable with disabled update checks (the alternative to disable them in the environment also still works). 2016-09-24 13:16:26 +02:00
Sebastian Messmer
1c34c88709 Remove warning that CryFS is experimental 2016-09-24 12:33:22 +02:00
Sebastian Messmer
789bfc7527 Fix warning from static analysis tool about std::moving a large CryConfig object 2016-09-24 11:42:57 +02:00
Sebastian Messmer
46a2251e9d Fix potential (although improbable) deadlock 2016-09-24 11:01:22 +02:00
Sebastian Messmer
b4a609459b When an exception escalates to main, exit with an error code 2016-09-24 09:52:19 +02:00
Sebastian Messmer
a1c3079a68 Catch exceptions from main 2016-09-24 09:51:29 +02:00
Sebastian Messmer
e30656797b Add compatibility with Crypto++ 5.6.4 2016-09-24 09:39:37 +02:00
Sebastian Messmer
46183976ee Fix missing virtual destructor and potential integer overflow 2016-09-21 20:07:20 +02:00
Sebastian Meßmer
e414f0a20f Switch to LGPL 2016-09-13 19:23:08 +02:00
Sebastian Messmer
32f06f288a Fix tree traversal and add test case for it 2016-09-07 22:25:18 +02:00
Sebastian Messmer
904e3dd7a1 Merge 2016-09-07 22:07:56 +02:00
Sebastian Messmer
ea349cf79b Fix traversal bug and add test case for it 2016-09-07 19:02:41 +02:00
Sebastian Messmer
0cbb13ffbe Compatibility with older libcurl versions 2016-08-27 13:23:25 +02:00
Sebastian Messmer
b315154f08 Merge from develop 2016-07-23 10:17:42 +02:00
Sebastian Messmer
6360d452fe Make compatible with libcurl >= 7.50 2016-07-23 09:04:50 +02:00
Sebastian Messmer
d2cecb4ecc Disable large_read fuse option, since it's not used in new fuse versions anyhow and makes problems when fuse is run in user mode linux. 2016-07-22 20:44:06 +02:00
Sebastian Messmer
a4ce49aef4 Fix unique_ref test cases 2016-07-22 14:07:06 +02:00
Sebastian Messmer
64d26c2f6e Fix compiler error on older gcc 2016-07-22 12:58:59 +02:00
Sebastian Messmer
f069733650 Fix warning on older gcc versions 2016-07-22 02:57:03 +02:00
Sebastian Messmer
e38c0f1e8b Fix isRightBorderNode when growing trees 2016-07-17 10:32:59 +02:00
Sebastian Messmer
bbdd8a548b Special case treatment for traversals until exactly the last leaf has to load the last leaf to grow it. Before this commit, we just always loaded the last traversed leaf and checked its size. Now we only do so if it's the right border leaf. This saves us loading some leaves. 2016-07-17 10:16:09 +02:00
Sebastian Messmer
b339261924 Merge branch 'next' into lessio 2016-07-16 17:14:07 +02:00
Sebastian Messmer
f6141f515b TODOs 2016-07-16 17:08:53 +02:00
Sebastian Messmer
dc40d61595 Merge branch 'next' into lessio 2016-07-16 16:47:36 +02:00
Sebastian Messmer
e3690e2f6b Add comment 2016-07-16 16:47:27 +02:00
Sebastian Messmer
9c42703c70 Merge branch 'next' into lessio 2016-07-16 16:10:03 +02:00
Sebastian Messmer
143c3b3b4f Use large reads and large write 2016-07-16 16:09:47 +02:00
Sebastian Messmer
eab7cb1df4 Implement BlockStore::overwrite(). This is the last step in ensuring that the write() call doen't have to load leaves if they're only overwritten anyhow. 2016-07-16 11:42:06 +02:00
Sebastian Messmer
eb792daefc More preparations for not loading blocks in write() calls 2016-07-15 21:06:41 +02:00
Sebastian Messmer
d80b95514e Traversal doesn't load leaves, but returns the key. This way, the write() call can (after a future commit) write to full leaves without loading them beforehand. 2016-07-15 20:12:24 +02:00
Sebastian Messmer
582917c1f5 Improve code decreasing tree depth 2016-07-15 16:23:00 +02:00
Sebastian Messmer
b1b90b8c3d Further reduce number of nodes loaded when deleting a tree and write test cases for it 2016-07-15 15:42:34 +02:00
Sebastian Messmer
c428d5642a Minimize number of Block::write() calls when creating new nodes in a traversal. Also add test cases for it. 2016-07-15 12:48:20 +02:00
Sebastian Messmer
d626349802 Finish MockBlockStore to also collect other performance metrics, and implement the standard block store tests for it. 2016-07-15 10:23:09 +02:00
Sebastian Messmer
f42e08a5f6 Fix DataTree::key() when called while traversing 2016-07-14 17:56:47 +02:00
Sebastian Messmer
6ff0839e90 Add locking to blob 2016-07-14 16:36:30 +02:00
Sebastian Messmer
457ca52eb3 Add assertions to unique_ref 2016-07-14 16:29:02 +02:00
Sebastian Messmer
7ea08fc2b0 Add test cases for removing nodes 2016-07-14 16:12:51 +02:00
Sebastian Messmer
91bf6c3647 Keep resource destructor in ParallelAccessStore under mutex 2016-07-14 15:10:52 +02:00
Sebastian Messmer
3f04a7411c If tree depth increases, and we already traversed the old tree, don't go into it again to grow its last leaf. 2016-07-14 14:23:15 +02:00
Sebastian Messmer
cbe122cb5f Add assertions 2016-07-14 13:23:36 +02:00
Sebastian Messmer
0bb6b320d4 Add asserts 2016-07-14 12:58:42 +02:00
Sebastian Messmer
0dbfdf3e2b When shrinking a tree, LeafTraverser takes care of decreasing tree depth, not DataTree anymore. This way, LeafTraverser is now responsible for increasing and decreasing depth as necessary. 2016-07-14 12:55:54 +02:00
Sebastian Messmer
35a4e42ba5 Small fixes in traversal algorithm 2016-07-14 12:38:25 +02:00
Sebastian Messmer
fce81f47ff Simplify code a bit and add assertions 2016-07-14 12:03:15 +02:00
Sebastian Messmer
9e9369b9ed Performance optimization: When removing or shrinking a tree, we don't load/read leaves anymore. Loading inner nodes is enough to get all block IDs and then we can delete the leaves from their IDs without loading them. 2016-07-13 11:27:31 +02:00
Sebastian Messmer
7a68757599 Remove unneeded subtrees when shrinking tree 2016-07-13 07:08:53 +02:00
Sebastian Messmer
cf38eb0eb3 Use tree traversal to remove data tree. 2016-07-13 00:29:36 +02:00
Sebastian Messmer
508766d2f2 Fix traversal and add test cases 2016-07-13 00:22:35 +02:00
Sebastian Messmer
845b0b5239 Use LeafTraversor for resizing blobs 2016-07-12 20:36:12 +02:00
Sebastian Messmer
a19d79361c If a tree is grown by a traversal, the tree is kept in a balanced state as long as possible during the traversal 2016-07-12 09:57:56 +02:00
Sebastian Messmer
1bf20277e4 Removed unnecessary code 2016-07-12 01:10:27 +02:00
Sebastian Messmer
58f2212043 Don't query size on traversal 2016-07-12 01:09:30 +02:00
Sebastian Messmer
582c9c1a4c Fix traversal 2016-07-12 01:04:33 +02:00
Sebastian Messmer
98b85ea8b6 Started rewriting traversal 2016-07-10 22:57:39 +02:00
Sebastian Messmer
2bc3b641aa Allow Data::FillWithZeroes on rvalue 2016-07-10 22:43:07 +02:00
Sebastian Messmer
dde89da556 Improve traverseLeaves 2016-07-10 08:38:02 +02:00
Sebastian Messmer
0d860fa4f0 Speed up block loading/storing by issuing only one read/write syscall to the base file system 2016-07-06 15:35:51 -07:00
Sebastian Messmer
7348f7c64d Add checks to Data::LoadFromFile() and Data::StoreToFile() 2016-07-06 15:28:14 -07:00
Sebastian Messmer
e85019e95b Cache value of DataTree.numLeaves(). This should make read()/write() faster. 2016-07-05 23:56:44 -07:00
Sebastian Messmer
a242076ecc Performance improvement: Allow more parallelity when getting read()/write() syscalls to the same blob 2016-07-05 23:02:59 -07:00
Sebastian Messmer
ff0ba06846 Add mutex to fix race condition 2016-06-29 16:42:43 -07:00
Sebastian Messmer
b7b5dfba2a Fix generation of new file systems 2016-06-27 22:31:06 -07:00
Sebastian Messmer
3425760daf Implement migration for old filesystems that don't have parent pointers. 2016-06-27 20:03:44 -07:00
Sebastian Messmer
bfb397f44e Tell user to not interrupt migration process 2016-06-27 20:01:02 -07:00
Sebastian Messmer
397de9372f Each blob stores a parent pointer (i.e. the ID of the directory that contains this blob). This stores the directory structure in a conflict-proof way and can be used to resolve such conflicts. 2016-06-27 18:22:13 -07:00
Sebastian Messmer
a7f13ad7c1 When creating a file system, the user can choose whether to choose missing blocks as integrity violations. 2016-06-26 23:24:32 -07:00
Sebastian Messmer
2451a8c46f Add --missing-block-is-integrity-violation option. The option doesn't have an effect yet though. 2016-06-26 22:16:44 -07:00
Sebastian Messmer
be8dffb24d MyClientId is generated outside of CryDevice to give the CryConfigCreator access to it. 2016-06-26 22:15:52 -07:00
Sebastian Messmer
7b56706c1a Be explicit about types stored in config file 2016-06-26 22:15:52 -07:00
Sebastian Messmer
b838046246 Add a 'exclusive client' option to the config file 2016-06-26 22:15:52 -07:00
Sebastian Messmer
514dbcb6c7 ClientId is not loaded/generated inside of KnownBlockVersions, but in CryDevice. This way, CryDevice also has access to the ClientID. This is later needed to recognize whether we're in a single-client or in a multi-client setting. 2016-06-26 22:15:52 -07:00
Sebastian Messmer
1c654305a8 In integrity violations, use individual messages saying which check exactly failed. 2016-06-26 22:15:52 -07:00
Sebastian Messmer
f066b45954 VersionCountingBlockStore::forEachBlock() has an integrity check checking that all expected blocks are still existing. 2016-06-26 22:15:52 -07:00
Sebastian Messmer
491b277cee In case of an integrity violation, tell the user how they can reset integrity data. 2016-06-26 22:15:52 -07:00
Sebastian Messmer
839a511c4d When an integrity violation is detected, any further access to the file system is blocked. This ensures that the user notices the integrity violation. 2016-06-26 22:15:52 -07:00
Sebastian Messmer
c84a230afd VersionCountingBlockStore is initialized with a flag, saying whether missing blocks are integrity errors. This flag is meant to be activated in a single-client scenario to have this additional integrity check. 2016-06-26 22:15:52 -07:00
Sebastian Messmer
e02021ecdc Throw an IntegrityViolationError exception instead of just logging integrity violations. This makes sure the user notices. 2016-06-26 22:15:52 -07:00
Sebastian Messmer
d306f4872e Fix merge error 2016-06-26 22:15:52 -07:00
Sebastian Messmer
fd5dd2c6e1 New way of handling block deletions: Set last-update-client-id to zero instead of increasing version number. This has the same effect (i.e. invalidates all known block versions) and it additionally allows for checking in a local list whether a block is deleted or not. 2016-06-26 22:15:52 -07:00
Sebastian Messmer
ee1f0f4d3a Warn in migration that it might take a while 2016-06-26 22:15:52 -07:00
Sebastian Messmer
86c2144a37 Implement migration from file systems without version numbers 2016-06-26 22:15:52 -07:00
Sebastian Messmer
f9a10eea4d Fix VersionCountingBlock::resize() 2016-06-26 22:15:52 -07:00