Ming-Hung Tsai
1907dab5ee
[cache (rust)] Implement Pack and Default for restoration
2021-05-28 03:19:42 +08:00
Ming-Hung Tsai
86e2db3a1a
[cache (rust)] Add visitor traits for cache_restore
2021-05-28 03:19:42 +08:00
Ming-Hung Tsai
2a77036fa8
[array_builder] First draft
...
Not tested yet
2021-05-28 03:19:42 +08:00
Ming-Hung Tsai
a6e1870b2b
[array (rust)] Implement Pack for restoration
2021-05-28 03:19:42 +08:00
Ming-Hung Tsai
7e2d69ede9
[cache_dump (rust)] Allow partially broken dirty bitset
2021-05-28 03:19:42 +08:00
Ming-Hung Tsai
2a9e7cf74f
[thin_dump (rust)] Split runs at the position with multiple references
...
That is, an element with multiple references will serve as the beginning
of an atomic run.
2021-05-28 00:18:27 +08:00
Ming-Hung Tsai
30cfcd9a88
[thin_dump (rust)] Use common leaf sequences to pack metadata
2021-05-28 00:07:32 +08:00
Ming-Hung Tsai
4c47fcabbf
[thin_dump (rust)] Fix missing outputs
2021-05-27 23:51:37 +08:00
Ming-Hung Tsai
7e53c36d6b
[cache (rust)] Fix bugs in array iteration and text outputs
...
- Fix array indexing
- Fix panic on empty array
- Remove trailing null characters from the policy name
- Change XML tag naming for backward compatibility
2021-05-13 21:36:52 +08:00
Ming-Hung Tsai
1bbb63f06b
[cache_check (rust)] Fix discard bitset size checking
2021-05-12 15:50:14 +08:00
Ming-Hung Tsai
b7bf82b8f2
[all] Fix newline in version string
2021-05-12 12:03:52 +08:00
Ming-Hung Tsai
965fbb6e8f
[all] Apply cargo fmt, and fix clippy warnings
2021-05-11 23:53:31 +08:00
Ming-Hung Tsai
5baeab4a5c
Merge branch 'main' into rust-cache-tools
2021-05-11 23:16:08 +08:00
Joe Thornber
d9a96758b0
Merge pull request #168 from mingnus/2020-10-09-thin-restore-rewrite
...
Merge recent changes in thin_restore
2021-05-04 09:21:40 +01:00
Ming-Hung Tsai
43e433149b
[all] Apply cargo fmt
2021-05-04 16:10:23 +08:00
Ming-Hung Tsai
4b4584c830
[thin_restore (rust)] Apply several fixes
...
- Fix reading queued blocks
- Fix unnecessary block shadowing when there's no remaining values
- Prevent superblock from overwritten
- Flush queued writes before updating superblock
2021-05-03 00:07:34 +08:00
Ming-Hung Tsai
e9899ac610
Add missing math.rs
2021-04-26 12:47:05 +08:00
Ming-Hung Tsai
cf4b937ade
[cache_check (rust)] Check space map counts
...
- Support space map checking and auto-repair
2021-04-23 16:23:21 +08:00
Ming-Hung Tsai
636d50a38d
[thin_check (rust)] Pull out space map checking routines
2021-04-23 16:04:56 +08:00
Ming-Hung Tsai
e1628f9004
[cache_check (rust)] Add more checks
...
- Check array indices continuity
- Support ignore_non_fatal
- Report blocknr of IoErrors
- Report array block indeices
2021-04-21 23:35:22 +08:00
Ming-Hung Tsai
239ff7dfa1
[cache_check (rust)] Add more checks
...
- Report errors
- Support reading partially broken bitset
- The output is a bitmap of 2-bit entries, indicating availability of bits
2021-04-21 14:09:38 +08:00
Ming-Hung Tsai
3279d8381b
[array_walker] Read multiple array blocks at once
2021-04-17 00:10:14 +08:00
Ming-Hung Tsai
c17559791f
[bitset] Rename bitset module
2021-04-17 00:10:14 +08:00
Ming-Hung Tsai
1964015d81
[array_walker] Handle the whole array block at once
...
That gives the visitor more controls over the data processing and locking,
and also improves the performance by 10-15%.
2021-04-17 00:06:09 +08:00
Ming-Hung Tsai
95dee9f66d
[cache_check (rust)] Do not remap ArrayErrors to keep the error context
2021-04-16 21:46:30 +08:00
Ming-Hung Tsai
9b4a0607ea
[cache_check (rust)] Detect structural errors on arrays
...
- Define error types for arrays
- Propagate low-level errors to tools
- Rename array_block.rs to array.rs
2021-04-14 16:02:50 +08:00
Ming-Hung Tsai
ace9c1d1e3
[cache_check (rust)] Add more checks
...
- check version-2 dirty bitset size and consistency
- check discard bitset size
2021-04-11 22:48:10 +08:00
Ming-Hung Tsai
ae630f1fd8
[btree_walker] Fix error returning
2021-04-11 20:18:44 +08:00
Ming-Hung Tsai
860b3ca7d2
[cache_check (rust)] Add more checks
...
- Check the version-1 dirty flag
- Check mappings against the origin device size, if the cache is clean
- Check superblock fields
2021-04-11 20:18:25 +08:00
Joe Thornber
0119b51a9c
Merge branch 'main' of github.com:jthornber/thin-provisioning-tools
2021-04-08 10:47:18 +01:00
Joe Thornber
c41b2e8ec3
Some interface changes to let dm-unit use the thin checking code more easily.
2021-04-08 10:45:50 +01:00
Joe Thornber
040e3bfc2d
Lot's of work on thin_restore
2021-03-24 14:20:20 +00:00
Joe Thornber
12c1c6e1f5
Merge branch 'main' into 2020-10-09-thin-restore-rewrite
2021-03-23 11:22:03 +00:00
Ming-Hung Tsai
e0eb8fea87
[btree (rust)] Show out-of-order keys
2021-03-12 12:37:07 +08:00
Ming-Hung Tsai
0ff72374f8
[btree_builder (rust)] Fix the max_entries
2021-03-12 00:42:54 +08:00
Ming-Hung Tsai
7d983e3155
[btree_builder (rust)] Fix the max_entries
2021-03-11 18:24:10 +08:00
Joe Thornber
7e869bb8e0
Code review of cache_dump/check
...
Added support for metadata format2 to cache_dump. Nothing tested.
2021-03-04 11:13:08 +00:00
Joe Thornber
e6c6275aea
Code review of src/pdata/array*
2021-03-03 10:27:57 +00:00
Joe Thornber
fdcc09c27e
[cache_dump] Squash some clippy warnings
2021-03-03 09:48:15 +00:00
Joe Thornber
3cf0dba469
[cache_dump] fix how needs_check flag is checked
2021-03-03 09:47:42 +00:00
Ming-Hung Tsai
eb3d181f95
[cache_dump (rust)] First draft of cache_dump
2021-03-03 12:27:51 +08:00
Ming-Hung Tsai
fde0e0e2b8
[cache (rust)] Add Mapping::is_dirty()
2021-03-03 12:14:46 +08:00
Ming-Hung Tsai
74fcb9d505
[cache (rust)] Fix data types
2021-02-26 23:31:12 +08:00
Joe Thornber
3d9b32e509
Merge branch 'main' of github.com:jthornber/thin-provisioning-tools into main
2021-02-26 15:26:33 +00:00
Joe Thornber
d4299a00d0
Make pack_node() and calc_max_entries() public for dm-unit
2021-02-26 15:25:53 +00:00
Ming-Hung Tsai
a7ecfba2b4
[cache (rust)] Fix merge conflicts
2021-02-24 20:21:10 +08:00
Joe Thornber
a4ba01cacd
Merge pull request #160 from mingnus/rust-cache-tools
...
First draft of cache_check in Rust
2021-02-24 09:53:51 +00:00
Ming-Hung Tsai
2bb3bf65b7
[cache_check (rust)] Implement basic functions
2021-02-24 17:39:11 +08:00
Joe Thornber
763b2d14b2
[io_engine] Add Block::zeroed() constructor
2021-02-09 14:34:26 +00:00
Joe Thornber
c3c6d37aea
Fix a lot of clippy warnings
2021-02-08 10:38:21 +00:00
Joe Thornber
6f30d17f04
version.rs includes VERSION directly.
...
So you no longer need to run ./configure to build the rust tools
2021-02-04 10:00:32 +00:00
Ming-Hung Tsai
faa371c208
[cache (rust)] Implement cache primitives
2021-02-03 15:18:47 +08:00
Ming-Hung Tsai
087a4711a5
[array (rust)] Implement array basis
2021-02-03 15:18:41 +08:00
Ming-Hung Tsai
ca7e79a828
Merge commit 'b67b587' into main
2021-01-12 02:50:12 +08:00
Joe Thornber
04e0eb3a66
[thin_restore (rust)] rewrite the btree_builder
...
Now copes with adding shared leaves.
2020-12-09 13:22:32 +00:00
Joe Thornber
443b3c8f0b
[io_engine (rust)] get_nr_blocks() wasn't handling block devices.
...
Now calls file_utils::file_size()
2020-12-02 15:20:14 +00:00
Joe Thornber
ba7fd7bd2b
[thin_check (rust)] Make --sync-io the default.
...
For some systems you have to adjust the ulimits to get io_uring
to work, so we now default to using sync io.
Also added --async-io flag.
2020-12-02 11:33:05 +00:00
Joe Thornber
0e4622f337
[Rust tools] squash lots of warnings
2020-12-01 11:50:32 +00:00
Joe Thornber
1ae62adec6
work in progress
2020-11-18 14:33:56 +00:00
Joe Thornber
37ea0280df
[thin_restore] first pass at btree_builder.
...
No tests yet
2020-10-26 12:05:27 +00:00
Joe Thornber
f60ae770c2
[thin_explore] Explore devices tree, including path support.
2020-10-15 11:53:09 +01:00
Joe Thornber
e9fbcc31de
[thin_dump (rust)] First pass at thin_dump.
...
Doesn't include --repair.
This includes <def> and <ref> sections for shared regions.
2020-09-28 15:45:13 +01:00
Joe Thornber
a88ae3ca18
[thin_check (rust)] factor out device detail
2020-09-25 09:59:16 +01:00
Joe Thornber
66b6a1ba48
[thin_check (rust)] --superblock-only, --skip-mappings, INFO fields
2020-09-24 13:55:58 +01:00
Joe Thornber
34052c540c
[thin_check (rust)] Reinstate walk_node_threaded
2020-09-24 09:40:38 +01:00
Joe Thornber
b67b587a10
[thin_shrink] Add comment pointing people at Nikhil's PoC
2020-09-22 12:01:17 +01:00
Joe Thornber
f4c3098e02
[thin_check (rust)] fix bug in key range splitting.
...
Ranges were not being ommitted when a block was ommitted due to
being shared and already visited.
2020-09-22 10:47:23 +01:00
Joe Thornber
819fc6d54c
[thin_explore] accept a node path on the command line
...
Helpful to examine thin_check failures.
2020-09-22 10:47:04 +01:00
Joe Thornber
b193d19603
[thin_check (rust)] output complete node paths with errors.
...
This can be used with thin_explore
2020-09-18 11:16:09 +01:00
Joe Thornber
bc058f8baf
[thin_check (rust)] BTree values must now implement Copy
2020-09-18 10:06:33 +01:00
Joe Thornber
bcfb9a73a1
[thin_explore] display ranges where possible
2020-09-18 09:12:51 +01:00
Joe Thornber
8493cf7081
[thin_explore] First code drop
2020-09-16 15:10:01 +01:00
Joe Thornber
5168621f02
[thin_check (rust)] Optimise SyncIoEngine
...
*_many no longer get/put for each block
2020-09-02 13:28:16 +01:00
Joe Thornber
44142f657a
[thin_check (rust)] Add error handling to io_engine interface
2020-09-02 12:57:47 +01:00
Joe Thornber
b82307d8a5
[thin_check (rust)] drop O_DIRECT for the sync_io engine.
...
O_DIRECT slows us down, and there's no correctness reason for having it.
2020-08-21 11:39:41 +01:00
Joe Thornber
cda92de441
[thin_check (rust)] Add a threaded version of btree walk.
...
Bottom level mappings use this if there are few devices. Performance
is a bit slower for io_uring, and much slower for sync io (which I think
is due to io scheduling which I can't do much about).
2020-08-21 10:10:49 +01:00
Joe Thornber
b01a0a46d1
[thin_metadata_pack/unpack] Use Vec::with_capacity() to avoid reallocs.
...
Gives a small speed boost to both pack and unpack.
2020-08-21 09:14:54 +01:00
Joe Thornber
c9a759b4e8
[thin_check (rust)] Use vec::with_capacity() to avoid reallocations.
2020-08-21 09:00:21 +01:00
Joe Thornber
2cc2dffab5
[thin_check (rust)] Make NodeVisitor::visit non mut.
...
Preparation for making btree_walk multithreaded
2020-08-20 11:05:14 +01:00
Joe Thornber
a1c206b774
[thin_check (rust)] NodeVisitor only needs to see leaf nodes
2020-08-20 10:55:38 +01:00
Joe Thornber
936e06e132
[thin_check (rust)] Remove some unused params from NodeVisitor::visit
2020-08-20 10:46:06 +01:00
Joe Thornber
1999343d2f
[thin_check (rust)] squash a couple of warnings
2020-08-20 10:33:02 +01:00
Joe Thornber
7834d661e2
[thin_check (rust)] auto repair space map leaks
2020-08-19 14:31:01 +01:00
Joe Thornber
cdd0beb527
[thin_check (rust)] Change io_engine trait to use slices rather than Vecs
2020-08-18 12:57:05 +01:00
Joe Thornber
2aa6859502
[thin_check (rust)] add write support to io_engine
2020-08-18 12:52:16 +01:00
Joe Thornber
67a54b4ebc
[thin_check (rust)] add --auto-repair switch
2020-08-18 11:47:42 +01:00
Joe Thornber
8eec84fbec
[thin_check (rust)] introduce ASpaceMap type alias
2020-08-18 11:06:15 +01:00
Joe Thornber
04f3ba5a33
[thin_check (rust)] Pass ctx to check_space_map
2020-08-18 10:59:04 +01:00
Joe Thornber
4beb2db337
[thin_check (rust)] Factor out check_mapping_bottom_level
2020-08-18 10:53:11 +01:00
Joe Thornber
239ae6b6ec
[thin_check (rust)] factor out spawn_progress_thread
2020-08-18 09:48:51 +01:00
Joe Thornber
e8d7e5cf1e
[thin_check (rust)] move report creation to top level
2020-08-17 16:05:06 +01:00
Joe Thornber
5743e3e9ba
[thin_check (rust)] Add title method to reports
2020-08-17 15:36:21 +01:00
Joe Thornber
9995751dde
[thin_check (rust)] Provide 3 different report types.
...
ProgressBar for interactive use.
Simple for when not a tty
and quiet for -q
2020-08-17 13:10:32 +01:00
Joe Thornber
e1cfc3866b
[thin_check (rust)] Mappings top level weren't being ref counted
2020-08-13 14:43:19 +01:00
Joe Thornber
092447d17a
[thin_check (rust)] remove some dead code
2020-08-13 14:30:04 +01:00
Joe Thornber
2fa732a93c
[functional tests] Port some of Hank's sh tests to Rust.
...
Run with 'cargo test'
2020-08-13 14:20:29 +01:00
Joe Thornber
b0e7520fbf
[thin/superblock (rust)] Unpack flags
2020-08-13 13:46:07 +01:00
Joe Thornber
afa3f2f04d
[thin_check (rust)] Rename Spinner -> Reporter
2020-08-12 10:25:06 +01:00
Joe Thornber
544335ae4a
[thin_check (rust)] Send all reporting through the Spinner.
...
This means the spinner doesn't overwrite messages.
2020-08-12 09:35:21 +01:00
Joe Thornber
3757e1d947
[thin_check (rust)] check metadata space map
2020-08-12 08:02:29 +01:00