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