Thread (3 messages) 3 messages, 3 authors, 2012-09-28

Re: [PATCH scsi] Short the path length of scsi_cmd_to_driver()

From: James Bottomley <James.Bottomley@HansenPartnership.com>
Date: 2012-09-28 07:45:37
Also in: lkml

On Thu, 2012-09-27 at 13:43 -0400, Martin K. Petersen wrote:
quoted
quoted
quoted
quoted
quoted
"Li" == Li Zhong [off-list ref] writes:
quoted
@@ -845,8 +844,11 @@ static int scsi_send_eh_cmnd(struct scsi_cmnd *scmd, unsigned char *cmnd,
	scsi_eh_restore_cmnd(scmd, &ses);

-	if (sdrv && sdrv->eh_action)
-		rtn = sdrv->eh_action(scmd, cmnd, cmnd_size, rtn);
+	if (scmd->request->cmd_type == REQ_TYPE_FS) {
+		struct scsi_driver *sdrv = scsi_cmd_to_driver(scmd);
+		if (sdrv->eh_action)
+			rtn = sdrv->eh_action(scmd, cmnd, cmnd_size, rtn);
+	}

	return rtn;
}
My only concern is whether our device lifetime rules guarantee that the
ULD is always attached when we service an error handling command?
Yes, they are.  We can only get REQ_TYPE_FS through a filesystem, which
must be mounted on a block device, which is provided by the ULD.  You
can't unmount with outstanding I/O (which people complain about when it
goes into error handling, I'll admit), so the ULD has to stay bound.

James
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help