tech-kern archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: physio split the request.. cannot proceed
On Mon, Dec 23, 2013 at 02:54:42PM +0100, J. Hannken-Illjes wrote:
> > LTFS20010D SCSI request: [ 08 02 01 00 00 00 ] Requested length=65536
> > LTFS20089D Driver detail: errno = 0x0
> > LTFS20089D Driver detail: status = 0x2
> > LTFS20089D Driver detail: retsts = 0x4
> > LTFS20089D Driver detail: error = 0x0
>
> This is XS_SHORTSENSE (it also matches retsts being 0x04).
Is it? I found 08 was READ(6) here:
http://en.wikipedia.org/wiki/SCSI_commands
I added a REQUEST_SENSE command after the failure, and here I am:
LTFS20012D SCSI sense : 70 00 05 00 00 00 00 10 00 00 00 00 24 00 00 CC 00 01
00 00 00 00 00 00 00 00 00 00 00 00 00 00
If I read it correctly, this is:
5-24-00 Illegal Request - invalid field in CDB (Command Descriptor Block)
I do not know how to decode the key specific data: CC 00 01
The READ(6) command is assembled this way (silion is passed from
a bool named unusal_size). The field usage does not fit what
Wikipedia says about that command.
static int _cdb_read(void *device, char *buf, size_t count, bool silion)
{
ltotape_scsi_io_type *sio = (ltotape_scsi_io_type*)device;
int status;
/*
* Set up the cdb:
*/
sio->cdb[0] = CMDread;
sio->cdb[1] = (silion) ? 0x02 : 0x00;
sio->cdb[2] = (unsigned char) (count >> 16 );
sio->cdb[3] = (unsigned char) (count >> 8 );
sio->cdb[4] = (unsigned char) (count & 0xFF);
sio->cdb[5] = 0;
sio->cdb_length = 6; /* six-byte cdb */
(...)
--
Emmanuel Dreyfus
manu%netbsd.org@localhost
Home |
Main Index |
Thread Index |
Old Index