aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@lst.de>2006-03-24 06:15:22 -0500
committerLinus Torvalds <torvalds@g5.osdl.org>2006-03-24 10:33:17 -0500
commit82814dbafdeef53e13e07134eb3b7be3c975fd21 (patch)
treec54dded7519743b678b73fabffea6108fb456eb6
parent8b2eb664ce9dcba8b54ececf5e057470c47e57f7 (diff)
[PATCH] s390: remove dynamic dasd ioctls
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>
-rw-r--r--drivers/s390/block/dasd_int.h11
-rw-r--r--drivers/s390/block/dasd_ioctl.c69
2 files changed, 0 insertions, 80 deletions
diff --git a/drivers/s390/block/dasd_int.h b/drivers/s390/block/dasd_int.h
index e9485559e22e..6d7fa30fa0b8 100644
--- a/drivers/s390/block/dasd_int.h
+++ b/drivers/s390/block/dasd_int.h
@@ -69,15 +69,6 @@
69 */ 69 */
70struct dasd_device; 70struct dasd_device;
71 71
72typedef int (*dasd_ioctl_fn_t) (struct block_device *bdev, int no, long args);
73
74struct dasd_ioctl {
75 struct list_head list;
76 struct module *owner;
77 int no;
78 dasd_ioctl_fn_t handler;
79};
80
81typedef enum { 72typedef enum {
82 dasd_era_fatal = -1, /* no chance to recover */ 73 dasd_era_fatal = -1, /* no chance to recover */
83 dasd_era_none = 0, /* don't recover, everything alright */ 74 dasd_era_none = 0, /* don't recover, everything alright */
@@ -524,8 +515,6 @@ int dasd_scan_partitions(struct dasd_device *);
524void dasd_destroy_partitions(struct dasd_device *); 515void dasd_destroy_partitions(struct dasd_device *);
525 516
526/* externals in dasd_ioctl.c */ 517/* externals in dasd_ioctl.c */
527int dasd_ioctl_no_register(struct module *, int, dasd_ioctl_fn_t);
528int dasd_ioctl_no_unregister(struct module *, int, dasd_ioctl_fn_t);
529int dasd_ioctl(struct inode *, struct file *, unsigned int, unsigned long); 518int dasd_ioctl(struct inode *, struct file *, unsigned int, unsigned long);
530long dasd_compat_ioctl(struct file *, unsigned int, unsigned long); 519long dasd_compat_ioctl(struct file *, unsigned int, unsigned long);
531 520
diff --git a/drivers/s390/block/dasd_ioctl.c b/drivers/s390/block/dasd_ioctl.c
index c8319bef2730..e1dc0ffee027 100644
--- a/drivers/s390/block/dasd_ioctl.c
+++ b/drivers/s390/block/dasd_ioctl.c
@@ -24,59 +24,6 @@
24 24
25#include "dasd_int.h" 25#include "dasd_int.h"
26 26
27/*
28 * SECTION: ioctl functions.
29 */
30static struct list_head dasd_ioctl_list = LIST_HEAD_INIT(dasd_ioctl_list);
31
32/*
33 * Find the ioctl with number no.
34 */
35static struct dasd_ioctl *
36dasd_find_ioctl(int no)
37{
38 struct dasd_ioctl *ioctl;
39
40 list_for_each_entry (ioctl, &dasd_ioctl_list, list)
41 if (ioctl->no == no)
42 return ioctl;
43 return NULL;
44}
45
46/*
47 * Register ioctl with number no.
48 */
49int
50dasd_ioctl_no_register(struct module *owner, int no, dasd_ioctl_fn_t handler)
51{
52 struct dasd_ioctl *new;
53 if (dasd_find_ioctl(no))
54 return -EBUSY;
55 new = kmalloc(sizeof (struct dasd_ioctl), GFP_KERNEL);
56 if (new == NULL)
57 return -ENOMEM;
58 new->owner = owner;
59 new->no = no;
60 new->handler = handler;
61 list_add(&new->list, &dasd_ioctl_list);
62 return 0;
63}
64
65/*
66 * Deregister ioctl with number no.
67 */
68int
69dasd_ioctl_no_unregister(struct module *owner, int no, dasd_ioctl_fn_t handler)
70{
71 struct dasd_ioctl *old = dasd_find_ioctl(no);
72 if (old == NULL)
73 return -ENOENT;
74 if (old->no != no || old->handler != handler || owner != old->owner)
75 return -EINVAL;
76 list_del(&old->list);
77 kfree(old);
78 return 0;
79}
80 27
81static int 28static int
82dasd_ioctl_api_version(void __user *argp) 29dasd_ioctl_api_version(void __user *argp)
@@ -429,8 +376,6 @@ dasd_ioctl(struct inode *inode, struct file *file,
429 struct block_device *bdev = inode->i_bdev; 376 struct block_device *bdev = inode->i_bdev;
430 struct dasd_device *device = bdev->bd_disk->private_data; 377 struct dasd_device *device = bdev->bd_disk->private_data;
431 void __user *argp = (void __user *)arg; 378 void __user *argp = (void __user *)arg;
432 struct dasd_ioctl *ioctl;
433 int rc;
434 379
435 if (!device) 380 if (!device)
436 return -ENODEV; 381 return -ENODEV;
@@ -477,17 +422,6 @@ dasd_ioctl(struct inode *inode, struct file *file,
477 return rval; 422 return rval;
478 } 423 }
479 424
480 /* else resort to the deprecated dynamic ioctl list */
481 list_for_each_entry(ioctl, &dasd_ioctl_list, list) {
482 if (ioctl->no == cmd) {
483 /* Found a matching ioctl. Call it. */
484 if (!try_module_get(ioctl->owner))
485 continue;
486 rc = ioctl->handler(bdev, cmd, arg);
487 module_put(ioctl->owner);
488 return rc;
489 }
490 }
491 return -EINVAL; 425 return -EINVAL;
492 } 426 }
493} 427}
@@ -503,6 +437,3 @@ dasd_compat_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
503 437
504 return (rval == -EINVAL) ? -ENOIOCTLCMD : rval; 438 return (rval == -EINVAL) ? -ENOIOCTLCMD : rval;
505} 439}
506
507EXPORT_SYMBOL(dasd_ioctl_no_register);
508EXPORT_SYMBOL(dasd_ioctl_no_unregister);