summaryrefslogtreecommitdiffstats
path: root/drivers/md/raid1.c
diff options
context:
space:
mode:
authorNeilBrown <neilb@suse.com>2017-03-15 14:05:13 +1100
committerShaohua Li <shli@fb.com>2017-03-22 19:16:56 -0700
commit0472a42ba1f89ec85f070c731f4440d7cc38c44c (patch)
treeabdcc017ea2f4fc66e80b2d5f99921894702b687 /drivers/md/raid1.c
parent016c76ac76e4c678b01a75a602dc6be0282f5b29 (diff)
downloadop-kernel-dev-0472a42ba1f89ec85f070c731f4440d7cc38c44c.zip
op-kernel-dev-0472a42ba1f89ec85f070c731f4440d7cc38c44c.tar.gz
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 'drivers/md/raid1.c')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud