Fix FAILFAST for pass-through requests

It seems that REQ_QUIET and REQ_FAILFAST flags were confused. We want
both printed information in the logs about backend devices IO faulires
and fail fast pass-through requests without extra retries. Setting
rq->retries along is not sufficient, because in the kernel code retries
and the FAILFAST bitfields control behavior of different kernel pieces,
so they need to be used together. For instance, blk_noretry_request()
has no idea about rq->retries.



git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@6204 d57e44dd-8a1f-0410-8b47-8ef2f437770f
This commit is contained in:
Vladislav Bolkhovitin
2015-05-07 02:21:35 +00:00
parent e719f0eca5
commit c6c52f4a71

View File

@@ -7422,7 +7422,9 @@ int scst_scsi_exec_async(struct scst_cmd *cmd, void *data,
rq->timeout = cmd->timeout;
rq->retries = cmd->retries;
rq->end_io_data = sioc;
rq->cmd_flags |= REQ_QUIET;
#if LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 35)
rq->cmd_flags |= REQ_FAILFAST_MASK;
#endif
blk_execute_rq_nowait(rq->q, NULL, rq,
(cmd->queue_type == SCST_CMD_QUEUE_HEAD_OF_QUEUE), scsi_end_async);