From: Kenn H. <ke...@us...> - 2005-03-21 23:44:49
|
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; |