Messages in this thread Patch in this message |  | | Date | Sun, 7 Jul 1996 20:34:44 -0700 | From | "Leonard N. Zubkoff" <> | Subject | Re: 2.0.3 Internal error scsi.c 1672 |
| |
From: nigel@sgi.com (Nigel Gamble) Date: 8 Jul 1996 03:16:22 GMT
On 7 Jul 1996, Nigel Gamble wrote: > When fscking a dirty filesystem with 2.0.3 (and 2.0.1 and 2.0.2, > I believe), I get this error multiple times from drivers/scsi/scsi.c: > > Internal error scsi.c 1672 > > The filesystem is marked clean, even though the fsck has not in > fact run correctly. I had to press reset and reboot 2.0.0 to > ensure that all my filesystems were correctly fscked.
Mystery solved. The older mask and values were taken from the SCSI-1 spec, it seems. When the field was expanded to 5 bits from 4 based on the SCSI-2 spec, there were new cases we needed to handle. The new values were cleverly allocated so that masking them to 4 bits would cause the right sort of response.
Leonard
--- linux/include/scsi/scsi.h- Wed Jun 26 01:05:26 1996 +++ linux/include/scsi/scsi.h Sun Jul 7 20:08:48 1996 @@ -94,7 +94,8 @@ #define INTERMEDIATE_GOOD 0x08 #define INTERMEDIATE_C_GOOD 0x0a #define RESERVATION_CONFLICT 0x0c -#define QUEUE_FULL 0x1a +#define COMMAND_TERMINATED 0x11 +#define QUEUE_FULL 0x14 #define STATUS_MASK 0x3e --- linux/drivers/scsi/scsi.c- Mon Jul 1 10:14:55 1996 +++ linux/drivers/scsi/scsi.c Sun Jul 7 20:17:42 1996 @@ -1621,6 +1621,7 @@ break; case CHECK_CONDITION: + case COMMAND_TERMINATED: switch (check_sense(SCpnt)) { case 0: @@ -1652,6 +1653,7 @@ break; case BUSY: + case QUEUE_FULL: update_timeout(SCpnt, oldto); status = REDO; break;
|  |