Commit Graph

1614 Commits

Author SHA1 Message Date
Joe Thornber
50f8e792d3 [space-map] Make the version of inc/dec that take a count the only one. 2020-05-26 09:12:45 +01:00
Joe Thornber
cc806a0daa [space-maps/disk] add implementation for the variant of inc/dec that take a count 2020-05-26 08:57:13 +01:00
Joe Thornber
12b6157c5b [space-maps/recursive] lift a lock, and add a lock 2020-05-26 08:45:35 +01:00
Joe Thornber
0e54de95e1 [space-maps/recursive] Remove some code duplication. 2020-05-26 08:38:05 +01:00
Joe Thornber
65fcda062f [space-maps/recursive] Aggregate the BOPs 2020-05-26 08:30:52 +01:00
Joe Thornber
2ed089a83f [space-map] Add new virtual methods to inc or dec by a specific amount.
Provide default implementation that just loops
2020-05-26 08:29:52 +01:00
Joe Thornber
5e6eec1bb0 [recursive space map] switch to new form 'for' statements 2020-05-26 07:49:26 +01:00
Ming-Hung Tsai
c0106fc0b3 [thin_metadata_pack] Improve block scanning performance 2020-05-23 20:32:09 +08:00
Joe Thornber
0e1700fbe9 [thin_metadata_pack] First pass at pack/unpack 2020-05-22 14:11:48 +01:00
Joe Thornber
b7d20bce48 [dev-tools] Update dev tools to use non-template version of block_manager. 2020-05-01 14:11:33 +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
4313469475 [all] Switch from boost::shared_ptr -> std::shared_ptr.
Shared_ptr has moved into the standard library since these tools were
first written.
2020-04-30 15:02:43 +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
Joe Thornber
3e5de399a7 [functional tests] Remove dependency on the ThunderChez library.
I've just moved the relevant code into the functional-tests dir.
2020-04-30 12:07:42 +01:00
Joe Thornber
ad79b627a4 Merge branch 'master' of github.com:jthornber/thin-provisioning-tools 2020-04-08 12:30:26 +01:00
Joe Thornber
0098803345 [thinp_*] Make mtree_ref_counter derive from ref_counter.
Slight performance hit, but I'd rather everything was derived
from ref_counter.

Also implement it!  Not sure why this wasn't done before.
2020-04-08 12:24:37 +01:00
Joe Thornber
ed22bfcdda [space-map-disk] Add virtual destructor to index_store.
Bug. Cleaning up index stores would not be correct.
2020-04-08 12:23:28 +01:00
Joe Thornber
1481ed0f8a [ref_counter] Make ref_counter an abstract base class.
Forces people to override correctly.

Also make no_op_ref_counter final.
2020-04-08 12:22:28 +01:00
Joe Thornber
501299a4ee [cache_*] array ref_counter wasn't overloaded correctly.
Major bug, explains some space map issues I've seen when
restoring cache metadata.
2020-04-08 12:19:55 +01:00
Joe Thornber
8db3800e2c [base/application] One of the run methods wasn't overriding 2020-04-08 12:19:06 +01:00
Joe Thornber
0ccee1759e [various] Squash a couple of clang warning wrt friend declarations. 2020-04-08 12:18:24 +01:00
Joe Thornber
5e347dddbf [various] remove dead code.
Squashes warnings from clang++
2020-04-08 12:12:59 +01:00
Joe Thornber
ed44a1128f
Merge pull request #134 from Arusekk/issue-12
Fix compilation with uClibc
2020-03-25 15:00:28 +00:00
Arusekk
3ed3925370 Fix compilation with uClibc
Closes #12
2020-03-25 15:58:02 +01:00
Joe Thornber
47da81b6b7
Merge pull request #133 from mingnus/master
Improve performance, and remove unused code
2020-03-02 11:22:49 +00:00
Ming-Hung Tsai
7a1c6dc4bf [space-map-disk] improve performance of finding a free bitmap entry
* Simply test the raw bitmap entries against zero, to avoid
  time-consumed reference-count value extraction.

* Improve the way of iterating entries inside a bitmap:
  Extract 64-bit of bitmap entries at once, and use bitwise shift
  to iterate through the entries.
