0349e9c9e2
[space-maps/disk] Show the block address in exception string
2020-08-12 16:57:16 +08:00
12725983db
[block_counter] Add the stop-on-error option to prevent silent errors
...
The stop-on-error option aims to solve the lack of damage_visitor support
in space_map::count_metadata and btree counting_visitor. To prevent
possibly silent errors during space map or btree counting, the option
stops the counting process immediately when a btree or bitmap error
was found.
The bitmap blocks are also validated to avoid potential false-alarm,
if broken bitmap is not counted, and the corresponding ref-count is
also zeroed.
2020-08-12 15:56:26 +08:00
7c3145633b
[space-maps/core] Fix the search start position
2020-08-10 20:39:22 +08:00
e62022a200
[base] Move run_set to namespace base
2020-07-29 15:33:25 +08:00
fec11289b0
[thin_check/dump] Under populated nodes are now 'non fatal errors'
...
thin_dump always ignores non-fatal-errors.
2020-07-02 16:03:23 +01:00
cf127f3471
[btree] Fix reference counts of children below a shadow
2020-06-30 17:24:55 +08:00
4f8466c489
[btree] Fix parent key index for the new shadow
2020-06-30 17:22:47 +08:00
5260a87c0b
[base] Move math_utils to namespace base
2020-06-19 18:07:55 +08:00
e724a72045
[btree] Implement btree::remove()
2020-06-19 18:07:55 +08:00
f803c44e93
[btree] Implement btree::destroy() to delete the entire tree
...
Also decrease the reference count of the mapped values.
(e.g., bitmap blocks of btree_index_store)
2020-06-19 18:07:55 +08:00
0ab509578f
[*_check] Remove the inane "This is not the btree you are looking for." message.
2020-06-11 13:05:03 +01:00
86139cf6bd
[sm_recursive] Fix atomicity when applying BOPs
...
Any BOP should be taken only once. Therefore, we should remove BOPs
that are being processed or had been processed from the uncommitted
list.
2020-05-28 17:30:15 +08:00
4cdffafe88
[sm_recursive] Fix bug that allowed the same block to be allocated twice.
...
See issue 70. Soln from mingnus.
2020-05-28 17:30:15 +08:00
128ecc27f2
[space-maps] remove count_possibly_greater_than_one
...
This is only ever called with a recursive space map wrapper,
and that causes too many false positives. False positives trigger
a copy of a metadata page, so this is a false economy.
2020-05-28 07:38:58 +01:00
29cfdd8979
[space-maps/core] rewrite the core space map to use less memory.
2020-05-27 12:00:40 +01:00
371d1bbd6e
[space-maps/recursive] fix bug in flush_ops()
...
Decrements weren't being passed down properly.
2020-05-26 09:24:15 +01:00
50f8e792d3
[space-map] Make the version of inc/dec that take a count the only one.
2020-05-26 09:12:45 +01:00
cc806a0daa
[space-maps/disk] add implementation for the variant of inc/dec that take a count
2020-05-26 08:57:13 +01:00
12b6157c5b
[space-maps/recursive] lift a lock, and add a lock
2020-05-26 08:45:35 +01:00
0e54de95e1
[space-maps/recursive] Remove some code duplication.
2020-05-26 08:38:05 +01:00
65fcda062f
[space-maps/recursive] Aggregate the BOPs
2020-05-26 08:30:52 +01:00
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
5e6eec1bb0
[recursive space map] switch to new form 'for' statements
2020-05-26 07:49:26 +01:00
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
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
ad79b627a4
Merge branch 'master' of github.com:jthornber/thin-provisioning-tools
2020-04-08 12:30:26 +01:00
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
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
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
0ccee1759e
[various] Squash a couple of clang warning wrt friend declarations.
2020-04-08 12:18:24 +01:00
5e347dddbf
[various] remove dead code.
...
Squashes warnings from clang++
2020-04-08 12:12:59 +01:00
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
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
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
d6a8c03aa2
[btree_damage_visitor] factor out non-template functions
2020-02-17 11:42:24 +00: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
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
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
788f507e46
[run_set] fix invalid iterator operations ( #113 )
2018-09-05 11:21:09 +01:00
4b08c7793d
[space map] fix accounting of allocatable blocks ( #98 )
...
Preserve the input block first to avoid reusing it in subsequent
shadow operations, e.g., shadow another block when releasing
a recursive lock. (issue #97 )
2018-06-07 07:45:37 +01:00
582e424560
[space-map-disk] fix the number of free blocks ( #93 )
2018-04-17 14:00:44 +01:00
5b5aa971a0
Detect XML in *_check tools ( #86 )
...
* [*_check] Detect XML in cache_check and era_check
This is based on previous commit b10d8d4440
.
* [*_check] Fix typo in check_superblock
2017-10-05 13:47:10 +01:00
3c761e6822
[all tools] Factor out open_bm() and open_tm.
...
Many duplicates of this code.
2017-10-05 11:53:40 +01:00
591f725232
[space map disk] reduce the lock counts to speed up free block searching ( #84 )
...
Avoid repetitively acquiring/releasing the bitmap while finding a free block
2017-09-04 18:05:19 +01:00
467be1a69e
Add some std namespaces to get tests building.
...
I guess a rogue header had previously been using the std namespace.
2017-07-24 15:40:17 +01:00
209af19a02
[block manager] Don't allow the cache to be bigger than the block dev.
2017-07-24 15:28:23 +01:00
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
8f25e1b234
[space-map-disk] optimise updating a ref count
2017-04-11 11:59:49 +01:00
db44b5b928
[space-map-disk] Keep track of the allocated prefix so we can start searching in a better place.
2017-04-11 09:40:08 +01:00