Commit Graph

189 Commits

Author SHA1 Message Date
de172147d3 [thin_check (rust)] squash a lot of warnings 2020-07-30 10:12:51 +01:00
f7623e6264 [thin_check (rust)] remove spurious mutex. 2020-07-30 09:59:02 +01:00
8146fba9d2 [thin_check (rust)] Move mutex inside IoEngines.
Makes it easier to share an engine between different threads.
2020-07-30 08:47:16 +01:00
4f120911d2 [thin_check (rust)] First attempt at multithreading the tree walking.
Still using a single io engine, so little benefit.
2020-07-29 16:38:52 +01:00
d5597d5d36 [thin_check (rust)] Factor out tree walking code 2020-07-29 11:12:03 +01:00
e9abdd9c88 [thin_check (rust)] Switch to a different io_uring crate.
This one works.
2020-07-28 12:57:30 +01:00
a90294e279 [thin_check (rust)] read many blocks at once.
We need to switch to io_uring to really get the benefit of this.
2020-07-28 11:45:25 +01:00
062a1b8a2c [thin_check (rust)] Walk mapping tree.
Sync IO, no checks beyond checksumming.
2020-07-28 10:51:48 +01:00
1398cf31d1 [thin_check (Rust)] work in progress 2020-07-27 15:53:42 +01:00
3cf6307762 Merge branch 'master' into 2020-06-13-thin-check-rewrite 2020-07-27 15:53:26 +01:00
e9055f5d7d Merge branch 'master' of github.com:jthornber/thin-provisioning-tools 2020-07-22 16:09:33 +01:00
b7e02d0ae4 [thin_metadata_pack] FIx bug where pack would try and read too much. 2020-07-09 13:53:46 +01:00
19138dbd81 [thin_shrink] add unit tests for build_remaps 2020-07-06 11:44:49 +01:00
470d0b7532 [thin_shrink] more test cases 2020-07-01 07:52:53 +01:00
4d7f9c7ddc [thin_shrink] add some more test cases 2020-06-30 08:32:04 +01:00
3618da3a12 [thin_shrink] Get test framework built
This verifies data has been moved to the correct place.
2020-06-29 10:49:40 +01:00
d03dac8f75 [thin_shrink] write test harness 2020-06-26 16:44:47 +01:00
07da5704d5 [thin_shrink] add --no-copy 2020-06-26 08:57:26 +01:00
abf06236b1 [thin_shrink] Tidy up some messages 2020-06-26 08:47:40 +01:00
d8a0805753 [thin_shrink] fix some clippy warnings 2020-06-26 08:31:02 +01:00
7df56a5a04 [thin_shrink] Squash some warnings 2020-06-26 08:00:53 +01:00
27c6e36f5c [thin_shrink] Very simple copier implementation 2020-06-25 16:50:11 +01:00
fcf44d46b7 [thin_shrink] remove some debug printlns 2020-06-25 16:12:35 +01:00
31abc468be [thin_shrink] Stub the copier 2020-06-25 15:28:45 +01:00
d8957e3d86 [thin_shrink] Rewrites xml
Just need to do copying now
2020-06-25 14:57:37 +01:00
259eef9eee [thin_shrink] calculate remaps 2020-06-25 10:44:57 +01:00
3f1b776359 [thin_shrink] Add NoopVisitor 2020-06-24 13:55:08 +01:00
861b2f21ff [thin_shrink] Write thinp xml format reader and writer.
Still need to tidy up the error handling.
2020-06-24 13:32:47 +01:00
5e19029e65 Merge branch '2020-06-19-use-anyhow' into 2020-06-13-thin-check-rewrite 2020-06-22 10:16:27 +01:00
fdf641aff3 [thin_metadata_{pack,unpak}] use anyhow in toplevel. 2020-06-21 11:50:24 +01:00
7d625eb6ff [src/file_utils.rs] Don't print to stderr in file_exists. 2020-06-15 12:48:19 +01:00
29d56f62a5 wip 2020-06-14 08:17:46 +01:00
7a85e47a20 [rust] squash clippy (linter) warnings 2020-06-10 16:46:38 +01:00
f90010e22a [pack/unpack] fix bug in file_utils::file_size() 2020-06-10 15:07:40 +01:00
380632565d [thin_metadata_{pack/unpack}] Fix get_nr_blocks()
It didn't work with block devices.
2020-06-10 14:38:42 +01:00
821628b004 [pack/unpack] add missing file. 2020-06-09 14:59:13 +01:00
409a660082 [pack/unpack] Get the functional tests working again.
There's some hard coded version numbers in the tests, but I'm
leaving for now since I'll rewrite in Rust to avoid too much
of a proliferation of languages.
2020-06-09 13:03:39 +01:00
db5a71a53c [rust tools] Get the tools version from autoconf 2020-06-09 10:23:52 +01:00
61de3f9287 [thin_metadata_pack/unpack] Replace C++ implementation with a Rust one.
The Rust implementation is multithreaded, performs better in general and
does custom compression of btree nodes to achieve much better compression
ratios.  unpack also checksums expanded metadata to validate it.

Format version has jumped to 3, no backwards compatibility, but I think
that's ok since we never made a release that contained the C++ version
of these tools.

Benchmarks
==========

On an 8 core, 16 hyperthread machine.

metadata 1G, full:

      Pack size    pack time     unpack time
------------------------------------------------------
C++      193M        50.3s          6.9s (no verify)
Rust      70M         1.4s          1.8s (verify)

metadata 16G, sparse:

       Pack size    pack time     unpack time
------------------------------------------------------
C++      21M          68s           1s   (no verify)
Rust      4M           8.6s         0.5s (verify)
2020-06-09 09:15:00 +01:00