From: Christoph Hellwig 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 Cc: Martin Schwidefsky Cc: Heiko Carstens Signed-off-by: Andrew Morton --- drivers/s390/block/dasd_int.h | 11 ---- drivers/s390/block/dasd_ioctl.c | 69 ------------------------------ 2 files changed, 80 deletions(-) diff -puN drivers/s390/block/dasd_int.h~dasd-kill-dynamic-ioctl-registration drivers/s390/block/dasd_int.h --- devel/drivers/s390/block/dasd_int.h~dasd-kill-dynamic-ioctl-registration 2006-02-23 19:41:07.000000000 -0800 +++ devel-akpm/drivers/s390/block/dasd_int.h 2006-02-23 19:41:07.000000000 -0800 @@ -68,15 +68,6 @@ */ 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 */ @@ -523,8 +514,6 @@ int dasd_scan_partitions(struct dasd_dev 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); diff -puN drivers/s390/block/dasd_ioctl.c~dasd-kill-dynamic-ioctl-registration drivers/s390/block/dasd_ioctl.c --- devel/drivers/s390/block/dasd_ioctl.c~dasd-kill-dynamic-ioctl-registration 2006-02-23 19:41:07.000000000 -0800 +++ devel-akpm/drivers/s390/block/dasd_ioctl.c 2006-02-23 19:41:07.000000000 -0800 @@ -24,59 +24,6 @@ #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 f 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 f 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, uns return (rval == -EINVAL) ? -ENOIOCTLCMD : rval; } - -EXPORT_SYMBOL(dasd_ioctl_no_register); -EXPORT_SYMBOL(dasd_ioctl_no_unregister); _