Ming-Hung Tsai
565c656ed2
[thin_generate_damage] Do not open a new transaction to prevent ref-count underflow
...
There's a chance that thin_generate_damage tries to change ref-counts of
space map blocks due to its random nature, which could lead to problems.
If the ref-counts of metadata space map blocks (shadow source) is changed
to zero, then the ref-counts will become underflow after a shadow operation.
In-place space map modification is a way to prevent that value underflow.
An alternative approach is to avoid changing ref-counts of space map blocks.
2020-11-24 18:18:21 +08:00
Ming-Hung Tsai
61f07573e1
[metadata_counter] Count under populated nodes if the option is provided
2020-11-24 18:18:21 +08:00
Ming-Hung Tsai
1fe8a0dbde
[thin_check] Allow using --clear-needs-check and --skip-mappings together
...
Although it is not recommended to clear the flag without a full
examination, however, the usage has been documented as an approach
to reduce lvchange run time [1]. For the purpose of backward
compatibility and avoiding boot failure after upgrading thin_check [2],
the limitation is now removed.
[1] https://wiki.archlinux.org/index.php/LVM#Thinly-provisioned_root_volume_device_times_out
[2] Community feedback on previous commit:
https://github.com/jthornber/thin-provisioning-tools/commit/b278f4f
2020-11-24 18:17:36 +08:00
Ming-Hung Tsai
7ceb500fc8
[thin_delta] Support comparing two specific subtrees
2020-11-24 15:58:01 +08:00
Ming-Hung Tsai
1d5b52b0dd
[thin_delta] Clean up duplicated code
2020-11-24 15:17:35 +08:00
Ming-Hung Tsai
b42408ef41
[thin] Introduce thin_patch_superblock to override superblock fields
2020-11-24 14:57:05 +08:00
Ming-Hung Tsai
9f3823c97d
[metadata_checker] Rename function to reflect command line changes
2020-08-14 18:49:41 +08:00
Joe Thornber
2860b4c0b1
[thin_check] rename --fix-metadata-leaks to --auto-repair
...
This flag will cover all trivial fixes, such as data leaks.
2020-08-12 10:45:20 +01:00
Ming-Hung Tsai
6c90f9483e
[metadata_checker] Support in-place metadata space map modification
2020-08-12 16:57:16 +08:00
Ming-Hung Tsai
1cfdcd58c5
[metadata_checker] Disable checking data block ref-counts due to performance concerns
2020-08-12 16:57:16 +08:00
Ming-Hung Tsai
b16ff123b7
[thin] Stop metadata counting on the first error
2020-08-12 15:56:26 +08:00
Ming-Hung Tsai
c952f52c79
[metadata_checker] Fix expected ref-counts in data space map comparison
2020-08-10 20:39:22 +08:00
Ming-Hung Tsai
2d9eaa1c56
[metadata_checker] Do not update the superblock if the needs_check flag is not set
2020-08-08 01:20:15 +08:00
Ming-Hung Tsai
3f19818c56
[thin] Adopt stateful random number generators
2020-08-05 22:14:01 +08:00
Ming-Hung Tsai
90f2d43a95
[thin_generate_damage] Add help text
2020-07-30 23:00:50 +08:00
Ming-Hung Tsai
b278f4ffa4
[thin_check] Change the policy of --clear-needs-check-flag to prevent error recurrence
...
- Disallow clearing the needs_check flag if there's any error,
i.e., the metadata must be fully examined, and the result must
be NO_ERROR.
- Disallow combining --clear-needs-check with -m, --super-blocks-only,
--skip-mappings, --override-mapping-root, or --ignore-non-fatal-errors.
2020-07-30 23:00:50 +08:00
Ming-Hung Tsai
49efa06ffa
[thin_check] Support fixing leaked metadata blocks
...
- The leaked blocks are defined as allocated but not used ones,
i.e., expected ref-count == 0 and actual ref-count <= 2.
- Blocks with expected ref-count > 0, or actual ref-count > 2,
are treated as unrepairable leaks.
- The fixing processing won't be executed if there's any
unrepairable leak or errors.
- The fixing process implicitly clearing the superblock
needs_check flag if there's no error.
2020-07-30 23:00:50 +08:00
Ming-Hung Tsai
7be6b91420
[metadata_checker] Tidying: rename variables
2020-07-29 16:47:22 +08:00
Ming-Hung Tsai
ecb5226acc
[thin] Fix indent and trailing whitespaces
2020-07-29 16:47:22 +08:00
Ming-Hung Tsai
b693c7d6b0
[metadata_checker] Fix missing member initialization
2020-07-29 16:47:22 +08:00
Ming-Hung Tsai
e62022a200
[base] Move run_set to namespace base
2020-07-29 15:33:25 +08:00
Ming-Hung Tsai
061d966e7a
[io_generator] Support mixed sequential and random io pattern
2020-07-25 17:46:59 +08:00
Ming-Hung Tsai
d1fed5f5ec
[thin_generate_damage] Introduce tools to generate metadata damage
2020-07-25 16:53:44 +08:00
Ming-Hung Tsai
e46fabde1a
[thin_generate_metadata] Fix command line options
...
- Remove unused options
- Fix potential option conflict
2020-07-25 16:53:44 +08:00
Ming-Hung Tsai
8d8ee51599
[thin_generate_metadata] Support setting the needs_check flag
2020-07-25 16:53:44 +08:00
Joe Thornber
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
Joe Thornber
9adcc7911f
Merge branch 'master' of github.com:jthornber/thin-provisioning-tools
2020-07-02 10:53:10 +01:00
Joe Thornber
a407c831df
[thin_repair] Fix segfault with metadata containing loops (bz1853241)
...
'seen' bit was being set too late.
2020-07-02 10:51:10 +01:00
Ming-Hung Tsai
19e482fd2f
[thin_generate_mappings] Update help text
2020-06-24 12:26:15 +08:00
Ming-Hung Tsai
8006e18173
[thin_pool] Fix the number of mapped blocks
2020-06-24 12:26:14 +08:00
Ming-Hung Tsai
084ac4b950
[io_generator] Simplify the class interface
2020-06-24 12:26:09 +08:00
Ming-Hung Tsai
8fa59553c4
[thin_generate_mappings] Introduce the mapping generation tool
2020-06-19 18:07:55 +08:00
Ming-Hung Tsai
621b466333
[all] Eliminate duplicated sector_t typedefs
2020-06-19 18:07:55 +08:00
Ming-Hung Tsai
5260a87c0b
[base] Move math_utils to namespace base
2020-06-19 18:07:55 +08:00
Ming-Hung Tsai
ef8e94b22c
[thin_generate_metadata] Support setting transaction id and metadata snapshots
2020-06-19 18:07:55 +08:00
Ming-Hung Tsai
524de134a4
[thin_pool] Support creating metadadata snapshot
2020-06-19 18:07:55 +08:00
Ming-Hung Tsai
e33c60c7e2
[thin_pool] Add close_thin()
2020-06-19 18:07:55 +08:00
Ming-Hung Tsai
89409927b4
[thin_generate_metadata] Support device deletion
2020-06-19 18:07:55 +08:00
Ming-Hung Tsai
a5614f7db2
[thin_pool] Complete device deletion
2020-06-19 18:07:55 +08:00
Ming-Hung Tsai
4e1ec9326b
[thin_pool] Tidying
...
- Remove unused headers
- Use predefined types
2020-06-19 18:07:55 +08:00
Ming-Hung Tsai
598696bc32
[thin_pool] Implement synchronous mapping insertion and removal
2020-06-19 18:07:55 +08:00
Ming-Hung Tsai
383ae78871
[thin_pool] Determine shared blocks while looking up mappings
2020-06-19 18:07:55 +08:00
Ming-Hung Tsai
a842b4ecfd
[thin_generate_metadata] Make use of thin_pool.cc
2020-06-19 18:07:55 +08:00
Ming-Hung Tsai
66b519db83
[thin_pool] Fix snapshot creation
2020-06-19 17:22:19 +08:00
Ming-Hung Tsai
2cce8a51a7
[thin_pool] Fix mapped block time
2020-06-19 17:22:19 +08:00
Ming-Hung Tsai
7f7ba950ef
[thin_pool] Complete device creation
...
- Set up the device details
- Cache device details of opened devices
- Update changed devices at once while committing the pool
2020-06-19 17:22:19 +08:00
Ming-Hung Tsai
77adb08c3f
[thin_pool] Replace the member pointer by references
2020-06-17 19:09:24 +08:00
Ming-Hung Tsai
0b058a2850
[thin_pool] Encapsulate metadata into the pool class
2020-06-17 19:09:24 +08:00
Ming-Hung Tsai
5810846409
[thin] Add more constructors to device_details
2020-06-17 19:09:24 +08:00
Joe Thornber
0b5afc6cb0
[thin_check] fix bugs in thin_check -m
2020-06-12 13:41:47 +01:00