ide-scsi 2.5.10-dj1 compilation failure
PATCH 1/1 ide-scsi 2.5.10-dj1 compilation failure
Christoph Lameter <[email protected]> reported this compile error in lk 2.5.10-dj1:
Quoted 4 lines
ide-scsi.c:837: unknown field
abort' specified in initializer ide-scsi.c:837: warning: initialization from incompatible pointer type ide-scsi.c:838: unknown fieldreset' specified in initializer ide-scsi.c:838: warning: initialization from incompatible pointer type
Below is a patch which attempts to do the right thing:
it wires up the scsi new eh handling and attempts to do a device reset.
It has been tested and oopses in start_request() inside ide.c when a device reset is issued :-) Since the previous ide-scsi logic just ignored scsi error handling, it isn't really a whole lot worse. There is a "fix me" at the appropriate point.
Doug Gilbert
drivers/scsi/ide-scsi.c2510dj1hack renamed from drivers/scsi/ide-scsi.c +14 -8
@@ -804,14 +804,20 @@ return 0; } -int idescsi_abort (Scsi_Cmnd *cmd) +/* try to do correct thing for scsi subsystem's new eh */ +int idescsi_device_reset (Scsi_Cmnd *cmd) { - return SCSI_ABORT_SNOOZE; -} + ide_drive_t *drive = idescsi_drives[cmd->target]; + struct request req; -int idescsi_reset (Scsi_Cmnd *cmd, unsigned int resetflags) -{ - return SCSI_RESET_SUCCESS; + ide_init_drive_cmd(&req); + req.flags = REQ_SPECIAL; +/* FIX ME, the next executable line causes on oops in lk 2.5.10-dj1 + * [code copied from ide-cd's ide_cdrom_reset(), does it work?] + */ + ide_do_drive_cmd(drive, &req, ide_wait); + + return SUCCESS; } int idescsi_bios (Disk *disk, kdev_t dev, int *parm)
@@ -834,8 +840,8 @@ info: idescsi_info, ioctl: idescsi_ioctl, queuecommand: idescsi_queue, - abort: idescsi_abort, - reset: idescsi_reset, + eh_device_reset_handler: + idescsi_device_reset, bios_param: idescsi_bios, can_queue: 10, this_id: -1,