Update of /cvsroot/linux-vax/kernel-2.5/drivers/block
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv24924/drivers/block
Modified Files:
scsi_ioctl.c
Log Message:
Merge with 2.6.10
Index: scsi_ioctl.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.5/drivers/block/scsi_ioctl.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- scsi_ioctl.c 18 Nov 2004 09:26:57 -0000 1.2
+++ scsi_ioctl.c 21 Mar 2005 23:44:08 -0000 1.3
@@ -107,12 +107,13 @@
#define CMD_READ_SAFE 0x01
#define CMD_WRITE_SAFE 0x02
+#define CMD_WARNED 0x04
#define safe_for_read(cmd) [cmd] = CMD_READ_SAFE
#define safe_for_write(cmd) [cmd] = CMD_WRITE_SAFE
static int verify_command(struct file *file, unsigned char *cmd)
{
- static const unsigned char cmd_type[256] = {
+ static unsigned char cmd_type[256] = {
/* Basic read-only commands */
safe_for_read(TEST_UNIT_READY),
@@ -126,6 +127,7 @@
safe_for_read(INQUIRY),
safe_for_read(MODE_SENSE),
safe_for_read(MODE_SENSE_10),
+ safe_for_read(LOG_SENSE),
safe_for_read(START_STOP),
safe_for_read(GPCMD_VERIFY_10),
safe_for_read(VERIFY_16),
@@ -138,6 +140,7 @@
safe_for_read(GPCMD_PAUSE_RESUME),
/* CD/DVD data reading */
+ safe_for_read(GPCMD_READ_BUFFER_CAPACITY),
safe_for_read(GPCMD_READ_CD),
safe_for_read(GPCMD_READ_CD_MSF),
safe_for_read(GPCMD_READ_DISC_INFO),
@@ -167,6 +170,7 @@
safe_for_write(ERASE),
safe_for_write(GPCMD_MODE_SELECT_10),
safe_for_write(MODE_SELECT),
+ safe_for_write(LOG_SELECT),
safe_for_write(GPCMD_BLANK),
safe_for_write(GPCMD_CLOSE_TRACK),
safe_for_write(GPCMD_FLUSH_CACHE),
@@ -195,6 +199,11 @@
return 0;
}
+ if (!(type & CMD_WARNED)) {
+ cmd_type[cmd[0]] = CMD_WARNED;
+ printk(KERN_WARNING "scsi: unknown opcode 0x%02x\n", cmd[0]);
+ }
+
/* And root can do any command.. */
if (capable(CAP_SYS_RAWIO))
return 0;
@@ -292,11 +301,11 @@
blk_execute_rq(q, bd_disk, rq);
/* write to all output members */
- hdr->status = rq->errors;
- hdr->masked_status = (hdr->status >> 1) & 0x1f;
- hdr->msg_status = 0;
- hdr->host_status = 0;
- hdr->driver_status = 0;
+ hdr->status = 0xff & rq->errors;
+ hdr->masked_status = status_byte(rq->errors);
+ hdr->msg_status = msg_byte(rq->errors);
+ hdr->host_status = host_byte(rq->errors);
+ hdr->driver_status = driver_byte(rq->errors);
hdr->info = 0;
if (hdr->masked_status || hdr->host_status || hdr->driver_status)
hdr->info |= SG_INFO_CHECK;
|