Messages in this thread Patch in this message | | | Date | Fri, 18 Jul 2014 08:10:39 -0700 | From | "Christoph Hellwig ()" <> | Subject | Re: [PATCH 1/1] [SCSI] Fix a bug in deriving the FLUSH_TIMEOUT from the basic I/O timeout |
| |
On Thu, Jul 17, 2014 at 11:53:33PM +0000, KY Srinivasan wrote: > I still see this problem. There was talk of fixing it elsewhere.
Well, what we have right not is entirely broken, given that the block layer doesn't initialize ->timeout on TYPE_FS requeuests.
We either need to revert that initial commit or apply something like the attached patch as a quick fix.
From ecbf154d15f4022676219b9ff90e542d1db64392 Mon Sep 17 00:00:00 2001 From: Christoph Hellwig <hch@lst.de> Date: Fri, 18 Jul 2014 17:11:27 +0200 Subject: sd: set a non-zero timeout for flush requests
rq->timeout for TYPE_FS commands needs to be initialized by the driver, so we can't simply multiply it.
Signed-off-by: Christoph Hellwig <hch@lst.de> --- drivers/scsi/sd.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c index 377a520..bef4e78 100644 --- a/drivers/scsi/sd.c +++ b/drivers/scsi/sd.c @@ -880,7 +880,7 @@ static int sd_setup_flush_cmnd(struct scsi_cmnd *cmd) cmd->transfersize = 0; cmd->allowed = SD_MAX_RETRIES; - rq->timeout *= SD_FLUSH_TIMEOUT_MULTIPLIER; + rq->timeout = SD_TIMEOUT * SD_FLUSH_TIMEOUT_MULTIPLIER; return BLKPREP_OK; } -- 1.9.1
| |