public inbox for linux-scsi@vger.kernel.org
 help / color / mirror / Atom feed
* ide-scsi command status bug
@ 2002-07-08 20:49 Tony Battersby
  2002-07-09  0:36 ` Douglas Gilbert
  2002-07-17  1:04 ` Luben Tuikov
  0 siblings, 2 replies; 4+ messages in thread
From: Tony Battersby @ 2002-07-08 20:49 UTC (permalink / raw)
  To: linux-scsi

Hello,

I have tracked down a problem with incorrect status being returned for a
command sent through sg and ide-scsi.  I am using vanilla 2.4.17.  Here is
what is happening:

The device returns CHECK CONDITION for a command sent to it from sg and
ide-scsi.
The following line executes in idescsi_end_request() in ide-scsi.c:
pc->scsi_cmd->result = (CHECK_CONDITION << 1) | (DID_OK << 16);
ide-scsi calls the callback completion function.
An internal request sense is queued.
The request sense completes successfully.
The following line executes in idescsi_end_request() in ide-scsi.c:
pc->scsi_cmd->result = (DID_OK << 16)
ide-scsi calls the callback completion function for the request sense
command.

In my userspace program, sg_io_hdr_t { status, masked_status } are both
zero, but sg_io_hdr_t { driver_status } & DRIVER_SENSE is set and the sense
data is valid.  It appears to me as if the status from the request sense
command overwrote the original CHECK CONDITION status.  I verified this by
forcing all request sense commands to return a status of 0x01 (reserved bit
set) in idescsi_end_request() in ide-scsi.c, and sure enough, I got a status
of 0x01 for the failed command in sg_io_hdr_t { status }.

I have not tested any other kernel versions.  I am working around the
problem for now by faking a CHECK CONDITION status when driver_status &
DRIVER_SENSE in my program.

Anthony J. Battersby
Cybernetics


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2002-07-17 13:33 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2002-07-08 20:49 ide-scsi command status bug Tony Battersby
2002-07-09  0:36 ` Douglas Gilbert
2002-07-17  1:04 ` Luben Tuikov
2002-07-17 13:33   ` Tony Battersby

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox