diff options
Diffstat (limited to 'drivers/block/ps2esdi.c')
-rw-r--r-- | drivers/block/ps2esdi.c | 25 |
1 files changed, 8 insertions, 17 deletions
diff --git a/drivers/block/ps2esdi.c b/drivers/block/ps2esdi.c index 29d1518be72a..43415f69839f 100644 --- a/drivers/block/ps2esdi.c +++ b/drivers/block/ps2esdi.c | |||
@@ -81,8 +81,7 @@ static void (*current_int_handler) (u_int) = NULL; | |||
81 | static void ps2esdi_normal_interrupt_handler(u_int); | 81 | static void ps2esdi_normal_interrupt_handler(u_int); |
82 | static void ps2esdi_initial_reset_int_handler(u_int); | 82 | static void ps2esdi_initial_reset_int_handler(u_int); |
83 | static void ps2esdi_geometry_int_handler(u_int); | 83 | static void ps2esdi_geometry_int_handler(u_int); |
84 | static int ps2esdi_ioctl(struct inode *inode, struct file *file, | 84 | static int ps2esdi_getgeo(struct block_device *bdev, struct hd_geometry *geo); |
85 | u_int cmd, u_long arg); | ||
86 | 85 | ||
87 | static int ps2esdi_read_status_words(int num_words, int max_words, u_short * buffer); | 86 | static int ps2esdi_read_status_words(int num_words, int max_words, u_short * buffer); |
88 | 87 | ||
@@ -132,7 +131,7 @@ static struct ps2esdi_i_struct ps2esdi_info[MAX_HD] = | |||
132 | static struct block_device_operations ps2esdi_fops = | 131 | static struct block_device_operations ps2esdi_fops = |
133 | { | 132 | { |
134 | .owner = THIS_MODULE, | 133 | .owner = THIS_MODULE, |
135 | .ioctl = ps2esdi_ioctl, | 134 | .getgeo = ps2esdi_getgeo, |
136 | }; | 135 | }; |
137 | 136 | ||
138 | static struct gendisk *ps2esdi_gendisk[2]; | 137 | static struct gendisk *ps2esdi_gendisk[2]; |
@@ -1058,21 +1057,13 @@ static void dump_cmd_complete_status(u_int int_ret_code) | |||
1058 | 1057 | ||
1059 | } | 1058 | } |
1060 | 1059 | ||
1061 | static int ps2esdi_ioctl(struct inode *inode, | 1060 | static int ps2esdi_getgeo(struct block_device *bdev, struct hd_geometry *geo) |
1062 | struct file *file, u_int cmd, u_long arg) | ||
1063 | { | 1061 | { |
1064 | struct ps2esdi_i_struct *p = inode->i_bdev->bd_disk->private_data; | 1062 | struct ps2esdi_i_struct *p = bdev->bd_disk->private_data; |
1065 | struct ps2esdi_geometry geom; | 1063 | |
1066 | 1064 | geo->heads = p->head; | |
1067 | if (cmd != HDIO_GETGEO) | 1065 | geo->sectors = p->sect; |
1068 | return -EINVAL; | 1066 | geo->cylinders = p->cyl; |
1069 | memset(&geom, 0, sizeof(geom)); | ||
1070 | geom.heads = p->head; | ||
1071 | geom.sectors = p->sect; | ||
1072 | geom.cylinders = p->cyl; | ||
1073 | geom.start = get_start_sect(inode->i_bdev); | ||
1074 | if (copy_to_user((void __user *)arg, &geom, sizeof(geom))) | ||
1075 | return -EFAULT; | ||
1076 | return 0; | 1067 | return 0; |
1077 | } | 1068 | } |
1078 | 1069 | ||