diff options
Diffstat (limited to 'drivers/block/aoe')
-rw-r--r-- | drivers/block/aoe/aoeblk.c | 26 |
1 files changed, 7 insertions, 19 deletions
diff --git a/drivers/block/aoe/aoeblk.c b/drivers/block/aoe/aoeblk.c index 0e97fcb9f3a1..c05ee8bffd97 100644 --- a/drivers/block/aoe/aoeblk.c +++ b/drivers/block/aoe/aoeblk.c | |||
@@ -169,38 +169,26 @@ aoeblk_make_request(request_queue_t *q, struct bio *bio) | |||
169 | return 0; | 169 | return 0; |
170 | } | 170 | } |
171 | 171 | ||
172 | /* This ioctl implementation expects userland to have the device node | ||
173 | * permissions set so that only priviledged users can open an aoe | ||
174 | * block device directly. | ||
175 | */ | ||
176 | static int | 172 | static int |
177 | aoeblk_ioctl(struct inode *inode, struct file *filp, uint cmd, ulong arg) | 173 | aoeblk_getgeo(struct block_device *bdev, struct hd_geometry *geo) |
178 | { | 174 | { |
179 | struct aoedev *d; | 175 | struct aoedev *d = bdev->bd_disk->private_data; |
180 | |||
181 | if (!arg) | ||
182 | return -EINVAL; | ||
183 | 176 | ||
184 | d = inode->i_bdev->bd_disk->private_data; | ||
185 | if ((d->flags & DEVFL_UP) == 0) { | 177 | if ((d->flags & DEVFL_UP) == 0) { |
186 | printk(KERN_ERR "aoe: aoeblk_ioctl: disk not up\n"); | 178 | printk(KERN_ERR "aoe: aoeblk_ioctl: disk not up\n"); |
187 | return -ENODEV; | 179 | return -ENODEV; |
188 | } | 180 | } |
189 | 181 | ||
190 | if (cmd == HDIO_GETGEO) { | 182 | geo->cylinders = d->geo.cylinders; |
191 | d->geo.start = get_start_sect(inode->i_bdev); | 183 | geo->heads = d->geo.heads; |
192 | if (!copy_to_user((void __user *) arg, &d->geo, sizeof d->geo)) | 184 | geo->sectors = d->geo.sectors; |
193 | return 0; | 185 | return 0; |
194 | return -EFAULT; | ||
195 | } | ||
196 | printk(KERN_INFO "aoe: aoeblk_ioctl: unknown ioctl %d\n", cmd); | ||
197 | return -EINVAL; | ||
198 | } | 186 | } |
199 | 187 | ||
200 | static struct block_device_operations aoe_bdops = { | 188 | static struct block_device_operations aoe_bdops = { |
201 | .open = aoeblk_open, | 189 | .open = aoeblk_open, |
202 | .release = aoeblk_release, | 190 | .release = aoeblk_release, |
203 | .ioctl = aoeblk_ioctl, | 191 | .getgeo = aoeblk_getgeo, |
204 | .owner = THIS_MODULE, | 192 | .owner = THIS_MODULE, |
205 | }; | 193 | }; |
206 | 194 | ||