[PATCH] s390: remove dynamic dasd ioctls
authorChristoph Hellwig <hch@lst.de>
Fri, 24 Mar 2006 11:15:22 +0000 (03:15 -0800)
committerLinus Torvalds <torvalds@g5.osdl.org>
Fri, 24 Mar 2006 15:33:17 +0000 (07:33 -0800)
Now that there are no more users of the awkward dynamic ioctl hack we can
remove the code to support it.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
drivers/s390/block/dasd_int.h
drivers/s390/block/dasd_ioctl.c

index e948555..6d7fa30 100644 (file)
  */
 struct dasd_device;
 
-typedef int (*dasd_ioctl_fn_t) (struct block_device *bdev, int no, long args);
-
-struct dasd_ioctl {
-       struct list_head list;
-       struct module *owner;
-       int no;
-       dasd_ioctl_fn_t handler;
-};
-
 typedef enum {
        dasd_era_fatal = -1,    /* no chance to recover              */
        dasd_era_none = 0,      /* don't recover, everything alright */
@@ -524,8 +515,6 @@ int dasd_scan_partitions(struct dasd_device *);
 void dasd_destroy_partitions(struct dasd_device *);
 
 /* externals in dasd_ioctl.c */
-int  dasd_ioctl_no_register(struct module *, int, dasd_ioctl_fn_t);
-int  dasd_ioctl_no_unregister(struct module *, int, dasd_ioctl_fn_t);
 int  dasd_ioctl(struct inode *, struct file *, unsigned int, unsigned long);
 long dasd_compat_ioctl(struct file *, unsigned int, unsigned long);
 
index c8319be..e1dc0ff 100644 (file)
 
 #include "dasd_int.h"
 
-/*
- * SECTION: ioctl functions.
- */
-static struct list_head dasd_ioctl_list = LIST_HEAD_INIT(dasd_ioctl_list);
-
-/*
- * Find the ioctl with number no.
- */
-static struct dasd_ioctl *
-dasd_find_ioctl(int no)
-{
-       struct dasd_ioctl *ioctl;
-
-       list_for_each_entry (ioctl, &dasd_ioctl_list, list)
-               if (ioctl->no == no)
-                       return ioctl;
-       return NULL;
-}
-
-/*
- * Register ioctl with number no.
- */
-int
-dasd_ioctl_no_register(struct module *owner, int no, dasd_ioctl_fn_t handler)
-{
-       struct dasd_ioctl *new;
-       if (dasd_find_ioctl(no))
-               return -EBUSY;
-       new = kmalloc(sizeof (struct dasd_ioctl), GFP_KERNEL);
-       if (new == NULL)
-               return -ENOMEM;
-       new->owner = owner;
-       new->no = no;
-       new->handler = handler;
-       list_add(&new->list, &dasd_ioctl_list);
-       return 0;
-}
-
-/*
- * Deregister ioctl with number no.
- */
-int
-dasd_ioctl_no_unregister(struct module *owner, int no, dasd_ioctl_fn_t handler)
-{
-       struct dasd_ioctl *old = dasd_find_ioctl(no);
-       if (old == NULL)
-               return -ENOENT;
-       if (old->no != no || old->handler != handler || owner != old->owner)
-               return -EINVAL;
-       list_del(&old->list);
-       kfree(old);
-       return 0;
-}
 
 static int
 dasd_ioctl_api_version(void __user *argp)
@@ -429,8 +376,6 @@ dasd_ioctl(struct inode *inode, struct file *file,
        struct block_device *bdev = inode->i_bdev;
        struct dasd_device *device = bdev->bd_disk->private_data;
        void __user *argp = (void __user *)arg;
-       struct dasd_ioctl *ioctl;
-       int rc;
 
        if (!device)
                 return -ENODEV;
@@ -477,17 +422,6 @@ dasd_ioctl(struct inode *inode, struct file *file,
                                return rval;
                }
 
-               /* else resort to the deprecated dynamic ioctl list */
-               list_for_each_entry(ioctl, &dasd_ioctl_list, list) {
-                       if (ioctl->no == cmd) {
-                               /* Found a matching ioctl. Call it. */
-                               if (!try_module_get(ioctl->owner))
-                                       continue;
-                               rc = ioctl->handler(bdev, cmd, arg);
-                               module_put(ioctl->owner);
-                               return rc;
-                       }
-               }
                return -EINVAL;
        }
 }
@@ -503,6 +437,3 @@ dasd_compat_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
 
        return (rval == -EINVAL) ? -ENOIOCTLCMD : rval;
 }
-
-EXPORT_SYMBOL(dasd_ioctl_no_register);
-EXPORT_SYMBOL(dasd_ioctl_no_unregister);