Kai Makisara wrote:
The command triggering these problems is a 6-byte read of 10240 bytes. It
should not a this point return anything but finish with some sense data.
I am debugging the problem but it is going slowly because the system disk
is a SCSI disk. I have to be careful with the debugging output and changes
outside st.c require a reboot ;-) So far I have found out that
scsi_check_sense() is called correctly and returns SUCCESS as it should.
What happens after that is a mystery.
If we sent the command as multiple segments then since scsi_generic_done
just does this
scsi_io_completion(cmd, cmd->result == 0 ? cmd->bufflen : 0, 0);
we could up gettting here in scsi_io_completion() (or depding on the
sense we could get retired further up in that function).
/*
* Mark a single buffer as not uptodate. Queue the remainder.
* We sometimes get this cruft in the event that a medium error
* isn't properly reported.
*/
block_bytes = req->hard_cur_sectors << 9;
if (!block_bytes)
block_bytes = req->data_len;
scsi_end_request(cmd, 0, block_bytes, 1);
and if this command has multiple segments we only partially complete the
command and the rest gets retried.
-
: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html