Commit Graph

1485 Commits

Author SHA1 Message Date
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
c85ea5ef76 [thin_check] factor out metadata_checker 2020-02-17 11:42:24 +00:00
d6a8c03aa2 [btree_damage_visitor] factor out non-template functions 2020-02-17 11:42:24 +00:00
e6a4ba53f0 [build] add options for gprof 2020-02-17 11:42:24 +00:00
5f2c3bed69 Add some ftests, and fixup whitespace from Nikhil's work 2019-10-28 11:52:21 +00:00
cb055c90e5 Man page changes for corrupt superblock repair 2019-10-25 15:57:51 +05:30
91b4714e38 Corrupt superblock repair 2019-10-25 15:02:56 +05:30
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
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
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
6332962ee8 [ft-lib/bcache] rename raise() -> raise_()
Name clash with signal.h on Debian and Gentoo.
2019-06-05 15:02:05 +01:00
5e5409f48b [space-map/noop] Be explicit about returning an optional
Needed for older version of g++
2019-06-05 11:07:28 +01:00
f5acd0426d bump version 2019-06-04 10:39:59 +01:00
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
c19a05f28f bump version 2019-06-03 14:11:37 +01:00
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
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
a13178ffd1 Bump version 2019-05-28 09:24:22 +01:00
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
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
d299cc66d1 [functional-tests/thin_dump] check no error msg with clean metadata 2019-05-27 15:38:45 +01:00
acf2e6e625 [unit-tests] squash some warnings
ASSERT_THAT(), defined in google-test needs to be wrapped in braces if
it's the only statement in an if block (dangling else).
2019-05-27 09:19:14 +01:00
65264911c1 [thin_repair, thin_dump] --repair falg wasn't being passed through properly.
Recent regression.
2019-05-27 09:04:55 +01:00
9e87ad8298 bump version to 0.8.1 2019-05-03 15:19:06 +01:00
595ddfc50f [thin_repair/thin_dump] repair flag wasn't being set internally.
Introduced by recent changes
2019-05-03 15:15:01 +01:00
4bca324c9f Bump version to 0.8.0 2019-04-17 12:55:15 +01:00
9e20465fd1 [thin-repair, thin_dump] When repairing we now hunt for the best btree roots.
We've had a trickle of users who accidentally activate the same pool on a
VM and host at the same time.  Typically the host doesn't do any IO, but
the kernel will still rewrite the superblock on shutdown.  This leaves
the superblock pointing to very out of date btree roots and so we get
massive metadata loss.

This patch changes thin_repair, and thin_dump --repair.  They now hunt
for the most recent, undamaged and consistent roots of the device and
mapping trees, and use that as the starting point of the repair.
2019-04-17 12:17:13 +01:00
b027a1039f [thin-provisioning] Add a new constructor for the metadata class
This one takes a superblock.  Used when repairing.
2019-04-17 12:15:46 +01:00
b777a77023 [thin-provisioning] pass the tm by reference to the metadata object 2019-04-04 15:06:41 +01:00
aace49cdd6 [thin_repair] work in progress 2019-03-29 12:56:31 +00:00
8abac422b2 [space-map-disk] fix the search range (#117) 2019-01-03 10:46:35 +00:00
95ae4fef6a [functional tests] Use dd to create zeroed files
Previously I was using fallocate, which has issues on some filesystems.
2018-12-12 13:14:09 +00:00
e03b878df3 [functional tests] Move test output from /tmp to .
tmpfs has trouble with O_DIRECT.
2018-12-12 13:13:11 +00:00
cc56214eb8 Merge branch 'master' of github.com:jthornber/thin-provisioning-tools 2018-12-12 10:25:52 +00:00
207ef304c3 [era/restore_emitter] remove a noop
Pointless self assignment.  Value in suerpblock does get assigned properly.
2018-12-12 10:23:35 +00:00
299a45cc7d Update bcache.c (#115)
including the <stdint.h> twice. delete one.
2018-11-12 08:18:48 +00:00
d1a41d01cc [thin-check] print out some info fields.
These are consumed by lvm.
2018-11-09 12:43:21 +00:00
5a309dd3bd Merge branch 'master' of github.com:jthornber/thin-provisioning-tools 2018-11-09 11:18:27 +00:00
de7c9a5781 [thin_journal_check] Checks journal of block manager activity.
You need to apply doc/bm-journal.patch to create the journal.

thin_journal_check confirms that if the machine had crashed at any time
during the test run no metadata corruption would have occured.
2018-09-24 14:51:46 +01:00
788f507e46 [run_set] fix invalid iterator operations (#113) 2018-09-05 11:21:09 +01:00
70cdfe12a2 [thin_journal_check] first code drop 2018-08-28 13:12:20 +01:00
9837feaee5 [thin_scan] refactoring and performance improvement (#111) 2018-08-15 07:56:45 +01:00
a512b8754b Revert "fix compile failed with libc musl (#103)"
This reverts commit 9311aa6483.
2018-08-02 07:12:22 +01:00
9311aa6483 fix compile failed with libc musl (#103)
There is a failure while compiling with libc musl:
[snip]
|./block-cache/io_engine.h:18:17: error: expected
unqualified-id before numeric constant
|  unsigned const PAGE_SIZE = 4096;
[snip]

The musl defeines macro PAGE_SIZE, undef it conditionally
could fix the issue.

http://musl.openwall.narkive.com/tO8vrHdP/why-musl-define-page-size

Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
2018-08-01 07:10:26 +01:00
82ff03e5c1 Merge branch 'master' of github.com:jthornber/thin-provisioning-tools 2018-06-21 10:11:27 +01:00
68284c12a8 Merge branch '2018-04-25-thin-discard-bug' 2018-06-21 10:11:21 +01:00
498057d00e ft-lib: add discard() 2018-06-21 10:06:01 +01:00
cfe421ab8b Merge commit '570e11b2da6ee55bc755f5211cf80c4f942b4644' 2018-06-13 16:58:07 +01:00
570e11b2da [dmtests] Add failing test thin/discard/recover-space
See bz1563697
2018-06-13 16:54:36 +01:00
b6ba3a070d [restore_emitter] squash a strncpy warning 2018-06-13 12:50:48 +01:00