scsi_mode_sense — issue a mode sense, falling back from 10 to six bytes if necessary.


int scsi_mode_sense (struct scsi_device * sdev,
 int dbd,
 int modepage,
 unsigned char * buffer,
 int len,
 int timeout,
 int retries,
 struct scsi_mode_data * data,
 struct scsi_sense_hdr * sshdr);


struct scsi_device * sdev

SCSI device to be queried

int dbd

set if mode sense will allow block descriptors to be returned

int modepage

mode page being requested

unsigned char * buffer

request buffer (may not be smaller than eight bytes)

int len

length of request buffer.

int timeout

command timeout

int retries

number of retries before failing

struct scsi_mode_data * data

returns a structure abstracting the mode header data

struct scsi_sense_hdr * sshdr

place to put sense data (or NULL if no sense to be collected). must be SCSI_SENSE_BUFFERSIZE big.


Returns zero if unsuccessful, or the header offset (either 4 or 8 depending on whether a six or ten byte command was issued) if successful.