Cloned bio's bi_end_io() can check the error.
For successful I/O, it calls something equivalent to
end_that_request_first() for the original request,
that may eventually complete the original bio and
notify the submitter.
For error, it can decide not to complete the original bio
and record the error information.
When the clone request is finally completed and rq->end_io() is
called, stacking driver can check the recorded error information
and decide whether it should take any action or just complete
the original request by blk_complete_request().
Thanks,
--
Jun'ichi Nomura, NEC Corporation of America
--