On Sat, 2016-03-05 at 22:19 -0800, Christoph Hellwig wrote: > On Sat, Mar 05, 2016 at 02:51:27PM -0800, Nicholas A. Bellinger wrote: > > > I think you;d be much better off killing ib_bio_err_cnt and having > > > an ib_error that gets set to the last / most server error. > > > > That's what I was originally thinking too.. > > > > However, that means if one bio completed successfully and another got > > -EAGAIN / -ENOMEM for the same se_cmd, IBLOCK would still complete > > se_cmd with GOOD status. > > > > I don't see how completing se_cmd with GOOD status, when one bio in the > > set requested retry depending on completion order is a good idea. > > Oh, I took a look at the patch again and it looks bogus - block drivers > should never return EAGAIN or ENOMEM from ->bi_end_io. Those are errors > that should happen before submission if at all. Which driver ever returns > these? The intended use is for any make_request_fn() based driver that invokes bio_endio() completion directly, and sets bi_error != 0 to signal non GOOD status to target/iblock. This is helpful when a block drivers knows it won't be able to complete I/O before host dependent SCSI timeouts kick in, and it needs to signal retry with BUSY status or in the case of Linux/SCSI with TASK_SET_FULL, to reduce host queue_depth. -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html