diff options
| author | Qu Wenruo <[email protected]> | 2022-11-01 19:16:01 +0800 |
|---|---|---|
| committer | David Sterba <[email protected]> | 2022-12-05 18:00:48 +0100 |
| commit | 9c5ff9b42c1cb22823c94983b7d52121c559bf4d (patch) | |
| tree | 4655b1cbbde3e95e27c15d07b4cccff6f69e7f06 /tools/perf/scripts/python/stackcollapse.py | |
| parent | ee5f017dccc79e5a9b442ca473631a53e1e7e376 (diff) | |
btrfs: raid56: extract the vertical stripe recovery code into recover_vertical()
This refactor includes the following behavior change first:
- Don't error out if only P/Q is corrupted
The old code will directly error out if only P/Q is corrupted.
Although it is an logical error if we go into rebuild path with
only P/Q corrupted, there is no need to error out.
Just skip the rebuild and return the already good data.
Then comes the following refactor which shouldn't cause behavior
changes:
- Introduce a helper to do vertical stripe recovery
This not only reduce one indent level, but also paves the road for
later data checksum verification in RMW cycles.
- Sort rbio->faila/b before recovery
So we don't need to do the same swap every vertical stripe
- Replace a BUG_ON() with ASSERT()
Or checkpatch won't let me pass.
- Mark recovered sectors uptodate after the recover loop
- Do the cleanup for pointers unconditionally
We only need to initialize @pointers and @unmap_array to NULL, so
we can safely free them unconditionally.
- Mark the repaired sector uptodate in recover_vertical()
Signed-off-by: Qu Wenruo <[email protected]>
Signed-off-by: David Sterba <[email protected]>
Diffstat (limited to 'tools/perf/scripts/python/stackcollapse.py')
0 files changed, 0 insertions, 0 deletions