diff options
author | 2017-03-15 14:05:13 +1100 | |
---|---|---|
committer | 2017-03-22 19:16:56 -0700 | |
commit | 0472a42ba1f89ec85f070c731f4440d7cc38c44c (patch) | |
tree | abdcc017ea2f4fc66e80b2d5f99921894702b687 /tools/perf/scripts/python/export-to-postgresql.py | |
parent | md/raid5: use bio_inc_remaining() instead of repurposing bi_phys_segments as a counter (diff) | |
download | wireguard-linux-0472a42ba1f89ec85f070c731f4440d7cc38c44c.tar.xz wireguard-linux-0472a42ba1f89ec85f070c731f4440d7cc38c44c.zip |
md/raid5: remove over-loading of ->bi_phys_segments.
When a read request, which bypassed the cache, fails, we need to retry
it through the cache.
This involves attaching it to a sequence of stripe_heads, and it may not
be possible to get all the stripe_heads we need at once.
We do what we can, and record how far we got in ->bi_phys_segments so
we can pick up again later.
There is only ever one bio which may have a non-zero offset stored in
->bi_phys_segments, the one that is either active in the single thread
which calls retry_aligned_read(), or is in conf->retry_read_aligned
waiting for retry_aligned_read() to be called again.
So we only need to store one offset value. This can be in a local
variable passed between remove_bio_from_retry() and
retry_aligned_read(), or in the r5conf structure next to the
->retry_read_aligned pointer.
Storing it there allows the last usage of ->bi_phys_segments to be
removed from md/raid5.c.
Signed-off-by: NeilBrown <neilb@suse.com>
Signed-off-by: Shaohua Li <shli@fb.com>
Diffstat (limited to 'tools/perf/scripts/python/export-to-postgresql.py')
0 files changed, 0 insertions, 0 deletions