Re: [BUG] 2.6.24-git usb reset problems

!MAILaRCHIVE_VOTE_RePLACE
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: James Bottomley <James.Bottomley@...>
Cc: Matthew Dharm <mdharm-kernel@...>, Oliver Neukum <oliver@...>, Boaz Harrosh <bharrosh@...>, Greg KH <greg@...>, <linux-kernel@...>, <linux-usb@...>, <linux-scsi@...>
Date: Tuesday, January 29, 2008 - 3:45 pm

On Tue, Jan 29 2008, Jens Axboe wrote:

ok here goes, this saves and restores the sg table correctly. it also
fixes the usb bug for me.

diff --git a/drivers/scsi/scsi_error.c b/drivers/scsi/scsi_error.c
index 547e85a..12770ef 100644
--- a/drivers/scsi/scsi_error.c
+++ b/drivers/scsi/scsi_error.c
@@ -622,13 +622,15 @@ void scsi_eh_prep_cmnd(struct scsi_cmnd *scmd, struct scsi_eh_save *ses,
 	ses->use_sg = scmd->use_sg;
 	ses->resid = scmd->resid;
 	ses->result = scmd->result;
+	memcpy(&ses->sense_sgl, &scmd->sg_table, sizeof(ses->sense_sgl));
 
 	if (sense_bytes) {
 		scmd->request_bufflen = min_t(unsigned,
 		                       SCSI_SENSE_BUFFERSIZE, sense_bytes);
 		sg_init_one(&ses->sense_sgl, scmd->sense_buffer,
 		                                       scmd->request_bufflen);
-		scmd->request_buffer = &ses->sense_sgl;
+		scmd->sg_table.sgl = &ses->sense_sgl;
+		scmd->sg_table.nents = scmd->sg_table.orig_nents = 1;
 		scmd->sc_data_direction = DMA_FROM_DEVICE;
 		scmd->use_sg = 1;
 		memset(scmd->cmnd, 0, sizeof(scmd->cmnd));
@@ -679,6 +681,7 @@ void scsi_eh_restore_cmnd(struct scsi_cmnd* scmd, struct scsi_eh_save *ses)
 	scmd->request_bufflen = ses->bufflen;
 	scmd->request_buffer = ses->buffer;
 	scmd->use_sg = ses->use_sg;
+	memcpy(&scmd->sg_table, &ses->sg_table, sizeof(scmd->sg_table));
 	scmd->resid = ses->resid;
 	scmd->result = ses->result;
 }
diff --git a/include/scsi/scsi_eh.h b/include/scsi/scsi_eh.h
index d21b891..d43dc83 100644
--- a/include/scsi/scsi_eh.h
+++ b/include/scsi/scsi_eh.h
@@ -75,6 +75,7 @@ struct scsi_eh_save {
 
 	void *buffer;
 	unsigned bufflen;
+	struct sg_table sg_table;
 	unsigned short use_sg;
 	int resid;
 

-- 
Jens Axboe

--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[BUG] 2.6.24-git usb reset problems, Jens Axboe, (Mon Jan 28, 4:49 pm)
Re: [BUG] 2.6.24-git usb reset problems, Greg KH, (Mon Jan 28, 5:21 pm)
Re: [BUG] 2.6.24-git usb reset problems, Boaz Harrosh, (Tue Jan 29, 8:15 am)
Re: [BUG] 2.6.24-git usb reset problems, Matthew Dharm, (Tue Jan 29, 11:00 am)
Re: [BUG] 2.6.24-git usb reset problems, Alan Stern, (Tue Jan 29, 11:36 am)
Re: [BUG] 2.6.24-git usb reset problems, James Bottomley, (Tue Jan 29, 12:34 pm)
Re: [BUG] 2.6.24-git usb reset problems, Boaz Harrosh, (Tue Jan 29, 2:27 pm)
Re: [BUG] 2.6.24-git usb reset problems, James Bottomley, (Tue Jan 29, 2:48 pm)
Re: [BUG] 2.6.24-git usb reset problems, Boaz Harrosh, (Tue Jan 29, 2:58 pm)
Re: [BUG] 2.6.24-git usb reset problems, James Bottomley, (Tue Jan 29, 3:17 pm)
Re: [BUG] 2.6.24-git usb reset problems, Boaz Harrosh, (Tue Jan 29, 3:28 pm)
Re: [BUG] 2.6.24-git usb reset problems, Boaz Harrosh, (Tue Jan 29, 11:54 am)
Re: [BUG] 2.6.24-git usb reset problems, Jens Axboe, (Tue Jan 29, 9:54 am)
Re: [BUG] 2.6.24-git usb reset problems, Boaz Harrosh, (Tue Jan 29, 10:06 am)
Re: [BUG] 2.6.24-git usb reset problems, Boaz Harrosh, (Tue Jan 29, 10:13 am)
Re: [BUG] 2.6.24-git usb reset problems, Jens Axboe, (Tue Jan 29, 10:11 am)
Re: [BUG] 2.6.24-git usb reset problems, Oliver Neukum, (Tue Jan 29, 10:31 am)
Re: [BUG] 2.6.24-git usb reset problems, Boaz Harrosh, (Tue Jan 29, 11:50 am)
Re: [BUG] 2.6.24-git usb reset problems, Oliver Neukum, (Tue Jan 29, 1:42 pm)
Re: [BUG] 2.6.24-git usb reset problems, Jens Axboe, (Tue Jan 29, 10:31 am)
Re: [BUG] 2.6.24-git usb reset problems, Jens Axboe, (Tue Jan 29, 2:39 pm)
Re: [BUG] 2.6.24-git usb reset problems, Matthew Dharm, (Tue Jan 29, 3:10 pm)
Re: [BUG] 2.6.24-git usb reset problems, James Bottomley, (Tue Jan 29, 3:33 pm)
Re: [BUG] 2.6.24-git usb reset problems, Jens Axboe, (Tue Jan 29, 3:35 pm)
Re: [BUG] 2.6.24-git usb reset problems, Jens Axboe, (Tue Jan 29, 3:45 pm)
Re: [BUG] 2.6.24-git usb reset problems, Geert Uytterhoeven, (Wed Jan 30, 6:27 am)
Re: [BUG] 2.6.24-git usb reset problems, Jens Axboe, (Wed Jan 30, 6:38 am)
Re: [BUG] 2.6.24-git usb reset problems, James Bottomley, (Wed Jan 30, 10:38 am)
Re: [BUG] 2.6.24-git usb reset problems, Jens Axboe, (Wed Jan 30, 2:06 pm)
Re: [BUG] 2.6.24-git usb reset problems, Jens Axboe, (Wed Jan 30, 3:07 pm)
Re: [BUG] 2.6.24-git usb reset problems, Boaz Harrosh, (Tue Jan 29, 3:58 pm)
Re: [BUG] 2.6.24-git usb reset problems, Boaz Harrosh, (Tue Jan 29, 4:09 pm)
Re: [BUG] 2.6.24-git usb reset problems, Jens Axboe, (Tue Jan 29, 4:13 pm)
Re: [BUG] 2.6.24-git usb reset problems, Boaz Harrosh, (Tue Jan 29, 4:26 pm)
Re: [BUG] 2.6.24-git usb reset problems, Jens Axboe, (Tue Jan 29, 4:03 pm)
Re: [BUG] 2.6.24-git usb reset problems, James Bottomley, (Tue Jan 29, 4:04 pm)
Re: [BUG] 2.6.24-git usb reset problems, Jens Axboe, (Tue Jan 29, 4:06 pm)
Re: [BUG] 2.6.24-git usb reset problems, James Bottomley, (Tue Jan 29, 4:24 pm)
Re: [BUG] 2.6.24-git usb reset problems, Boaz Harrosh, (Tue Jan 29, 4:53 pm)
Re: [BUG] 2.6.24-git usb reset problems, Jens Axboe, (Tue Jan 29, 3:15 pm)
Re: [BUG] 2.6.24-git usb reset problems, Matthew Dharm, (Tue Jan 29, 3:37 pm)
Re: [BUG] 2.6.24-git usb reset problems, Jens Axboe, (Tue Jan 29, 3:26 pm)
Re: [BUG] 2.6.24-git usb reset problems, Boaz Harrosh, (Tue Jan 29, 3:09 pm)
Re: [BUG] 2.6.24-git usb reset problems, Boaz Harrosh, (Tue Jan 29, 10:14 am)
Re: [BUG] 2.6.24-git usb reset problems, Jens Axboe, (Tue Jan 29, 3:48 am)