vserver 1.9.3
[linux-2.6.git] / drivers / scsi / scsi_ioctl.c
index bc5869b..e26adda 100644 (file)
@@ -391,6 +391,21 @@ int scsi_ioctl(struct scsi_device *sdev, int cmd, void __user *arg)
        if (!scsi_block_when_processing_errors(sdev))
                return -ENODEV;
 
+       /* Check for deprecated ioctls ... all the ioctls which don't
+        * follow the new unique numbering scheme are deprecated */
+       switch (cmd) {
+       case SCSI_IOCTL_SEND_COMMAND:
+       case SCSI_IOCTL_TEST_UNIT_READY:
+       case SCSI_IOCTL_BENCHMARK_COMMAND:
+       case SCSI_IOCTL_SYNC:
+       case SCSI_IOCTL_START_UNIT:
+       case SCSI_IOCTL_STOP_UNIT:
+               printk(KERN_WARNING "program %s is using a deprecated SCSI ioctl, please convert it to SG_IO\n", current->comm);
+               break;
+       default:
+               break;
+       }
+
        switch (cmd) {
        case SCSI_IOCTL_GET_IDLUN:
                if (verify_area(VERIFY_WRITE, arg, sizeof(struct scsi_idlun)))
@@ -417,12 +432,8 @@ int scsi_ioctl(struct scsi_device *sdev, int cmd, void __user *arg)
        case SCSI_IOCTL_DOORUNLOCK:
                return scsi_set_medium_removal(sdev, SCSI_REMOVAL_ALLOW);
        case SCSI_IOCTL_TEST_UNIT_READY:
-               scsi_cmd[0] = TEST_UNIT_READY;
-               scsi_cmd[1] = 0;
-               scsi_cmd[2] = scsi_cmd[3] = scsi_cmd[5] = 0;
-               scsi_cmd[4] = 0;
-               return ioctl_internal_command(sdev, scsi_cmd,
-                                  IOCTL_NORMAL_TIMEOUT, NORMAL_RETRIES);
+               return scsi_test_unit_ready(sdev, IOCTL_NORMAL_TIMEOUT,
+                                           NORMAL_RETRIES);
        case SCSI_IOCTL_START_UNIT:
                scsi_cmd[0] = START_STOP;
                scsi_cmd[1] = 0;