diff options
| author | Kent Overstreet <kent.overstreet@linux.dev> | 2024-12-30 16:32:57 -0500 |
|---|---|---|
| committer | Kent Overstreet <kent.overstreet@linux.dev> | 2025-03-14 21:02:12 -0400 |
| commit | dff6de9518848b5afa0bc6fec57e657701be67ec (patch) | |
| tree | c69c6700e0b075ddff4fd7ed39e63d204f3b1b9a /tools/perf/scripts/python | |
| parent | 7b1d6551060066a1fed2a1f83485b0ea37ca3001 (diff) | |
| download | linux-dff6de9518848b5afa0bc6fec57e657701be67ec.tar.gz linux-dff6de9518848b5afa0bc6fec57e657701be67ec.zip | |
bcachefs: Internal reads can now correct errors
Rework the read path so that BCH_READ_NODECODE reads now also self-heal
after a read error and a successful retry - prerequisite for scrub.
- __bch2_read_endio() now handles a read that's both BCH_READ_NODECODE
and a bounce.
Normally, we don't want a BCH_READ_NODECODE read to ever allocate a
split bch_read_bio: we want to maintain the relationship between the
bch_read_bio and the data_update it's embedded in.
But correcting read errors requires allocating a split/bounce rbio
that's embedded in a promote_op. We do still have a 1-1 relationship,
i.e. we only allocate a single split/bounce if it's a
BCH_READ_NODECODE, so things hopefully don't get too crazy.
- __bch2_read_extent() now is allowed to allocate the promote_op for
rewriting after a failed read, even if it's BCH_READ_NODECODE.
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Diffstat (limited to 'tools/perf/scripts/python')
0 files changed, 0 insertions, 0 deletions
