Commit Graph

193 Commits

Author SHA1 Message Date
Ming-Hung Tsai
12d7178199 [base] Introduce io_generator 2020-06-19 18:07:55 +08:00
Joe Thornber
dc5bb3559b [build] remove need for zlib.
Disappeared with the C++ version of thin_metadata_pack
2020-06-12 19:09:19 +01:00
Joe Thornber
324c0050bf [install-rust-tools] add dep to generate man pages 2020-06-10 10:32:36 +01:00
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
Joe Thornber
29cfdd8979 [space-maps/core] rewrite the core space map to use less memory. 2020-05-27 12:00:40 +01:00
Joe Thornber
0e1700fbe9 [thin_metadata_pack] First pass at pack/unpack 2020-05-22 14:11:48 +01:00
Joe Thornber
0882022120 [build] remove [DEP] compilation messages.
It just means each file appears twice.
2020-04-30 15:50:58 +01:00
Joe Thornber
e801cc607b [block_manager] Hard code block size to 4k.
We're never going to use anything other than 4k, and by hard coding it we
avoid making block_manager a template.
2020-04-30 14:30:01 +01:00
Ming-Hung Tsai
d6a8c03aa2 [btree_damage_visitor] factor out non-template functions 2020-02-17 11:42:24 +00:00
Joe Thornber
5f2c3bed69 Add some ftests, and fixup whitespace from Nikhil's work 2019-10-28 11:52:21 +00:00
Nikhil Kshirsagar
91b4714e38 Corrupt superblock repair 2019-10-25 15:02:56 +05:30
Joe Thornber
70cdfe12a2 [thin_journal_check] first code drop 2018-08-28 13:12:20 +01:00
Joe Thornber
af785461e9 [build] [CXX] -> [CC] for C files 2018-06-13 12:49:57 +01:00
Joe Thornber
80e046a7df [build] support separate build directories 2018-06-13 09:34:14 +01:00
Dennis Schridde
bc7864dae8 [build] Fix static build by including contrib/Makefile early (#100)
Closes: #99
2018-06-13 08:41:53 +01:00
Joe Thornber
5d3197b8ab [build] quieten build of C files 2018-04-25 14:05:28 +01:00
Adam Sampson
8d75be8112 [functional-tests] fix build with testing disabled (#88)
The rule for lib/libft.so is only enabled with --enable-testing,
so the default target shouldn't depend unconditionally on it.
With the default configure options, the build failed with:
make: *** No rule to make target 'lib/libft.so', needed by 'all'.  Stop.
2017-10-16 13:07:36 +01:00
Joe Thornber
b9230d1bbb [functional-tests] roll all the C code into a single libft.so 2017-10-10 10:28:56 +01:00
Joe Thornber
5814fea96a [man pages] fix some formatting issues with the new man pages. 2017-09-20 13:53:59 +01:00
Joe Thornber
dd8848f088 [manpages] Rewrite man pages in a simpler text format.
Makefile still needs work, but I wanted to commit to save progress.
2017-09-20 11:15:00 +01:00
Joe Thornber
f7d79339e8 [man pages] Various updates. 2017-09-18 16:10:56 +01:00
csonto
fd02dfa5bf Makefile: Conditional install of thin_trim (#81)
* Makefile: Conditional install of thin_trim

...and thin_show_duplicates symlinks.

The support for these is built only if --enable-dev-tools is used in
configure, thus we should install the symlinks conditionally.

* Conditional install of thin_trim man page
2017-07-24 09:55:45 +01:00
Ming-Hung Tsai
b7d418131d Spin-off syscall-related file operations (#78)
* [file_utils] spin-off syscall-related file operations

1. Eliminate the potential circular dependency between
   persistent-data/block.h and persistent-data/file_utils.h,
   if the former one wants to include the latter.
2. Avoid namespace pollution by removing the "using namespace std"
   declaration in block.tcc.
3. Correct the header hierarchy: base/xml_utils.h now no longer
   depends on the higher-level persistent-data/file_utils.h

* [file_utils] support block files in get_file_length()
2017-04-29 18:51:52 +01:00
Joe Thornber
0a8d7fdb89 [build] tweak includes for test targets 2017-03-13 14:02:11 +00:00
Joe Thornber
c2fdbad322 Merge branch '2016-07-07-improve-thin-repair-error-message' into v0.7-devel
Conflicts:
	Makefile.in
	VERSION
	configure.ac
	persistent-data/file_utils.cc
2016-07-11 15:51:30 +01:00
Joe Thornber
4779fb9b80 [various] Improve documentation
Output file must be preallocated.
2016-07-11 14:53:03 +01:00
Joe Thornber
a3eac8d5d8 Merge branch 'v0.7-devel' of github.com:jthornber/thin-provisioning-tools into v0.7-devel 2016-06-14 16:33:00 +01:00
Joe Thornber
642740e1b6 Merge branch '2016-03-08-cache-writeback' into v0.7-devel 2016-06-14 16:30:16 +01:00
Joe Thornber
a94bfea798 [block-cache] unit tests + debug io_engine and copier 2016-06-07 11:12:27 +01:00
Thanos Makatos
8147d798be don't use implicit rule when statically compiling emitters 2016-05-09 13:25:26 +03:00
Mike Frysinger
3e24cff8a1 respect & use CPPFLAGS properly
The common preprocessor variable is named CPPFLAGS.  configure sets this
up for us, including sourcing values from the user.  Rename INCLUDES to
match, and pull the default from configure.
2016-05-09 02:41:54 -04:00
Mike Frysinger
96e0e92afd get default CFLAGS/CXXFLAGS from configure
Since autoconf already sets up default compiler flags for us, use those.
These also come from the user's build settings.
2016-05-09 02:41:54 -04:00
Mike Frysinger
b46676575c fix up test targets
- PHONY is misspelled
- fix the pdata_tools target dep
- add a "check" alias to match standard automake behavior
- mark test & check targets as phony
2016-05-08 23:35:19 -04:00
Joe Thornber
c8fec7ec40 [cache_writeback] Coded, needs testing 2016-04-14 08:54:32 +01:00
Thanos Makatos
431f2ab50a allow tmakatos (a binary) emitter to be statically compiled
It is trivial to implement static compilation of the rest of the 3rd party
emitters.
2016-04-06 15:56:09 +03:00
Thanos Makatos
3464f005ff add configure option to enable static linking
(cherry picked from commit c6a2620f5d)

Conflicts:
	configure.ac
2016-04-06 15:56:08 +03:00
Ming-Hung Tsai
4a4dc1a5e0 [btree_node_checker] first draft
Spin-off from btree_damage_visitor
2016-04-03 00:43:43 +08:00
Joe Thornber
5b3cae824b Merge branch 'v0.7-devel' of github.com:jthornber/thin-provisioning-tools into v0.7-devel 2016-03-31 16:14:48 +01:00
Joe Thornber
a5ed4258c0 [build] contrib target no longer depends on --enable-testing 2016-03-31 16:14:11 +01:00
Thanos Makatos
b8dbde1e64 use -ldl when linking
dlopen etc. require -ldl to link
2016-03-31 13:02:36 +03:00
Joe Thornber
c7813e07e4 [thin_dump] --format custom=<shared lib>
Allow people to use their own emitters held in a shared library.

Put a trivial emitter in contrib/ as an example.
2016-03-24 13:59:08 +00:00
Thanos Makatos
c6a2620f5d add configure option to enable static linking 2016-03-09 13:27:35 +03:00
Joe Thornber
b8659853bb [cache_writeback] stub cache_writeback 2016-03-08 15:27:22 +00:00
Joe Thornber
4c0d5c96a0 [build] add symlinks for the new dev tools 2016-02-29 13:51:30 +00:00
Joe Thornber
286f70ceac Merge remote-tracking branch 'remotes/github-m-h-tsai/v0.6.2-repairtool' into 2016-02-29-mingus-merge
Conflicts:
	Makefile.in
	VERSION
	thin-provisioning/commands.cc
	thin-provisioning/commands.h
	thin-provisioning/thin_delta.cc
2016-02-29 10:29:28 +00:00
Ming-Hung Tsai
08a7093cd5 [thin_ll_dump][thin_ll_restore] first draft 2016-02-27 15:24:28 +08:00
Ming-Hung Tsai
b05b9aa227 [thin_scan] first draft 2016-02-27 15:24:14 +08:00
Ming-Hung Tsai
80783e7729 Add metadata_counter.{h,cc} 2016-02-27 15:23:06 +08:00
Joe Thornber
e78de5d3ad [thin_show_metadata] ncurses render 2016-02-26 12:50:17 +00:00
Joe Thornber
c4215c0cf6 [thin_show_metadata] thin_show_blocks.cc -> thin_show_metadata.cc 2016-02-24 15:32:05 +00:00