Skip to content

Commit

Permalink
[PATCH] s390: remove dynamic dasd ioctls
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Christoph Hellwig authored and Linus Torvalds committed Mar 24, 2006
1 parent 8b2eb66 commit 82814db
Show file tree
Hide file tree
Showing 2 changed files with 0 additions and 80 deletions.
11 changes: 0 additions & 11 deletions drivers/s390/block/dasd_int.h
Original file line number Diff line number Diff line change
Expand Up @@ -69,15 +69,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 */
Expand Down Expand Up @@ -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);

Expand Down
69 changes: 0 additions & 69 deletions drivers/s390/block/dasd_ioctl.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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;
}
}
Expand All @@ -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);

0 comments on commit 82814db

Please sign in to comment.