thin-provisioning-tools/thin-provisioning
Joe Thornber 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
..
cache_stream.cc [block-cache] fix potential file descriptor leak 2020-02-23 15:41:16 +08:00
cache_stream.h Merge branch 'master' of github.com:jthornber/thin-provisioning-tools 2020-04-08 12:30:26 +01:00
chunk_stream.cc [thin_show_dups] remove variable number of mems per chunks. 2015-09-04 13:48:02 +01:00
chunk_stream.h [thin_show_dups] tidy up reporting 2015-09-04 15:16:49 +01:00
commands.cc [thin_metadata_pack/unpack] Replace C++ implementation with a Rust one. 2020-06-09 09:15:00 +01:00
commands.h [thin_metadata_pack/unpack] Replace C++ implementation with a Rust one. 2020-06-09 09:15:00 +01:00
create_xml_data create_xml_data: fix mapping variation check 2013-07-10 17:15:18 +02:00
device_tree.cc [thin] Add default constructor to struct device_details 2016-03-05 14:12:13 +08:00
device_tree.h [all] Switch from boost::shared_ptr -> std::shared_ptr. 2020-04-30 15:02:43 +01:00
emitter.h [all] Switch from boost::shared_ptr -> std::shared_ptr. 2020-04-30 15:02:43 +01:00
fixed_chunk_stream.cc [thin_show_dups] Support fractions of a pool block size 2015-09-08 17:09:41 +01:00
fixed_chunk_stream.h [thin_show_dups] Support fractions of a pool block size 2015-09-08 17:09:41 +01:00
human_readable_format.cc [thin_dump] human_readable emitter didn't print the metadata_snap. 2018-04-17 10:29:31 +01:00
human_readable_format.h Move source into separate sub directories. 2013-01-02 12:55:41 +00:00
main.cc Move source into separate sub directories. 2013-01-02 12:55:41 +00:00
mapping_tree.cc [thinp_*] Make mtree_ref_counter derive from ref_counter. 2020-04-08 12:24:37 +01:00
mapping_tree.h [all] Switch from boost::shared_ptr -> std::shared_ptr. 2020-04-30 15:02:43 +01:00
metadata_checker.cc [block_manager] Hard code block size to 4k. 2020-04-30 14:30:01 +01:00
metadata_checker.h [all] Switch from boost::shared_ptr -> std::shared_ptr. 2020-04-30 15:02:43 +01:00
metadata_counter.cc [space map disk] tidy up: add const qualifier 2016-06-20 00:40:10 +08:00
metadata_counter.h [space map disk] tidy up: add const qualifier 2016-06-20 00:40:10 +08:00
metadata_dumper.cc [block_manager] Hard code block size to 4k. 2020-04-30 14:30:01 +01:00
metadata_dumper.h [block_manager] Hard code block size to 4k. 2020-04-30 14:30:01 +01:00
metadata.cc [block_manager] Hard code block size to 4k. 2020-04-30 14:30:01 +01:00
metadata.h [all] Switch from boost::shared_ptr -> std::shared_ptr. 2020-04-30 15:02:43 +01:00
override_emitter.cc Add some ftests, and fixup whitespace from Nikhil's work 2019-10-28 11:52:21 +00:00
override_emitter.h Add some ftests, and fixup whitespace from Nikhil's work 2019-10-28 11:52:21 +00:00
pool_stream.cc [thin_show_dups] tidy up reporting 2015-09-04 15:16:49 +01:00
pool_stream.h [thin_show_dups] tidy up reporting 2015-09-04 15:16:49 +01:00
restore_emitter.cc Add some ftests, and fixup whitespace from Nikhil's work 2019-10-28 11:52:21 +00:00
restore_emitter.h Corrupt superblock repair 2019-10-25 15:02:56 +05:30
rmap_visitor.cc Give up with --std=c++11 2013-08-08 10:49:59 +01:00
rmap_visitor.h rename range<> -> run<> 2013-05-28 12:20:05 +01:00
shared_library_emitter.cc [thin_dump] --format custom=<shared lib> 2016-03-24 13:59:08 +00:00
shared_library_emitter.h [thin_dump] --format custom=<shared lib> 2016-03-24 13:59:08 +00:00
static_library_emitter.cc remove debug print 2017-02-06 13:11:10 +03:00
superblock.cc [block_manager] Hard code block size to 4k. 2020-04-30 14:30:01 +01:00
superblock.h [block_manager] Hard code block size to 4k. 2020-04-30 14:30:01 +01:00
thin_check.cc [block_manager] Hard code block size to 4k. 2020-04-30 14:30:01 +01:00
thin_debug.cc [all] Switch from boost::shared_ptr -> std::shared_ptr. 2020-04-30 15:02:43 +01:00
thin_delta.cc [block_manager] Hard code block size to 4k. 2020-04-30 14:30:01 +01:00
thin_dump.cc [block_manager] Hard code block size to 4k. 2020-04-30 14:30:01 +01:00
thin_generate_metadata.cc [thin_generate_metadata] Implement format_metadata and create_thin 2020-05-28 17:30:15 +08:00
thin_journal_check.cc [dev-tools] Update dev tools to use non-template version of block_manager. 2020-05-01 14:11:33 +01:00
thin_journal.cc [dev-tools] Update dev tools to use non-template version of block_manager. 2020-05-01 14:11:33 +01:00
thin_journal.h [dev-tools] Update dev tools to use non-template version of block_manager. 2020-05-01 14:11:33 +01:00
thin_ll_dump.cc [dev-tools] Update dev tools to use non-template version of block_manager. 2020-05-01 14:11:33 +01:00
thin_ll_restore.cc [dev-tools] Update dev tools to use non-template version of block_manager. 2020-05-01 14:11:33 +01:00
thin_ls.cc [block_manager] Hard code block size to 4k. 2020-04-30 14:30:01 +01:00
thin_metadata_size.cc [thin-metadata-size] -V was exiting with 1 2017-09-19 11:29:35 +01:00
thin_metadata_size.rb thin_metadata_size: Fix long names of units 2014-05-17 03:51:06 -04:00
thin_pool.cc [thin] fix duplicated counting of mapped blocks in restore emitter 2016-08-10 23:40:48 +08:00
thin_pool.h [all] Switch from boost::shared_ptr -> std::shared_ptr. 2020-04-30 15:02:43 +01:00
thin_repair.cc [block_manager] Hard code block size to 4k. 2020-04-30 14:30:01 +01:00
thin_restore.cc [block_manager] Hard code block size to 4k. 2020-04-30 14:30:01 +01:00
thin_rmap.cc [block_manager] Hard code block size to 4k. 2020-04-30 14:30:01 +01:00
thin_scan.cc [dev-tools] Update dev tools to use non-template version of block_manager. 2020-05-01 14:11:33 +01:00
thin_show_duplicates.cc [dev-tools] Update dev tools to use non-template version of block_manager. 2020-05-01 14:11:33 +01:00
thin_show_metadata.cc [dev-tools] Update dev tools to use non-template version of block_manager. 2020-05-01 14:11:33 +01:00
thin_trim.cc [block_manager] Hard code block size to 4k. 2020-04-30 14:30:01 +01:00
variable_chunk_stream.cc [thin_show_dups] tidy up reporting 2015-09-04 15:16:49 +01:00
variable_chunk_stream.h [thin_show_dups] tidy up reporting 2015-09-04 15:16:49 +01:00
xml_format.cc [emitter] Preserve the flags and version entries in superblock 2016-02-27 15:20:02 +08:00
xml_format.h [*_restore] Add progress bar to cache_restore and era_restore. 2014-08-26 13:05:21 +01:00