2020-02-29 17:39:17 +08:00
Ming-Hung Tsai
cb0a77e2ae [block-manager] remove unused copy-assignment operator
block_cache::block is non-copyable, and so are the containing structures.
2020-02-29 00:29:01 +08:00
Joe Thornber
70f11e0866
Merge pull request #132 from mingnus/master
Fix potential file descriptor leak and compile flags
2020-02-25 16:08:36 +00:00
Ming-Hung Tsai
57cae67ff1 [unit-tests] fix googletest compile flags
googletest now requires c++11 compiler
2020-02-23 15:41:20 +08:00
Ming-Hung Tsai
955e11bc28 [block-cache] fix potential file descriptor leak
Encapsulate file descriptor into an object, to ensure that an fd will be
closed properly while exception raised, e.g., the block_cache throws
exception during the block_manager's construction.
2020-02-23 15:41:16 +08:00
Ming-Hung Tsai
c85ea5ef76 [thin_check] factor out metadata_checker 2020-02-17 11:42:24 +00:00
Ming-Hung Tsai
d6a8c03aa2 [btree_damage_visitor] factor out non-template functions 2020-02-17 11:42:24 +00:00
Ming-Hung Tsai
e6a4ba53f0 [build] add options for gprof 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
cb055c90e5 Man page changes for corrupt superblock repair 2019-10-25 15:57:51 +05:30
Nikhil Kshirsagar
91b4714e38 Corrupt superblock repair 2019-10-25 15:02:56 +05:30
Joe Thornber
0fc7529c01 [cache_repair, thin_repair] fix bug introduced in recent patch
I hadn't realised that check_file_exists() also checked that it was
a regular file, which we don't want for the couple of uses I recently
added.

This patch adds an optional arg must_be_regular_file, and defaults
it to true, preserving the original behaviour.  The recent additions
have this set to false.
2019-10-14 09:21:38 +01:00
Joe Thornber
1dd7b454bb [thin_repair, cache_repair] Check input file exists earlier
and zero superblock if we fail part way through a repair.

bz1499781
2019-10-08 14:34:24 +01:00
Joe Thornber
a3b8e9db78 [thin_trim] remove all mention of --pool-inactive from man page.
This option is obsolete now that we open O_EXCL.  If used a warning message
will be output.
2019-10-07 13:32:52 +01:00
Joe Thornber
6332962ee8 [ft-lib/bcache] rename raise() -> raise_()
Name clash with signal.h on Debian and Gentoo.
2019-06-05 15:02:05 +01:00
Joe Thornber
5e5409f48b [space-map/noop] Be explicit about returning an optional
Needed for older version of g++
2019-06-05 11:07:28 +01:00
Joe Thornber
f5acd0426d bump version 2019-06-04 10:39:59 +01:00
Joe Thornber
7be9be1494 [space-maps/noop] Add the noops space map
Used when we know we're npt modifying the metadata.
2019-06-04 10:38:58 +01:00
Joe Thornber
c19a05f28f bump version 2019-06-03 14:11:37 +01:00
Joe Thornber
733c7df798 [thin_repair/thin_dump] Fix some more spurious error messages when doing repair.
Repair was falling back to non-repair behaviour if it thought the roots
were ok.  Now if --repair is specified the same dumping code is always
executed.
2019-06-03 14:03:24 +01:00
Joe Thornber
e45a211902 [thin/metadata_dumper] Change a couple of confusing class names.
metadata_emitter is actually a visitor that passes on it's data
to an encapsulated emitter object.

metadata_emitter -> metadata_emit_visitor
metadata_tree_emitter -> metadata_tree_emit_visitor
2019-06-03 11:07:32 +01:00
Joe Thornber
a13178ffd1 Bump version 2019-05-28 09:24:22 +01:00
Joe Thornber
0624ded67f [thin_repair, thin_dump] Don't look for better roots if the ones in the sb are ok.
Calculating the most recent trees is inexact, so trees other than the ones
in the superblock, which presumably are the most recent, could be chosen.
2019-05-27 16:43:32 +01:00
Joe Thornber
5e6ddbf2da [thin_dump, thin_repair] Fix bad metadata_damage exception
The first pass of the repair process scans all metadata working out the
largest orphan btrees.  This scan doesn't use as much validation as
the btree_walk function which subsequently gets called.

This patch catches any exceptions thrown by the btree walk function
and removes that btree from consideration.
2019-05-27 16:06:59 +01:00
Joe Thornber
d299cc66d1 [functional-tests/thin_dump] check no error msg with clean metadata 2019-05-27 15:38:45 +01:00