[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [linux-2.6.18-xen] xen: Use unlocked_ioctl in evtchn, gntdev and privcmd drivers to avoid



# HG changeset patch
# User kfraser@xxxxxxxxxxxxxxxxxxxxx
# Date 1188553538 -3600
# Node ID f30b59f550c2ac03734c7a8cb63f658f16ca087a
# Parent  720571c2139e66aecb2552a59be897fda40238fa
xen: Use unlocked_ioctl in evtchn, gntdev and privcmd drivers to avoid
acquiring the BKL sempahore. Performance improvement is particularly
significant for heavy users of evtchn-notify ioctl.
Suggested by Dexuan Cui <dexuan.cui@xxxxxxxxx>
Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx>
---
 drivers/xen/evtchn/evtchn.c   |    6 +++---
 drivers/xen/gntdev/gntdev.c   |    8 ++++----
 drivers/xen/privcmd/privcmd.c |    8 ++++----
 3 files changed, 11 insertions(+), 11 deletions(-)

diff -r 720571c2139e -r f30b59f550c2 drivers/xen/evtchn/evtchn.c
--- a/drivers/xen/evtchn/evtchn.c       Thu Aug 30 16:23:39 2007 +0100
+++ b/drivers/xen/evtchn/evtchn.c       Fri Aug 31 10:45:38 2007 +0100
@@ -208,8 +208,8 @@ static void evtchn_bind_to_user(struct p
        spin_unlock_irq(&port_user_lock);
 }
 
-static int evtchn_ioctl(struct inode *inode, struct file *file,
-                       unsigned int cmd, unsigned long arg)
+static long evtchn_ioctl(struct file *file,
+                        unsigned int cmd, unsigned long arg)
 {
        int rc;
        struct per_user_data *u = file->private_data;
@@ -423,7 +423,7 @@ static const struct file_operations evtc
        .owner   = THIS_MODULE,
        .read    = evtchn_read,
        .write   = evtchn_write,
-       .ioctl   = evtchn_ioctl,
+       .unlocked_ioctl = evtchn_ioctl,
        .poll    = evtchn_poll,
        .fasync  = evtchn_fasync,
        .open    = evtchn_open,
diff -r 720571c2139e -r f30b59f550c2 drivers/xen/gntdev/gntdev.c
--- a/drivers/xen/gntdev/gntdev.c       Thu Aug 30 16:23:39 2007 +0100
+++ b/drivers/xen/gntdev/gntdev.c       Fri Aug 31 10:45:38 2007 +0100
@@ -133,7 +133,7 @@ static int gntdev_open(struct inode *ino
 static int gntdev_open(struct inode *inode, struct file *flip);
 static int gntdev_release(struct inode *inode, struct file *flip);
 static int gntdev_mmap(struct file *flip, struct vm_area_struct *vma);
-static int gntdev_ioctl (struct inode *inode, struct file *flip,
+static long gntdev_ioctl(struct file *flip,
                         unsigned int cmd, unsigned long arg);
 
 static struct file_operations gntdev_fops = {
@@ -141,7 +141,7 @@ static struct file_operations gntdev_fop
        .open = gntdev_open,
        .release = gntdev_release,
        .mmap = gntdev_mmap,
-       .ioctl = gntdev_ioctl
+       .unlocked_ioctl = gntdev_ioctl
 };
 
 /* VM operations. */
@@ -774,8 +774,8 @@ static void gntdev_vma_close(struct vm_a
 
 /* Called when an ioctl is made on the device.
  */
-static int gntdev_ioctl(struct inode *inode, struct file *flip,
-                       unsigned int cmd, unsigned long arg)
+static long gntdev_ioctl(struct file *flip,
+                        unsigned int cmd, unsigned long arg)
 {
        int rc = 0;
        gntdev_file_private_data_t *private_data = 
diff -r 720571c2139e -r f30b59f550c2 drivers/xen/privcmd/privcmd.c
--- a/drivers/xen/privcmd/privcmd.c     Thu Aug 30 16:23:39 2007 +0100
+++ b/drivers/xen/privcmd/privcmd.c     Fri Aug 31 10:45:38 2007 +0100
@@ -37,8 +37,8 @@ static int privcmd_enforce_singleshot_ma
 static int privcmd_enforce_singleshot_mapping(struct vm_area_struct *vma);
 #endif
 
-static int privcmd_ioctl(struct inode *inode, struct file *file,
-                        unsigned int cmd, unsigned long data)
+static long privcmd_ioctl(struct file *file,
+                         unsigned int cmd, unsigned long data)
 {
        int ret = -ENOSYS;
        void __user *udata = (void __user *) data;
@@ -250,8 +250,8 @@ static int privcmd_enforce_singleshot_ma
 #endif
 
 static const struct file_operations privcmd_file_ops = {
-       .ioctl = privcmd_ioctl,
-       .mmap  = privcmd_mmap,
+       .unlocked_ioctl = privcmd_ioctl,
+       .mmap = privcmd_mmap,
 };
 
 static int capabilities_read(char *page, char **start, off_t off,

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.