Add compat_ioctl entry point to SD

Requires the compat_ioctl for block devices patch I sent earlier
to linux-kernel.

Signed-off-by: Andi Kleen <[EMAIL PROTECTED]>

diff -u linux-2.6.11-rc1-bk4/drivers/scsi/sd.c-o 
linux-2.6.11-rc1-bk4/drivers/scsi/sd.c
--- linux-2.6.11-rc1-bk4/drivers/scsi/sd.c-o    2005-01-17 10:39:40.000000000 
+0100
+++ linux-2.6.11-rc1-bk4/drivers/scsi/sd.c      2005-01-18 04:55:17.000000000 
+0100
@@ -738,11 +738,50 @@
        sd_revalidate_disk(sdkp->disk);
 }
 
+
+#ifdef CONFIG_COMPAT
+/* 
+ * This gets directly called from VFS. When the ioctl 
+ * is not recognized we go back to the other translation paths. 
+ */
+static long sd_compat_ioctl(struct file *file, unsigned int cmd, unsigned long 
arg)
+{
+       struct block_device *bdev = file->f_dentry->d_inode->i_bdev;
+       struct gendisk *disk = bdev->bd_disk;
+       struct scsi_device *sdev = scsi_disk(disk)->device;
+
+       /*
+        * If we are in the middle of error recovery, don't let anyone
+        * else try and use this device.  Also, if error recovery fails, it
+        * may try and take the device offline, in which case all further
+        * access to the device is prohibited.
+        */
+       if (!scsi_block_when_processing_errors(sdev))
+               return -ENODEV;
+              
+       if (sdev->host->hostt->compat_ioctl) {
+               int ret;
+
+               ret = sdev->host->hostt->compat_ioctl(sdev, cmd, (void __user 
*)arg);
+
+               return ret;
+       }
+
+       /* 
+        * Let the static ioctl translation table take care of it.
+        */
+       return -ENOIOCTLCMD; 
+}
+#endif
+
 static struct block_device_operations sd_fops = {
        .owner                  = THIS_MODULE,
        .open                   = sd_open,
        .release                = sd_release,
        .ioctl                  = sd_ioctl,
+#ifdef CONFIG_COMPAT
+       .compat_ioctl           = sd_compat_ioctl,
+#endif
        .media_changed          = sd_media_changed,
        .revalidate_disk        = sd_revalidate_disk,
 };
-
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to