Sebastian Messmer
|
e3690e2f6b
|
Add comment
|
2016-07-16 16:47:27 +02:00 |
|
Sebastian Messmer
|
143c3b3b4f
|
Use large reads and large write
|
2016-07-16 16:09:47 +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 |
|