diff -Nur vhba-module-1.2.1.orig//kat/have_scsi_macros.c vhba-module-1.2.1/kat/have_scsi_macros.c --- vhba-module-1.2.1.orig//kat/have_scsi_macros.c 2009-01-17 17:21:16.000000000 -0600 +++ vhba-module-1.2.1/kat/have_scsi_macros.c 2010-06-30 23:41:37.203194236 -0500 @@ -1,4 +1,3 @@ -#include #include void testfunc (void); diff -Nur vhba-module-1.2.1.orig//kat/scatterlist_has_page_link.c vhba-module-1.2.1/kat/scatterlist_has_page_link.c --- vhba-module-1.2.1.orig//kat/scatterlist_has_page_link.c 2009-01-17 17:21:16.000000000 -0600 +++ vhba-module-1.2.1/kat/scatterlist_has_page_link.c 2010-06-30 23:40:49.982069552 -0500 @@ -1,4 +1,3 @@ -#include #include /* Note: scatterlist.page_link is used in kernel (2.6.24 <= version < X) */ diff -Nur vhba-module-1.2.1.orig//vhba.c vhba-module-1.2.1/vhba.c --- vhba-module-1.2.1.orig//vhba.c 2009-01-17 17:21:16.000000000 -0600 +++ vhba-module-1.2.1/vhba.c 2010-06-30 23:40:14.430097774 -0500 @@ -1,7 +1,7 @@ /* * vhba.c * - * Copyright (C) 2007 Chia-I Wu + * Copyright (C) 2007-2010 Chia-I Wu * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -26,6 +26,10 @@ #include #include #include +#include +#ifdef CONFIG_COMPAT +#include +#endif #include #include #include @@ -52,7 +56,7 @@ dev_warn(&(scmd)->device->sdev_gendev, fmt, ##a) -#define VHBA_MAX_SECTORS_PER_IO 128 +#define VHBA_MAX_SECTORS_PER_IO 256 #define VHBA_MAX_ID 32 #define VHBA_CAN_QUEUE 32 #define VHBA_INVALID_ID VHBA_MAX_ID @@ -671,7 +675,7 @@ return ret; } -static int vhba_ctl_ioctl (struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg) +static long vhba_ctl_ioctl (struct file *file, unsigned int cmd, unsigned long arg) { struct vhba_device *vdev = file->private_data; struct vhba_host *vhost; @@ -704,6 +708,15 @@ return -ENOTTY; } +#ifdef CONFIG_COMPAT +static long vhba_ctl_compat_ioctl (struct file *file, unsigned int cmd, unsigned long arg) +{ + unsigned long compat_arg = (unsigned long)compat_ptr(arg); + + return vhba_ctl_ioctl(file, cmd, compat_arg); +} +#endif + static unsigned int vhba_ctl_poll(struct file *file, poll_table *wait) { struct vhba_device *vdev = file->private_data; @@ -781,7 +794,10 @@ .read = vhba_ctl_read, .write = vhba_ctl_write, .poll = vhba_ctl_poll, - .ioctl = vhba_ctl_ioctl, + .unlocked_ioctl = vhba_ctl_ioctl, +#ifdef CONFIG_COMPAT + .compat_ioctl = vhba_ctl_compat_ioctl, +#endif }; static struct miscdevice vhba_miscdev = {