What ever happened to the following (admittedly snipped up) patch from a year ago, was there a reason this initiative was dropped? If so, please state what I missed? The attached aacraid specific portion of the following patch is against current scsi-misc-2.6 ObligatoryDisclaimer: Please accept my condolences regarding Outlook's handling of patch attachments. Signed-off-by: Mark Salyzyn <aacraid@xxxxxxxxxxx> drivers/scsi/aacraid/aachba.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) Sincerely -- Mark Salyzyn > -----Original Message----- > From: linux-kernel-owner@xxxxxxxxxxxxxxx > [mailto:linux-kernel-owner@xxxxxxxxxxxxxxx] On Behalf Of Mike Christie > Sent: Tuesday, July 25, 2006 5:40 AM > To: linux-scsi@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; > axboe@xxxxxxx > Subject: [PATCH 2/2] blk request timeout handler: > > Convert scsi to the block layer request timer code. The block layer > functions are exactly the ones that used to live in scsi, so the > conversion is mostly renames and removal of code from scsi. > > Signed-off-by: Mike Christie <michaelc@xxxxxxxxxxx> > > diff -aurp linux-2.6.18-rc2/drivers/scsi/aacraid/aachba.c > linux-2.6.18-rc2.blkeh/drivers/scsi/aacraid/aachba.c > --- linux-2.6.18-rc2/drivers/scsi/aacraid/aachba.c > 2006-07-15 17:53:08.000000000 -0400 > +++ linux-2.6.18-rc2.blkeh/drivers/scsi/aacraid/aachba.c > 2006-07-25 05:13:04.000000000 -0400 > @@ -2113,7 +2113,7 @@ static int aac_send_srb_fib(struct scsi_ > srbcmd->id = cpu_to_le32(scmd_id(scsicmd)); > srbcmd->lun = cpu_to_le32(scsicmd->device->lun); > srbcmd->flags = cpu_to_le32(flag); > - timeout = scsicmd->timeout_per_command/HZ; > + timeout = scsicmd->request->timeout/HZ; > if(timeout == 0){ > timeout = 1; > } . . . > diff -aurp linux-2.6.18-rc2/drivers/scsi/ips.c > linux-2.6.18-rc2.blkeh/drivers/scsi/ips.c > --- linux-2.6.18-rc2/drivers/scsi/ips.c 2006-07-15 > 17:53:08.000000000 -0400 > +++ linux-2.6.18-rc2.blkeh/drivers/scsi/ips.c 2006-07-25 > 04:47:04.000000000 -0400 > @@ -4030,7 +4030,7 @@ ips_send_cmd(ips_ha_t * ha, ips_scb_t * > scb->cmd.dcdb.segment_4G = 0; > scb->cmd.dcdb.enhanced_sg = 0; > > - TimeOut = scb->scsi_cmd->timeout_per_command; > + TimeOut = scb->scsi_cmd->request->timeout; > > if (ha->subsys->param[4] & 0x00100000) { > /* If NEW Tape DCDB is Supported */ > if (!scb->sg_len) { . . . > diff -aurp linux-2.6.18-rc2/include/scsi/scsi_cmnd.h > linux-2.6.18-rc2.blkeh/include/scsi/scsi_cmnd.h > --- linux-2.6.18-rc2/include/scsi/scsi_cmnd.h 2006-07-15 > 17:53:08.000000000 -0400 > +++ linux-2.6.18-rc2.blkeh/include/scsi/scsi_cmnd.h > 2006-07-25 03:30:46.000000000 -0400 > @@ -55,7 +55,6 @@ struct scsi_cmnd { > > int retries; > int allowed; > - int timeout_per_command; > > unsigned char cmd_len; > unsigned char old_cmd_len; > @@ -67,7 +66,6 @@ struct scsi_cmnd { > unsigned char cmnd[MAX_COMMAND_SIZE]; > unsigned request_bufflen; /* Actual request size */ > > - struct timer_list eh_timeout; /* Used to time out the > command. */ > void *request_buffer; /* Actual requested buffer */ > > /* These elements define the operation we ultimately > want to perform */ > @@ -145,7 +143,6 @@ extern struct scsi_cmnd *scsi_get_comman > extern void scsi_put_command(struct scsi_cmnd *); > extern void scsi_io_completion(struct scsi_cmnd *, unsigned int); > extern void scsi_finish_command(struct scsi_cmnd *cmd); > -extern void scsi_req_abort_cmd(struct scsi_cmnd *cmd); > > extern void *scsi_kmap_atomic_sg(struct scatterlist *sg, int > sg_count, > size_t *offset, size_t *len); > diff -aurp linux-2.6.18-rc2/include/scsi/scsi_device.h > linux-2.6.18-rc2.blkeh/include/scsi/scsi_device.h > --- linux-2.6.18-rc2/include/scsi/scsi_device.h > 2006-07-15 17:53:08.000000000 -0400 > +++ linux-2.6.18-rc2.blkeh/include/scsi/scsi_device.h > 2006-07-25 03:30:46.000000000 -0400 > @@ -203,7 +203,6 @@ extern struct scsi_device *__scsi_add_de > extern int scsi_add_device(struct Scsi_Host *host, uint channel, > uint target, uint lun); > extern void scsi_remove_device(struct scsi_device *); > -extern int scsi_device_cancel(struct scsi_device *, int); > > extern int scsi_device_get(struct scsi_device *); > extern void scsi_device_put(struct scsi_device *); > diff -aurp linux-2.6.18-rc2/include/scsi/scsi_host.h > linux-2.6.18-rc2.blkeh/include/scsi/scsi_host.h > --- linux-2.6.18-rc2/include/scsi/scsi_host.h 2006-07-15 > 17:53:08.000000000 -0400 > +++ linux-2.6.18-rc2.blkeh/include/scsi/scsi_host.h > 2006-07-25 03:30:46.000000000 -0400 > @@ -34,13 +34,6 @@ struct scsi_transport_template; > #define DISABLE_CLUSTERING 0 > #define ENABLE_CLUSTERING 1 > > -enum scsi_eh_timer_return { > - EH_NOT_HANDLED, > - EH_HANDLED, > - EH_RESET_TIMER, > -}; > - > - > struct scsi_host_template { > struct module *module; > const char *name; > diff -aurp linux-2.6.18-rc2/include/scsi/scsi_transport.h > linux-2.6.18-rc2.blkeh/include/scsi/scsi_transport.h > --- linux-2.6.18-rc2/include/scsi/scsi_transport.h > 2006-07-15 17:53:08.000000000 -0400 > +++ linux-2.6.18-rc2.blkeh/include/scsi/scsi_transport.h > 2006-07-25 03:30:46.000000000 -0400 > @@ -21,6 +21,7 @@ > #define SCSI_TRANSPORT_H > > #include <linux/transport_class.h> > +#include <linux/blkdev.h> > #include <scsi/scsi_host.h> > > struct scsi_transport_template { > @@ -63,7 +64,7 @@ struct scsi_transport_template { > * begin counting again > * EH_NOT_HANDLED Begin normal error recovery > */ > - enum scsi_eh_timer_return (* eh_timed_out)(struct scsi_cmnd *); > + enum blk_eh_timer_return (* eh_timed_out)(struct scsi_cmnd *); > }; > > #define transport_class_to_shost(tc) \
Attachment:
aacraid_blktimeout.patch
Description: aacraid_blktimeout.patch