ceph/qa/standalone/erasure-code
Josh Durgin d4808256d2 osd/ECBackend: preserve requests for other objects when sending extra reads
When multiple objects are in flight for the same ReadOp, swap() on the
map<hobject_t, read_request_t> would remove requests for all objects.

We just want to replace the requests for the single object we're
dealing with in send_all_remaining_reads().

This prevents crashing trying to look up rop.to_read[hoid] when another
object in the same ReadOp gets an EIO and tries to send more requests.

Test this by using osd-recovery-max-single-start to bundle multiple
reads into one ReadOp. Save and restore CEPH_ARGS so custom settings
are reset for each test.

Fixes: http://tracker.ceph.com/issues/23195 (the 2nd crash there)
Signed-off-by: Josh Durgin <jdurgin@redhat.com>
2018-04-20 19:42:15 -04:00
..
test-erasure-code-plugins.sh
test-erasure-code.sh qa/standalone: extract delete_pool() 2018-02-28 15:40:28 +08:00
test-erasure-eio.sh osd/ECBackend: preserve requests for other objects when sending extra reads 2018-04-20 19:42:15 -04:00