Lines Matching refs:bdev

16 static int blkpg_do_ioctl(struct block_device *bdev,
26 if (bdev_is_partition(bdev))
33 return bdev_del_partition(bdev, p.pno);
50 if (p.start & (bdev_logical_block_size(bdev) - 1))
52 return bdev_add_partition(bdev, p.pno, start, length);
54 return bdev_resize_partition(bdev, p.pno, start, length);
60 static int blkpg_ioctl(struct block_device *bdev,
69 return blkpg_do_ioctl(bdev, udata, op);
80 static int compat_blkpg_ioctl(struct block_device *bdev,
89 return blkpg_do_ioctl(bdev, compat_ptr(udata), op);
93 static int blkdev_reread_part(struct block_device *bdev, fmode_t mode)
97 if (!disk_part_scan_enabled(bdev->bd_disk) || bdev_is_partition(bdev))
101 if (bdev->bd_part_count)
109 set_bit(GD_NEED_PART_SCAN, &bdev->bd_disk->state);
111 tmp = blkdev_get_by_dev(bdev->bd_dev, mode, NULL);
118 static int blk_ioctl_discard(struct block_device *bdev, fmode_t mode,
123 struct request_queue *q = bdev_get_queue(bdev);
143 if (start + len > i_size_read(bdev->bd_inode))
146 err = truncate_bdev_range(bdev, mode, start, start + len - 1);
150 return blkdev_issue_discard(bdev, start >> 9, len >> 9,
154 static int blk_ioctl_zeroout(struct block_device *bdev, fmode_t mode,
175 if (end >= (uint64_t)i_size_read(bdev->bd_inode))
181 err = truncate_bdev_range(bdev, mode, start, end);
185 return blkdev_issue_zeroout(bdev, start >> 9, len >> 9, GFP_KERNEL,
231 int __blkdev_driver_ioctl(struct block_device *bdev, fmode_t mode,
234 struct gendisk *disk = bdev->bd_disk;
237 return disk->fops->ioctl(bdev, mode, cmd, arg);
254 int blkdev_compat_ptr_ioctl(struct block_device *bdev, fmode_t mode,
257 struct gendisk *disk = bdev->bd_disk;
260 return disk->fops->ioctl(bdev, mode, cmd,
268 static int blkdev_pr_register(struct block_device *bdev,
271 const struct pr_ops *ops = bdev->bd_disk->fops->pr_ops;
283 return ops->pr_register(bdev, reg.old_key, reg.new_key, reg.flags);
286 static int blkdev_pr_reserve(struct block_device *bdev,
289 const struct pr_ops *ops = bdev->bd_disk->fops->pr_ops;
301 return ops->pr_reserve(bdev, rsv.key, rsv.type, rsv.flags);
304 static int blkdev_pr_release(struct block_device *bdev,
307 const struct pr_ops *ops = bdev->bd_disk->fops->pr_ops;
319 return ops->pr_release(bdev, rsv.key, rsv.type);
322 static int blkdev_pr_preempt(struct block_device *bdev,
325 const struct pr_ops *ops = bdev->bd_disk->fops->pr_ops;
337 return ops->pr_preempt(bdev, p.old_key, p.new_key, p.type, abort);
340 static int blkdev_pr_clear(struct block_device *bdev,
343 const struct pr_ops *ops = bdev->bd_disk->fops->pr_ops;
355 return ops->pr_clear(bdev, c.key);
378 static int blkdev_flushbuf(struct block_device *bdev, fmode_t mode,
386 ret = __blkdev_driver_ioctl(bdev, mode, cmd, arg);
390 fsync_bdev(bdev);
391 invalidate_bdev(bdev);
395 static int blkdev_roset(struct block_device *bdev, fmode_t mode,
403 ret = __blkdev_driver_ioctl(bdev, mode, cmd, arg);
408 set_device_ro(bdev, n);
412 static int blkdev_getgeo(struct block_device *bdev,
415 struct gendisk *disk = bdev->bd_disk;
429 geo.start = get_start_sect(bdev);
430 ret = disk->fops->getgeo(bdev, &geo);
446 static int compat_hdio_getgeo(struct block_device *bdev,
449 struct gendisk *disk = bdev->bd_disk;
463 geo.start = get_start_sect(bdev);
464 ret = disk->fops->getgeo(bdev, &geo);
478 static int blkdev_bszset(struct block_device *bdev, fmode_t mode,
491 return set_blocksize(bdev, n);
493 if (IS_ERR(blkdev_get_by_dev(bdev->bd_dev, mode | FMODE_EXCL, &bdev)))
495 ret = set_blocksize(bdev, n);
496 blkdev_put(bdev, mode | FMODE_EXCL);
506 static int blkdev_common_ioctl(struct block_device *bdev, fmode_t mode,
513 return blkdev_flushbuf(bdev, mode, cmd, arg);
515 return blkdev_roset(bdev, mode, cmd, arg);
517 return blk_ioctl_discard(bdev, mode, arg, 0);
519 return blk_ioctl_discard(bdev, mode, arg,
522 return blk_ioctl_zeroout(bdev, mode, arg);
524 return blkdev_report_zones_ioctl(bdev, mode, cmd, arg);
529 return blkdev_zone_mgmt_ioctl(bdev, mode, cmd, arg);
531 return put_uint(argp, bdev_zone_sectors(bdev));
533 return put_uint(argp, blkdev_nr_zones(bdev->bd_disk));
535 return put_int(argp, bdev_read_only(bdev) != 0);
537 return put_int(argp, bdev_logical_block_size(bdev));
539 return put_uint(argp, bdev_physical_block_size(bdev));
541 return put_uint(argp, bdev_io_min(bdev));
543 return put_uint(argp, bdev_io_opt(bdev));
545 return put_int(argp, bdev_alignment_offset(bdev));
550 queue_max_sectors(bdev_get_queue(bdev)));
553 return put_ushort(argp, !blk_queue_nonrot(bdev_get_queue(bdev)));
558 bdev->bd_bdi->ra_pages = (arg * 512) / PAGE_SIZE;
561 return blkdev_reread_part(bdev, mode);
565 return blk_trace_ioctl(bdev, cmd, argp);
567 return blkdev_pr_register(bdev, argp);
569 return blkdev_pr_reserve(bdev, argp);
571 return blkdev_pr_release(bdev, argp);
573 return blkdev_pr_preempt(bdev, argp, false);
575 return blkdev_pr_preempt(bdev, argp, true);
577 return blkdev_pr_clear(bdev, argp);
589 int blkdev_ioctl(struct block_device *bdev, fmode_t mode, unsigned cmd,
599 return blkdev_getgeo(bdev, argp);
601 return blkpg_ioctl(bdev, argp);
608 return put_long(argp, (bdev->bd_bdi->ra_pages*PAGE_SIZE) / 512);
610 size = i_size_read(bdev->bd_inode);
617 return put_int(argp, block_size(bdev));
619 return blkdev_bszset(bdev, mode, argp);
621 return put_u64(argp, i_size_read(bdev->bd_inode));
625 return blk_trace_ioctl(bdev, cmd, argp);
630 ret = blkdev_common_ioctl(bdev, mode, cmd, arg, argp);
632 return __blkdev_driver_ioctl(bdev, mode, cmd, arg);
652 struct block_device *bdev = inode->i_bdev;
653 struct gendisk *disk = bdev->bd_disk;
669 return compat_hdio_getgeo(bdev, argp);
671 return compat_blkpg_ioctl(bdev, argp);
679 (bdev->bd_bdi->ra_pages * PAGE_SIZE) / 512);
681 size = i_size_read(bdev->bd_inode);
688 return put_int(argp, bdev_logical_block_size(bdev));
690 return blkdev_bszset(bdev, mode, argp);
692 return put_u64(argp, i_size_read(bdev->bd_inode));
696 return blk_trace_ioctl(bdev, cmd, argp);
701 ret = blkdev_common_ioctl(bdev, mode, cmd, arg, argp);
703 ret = disk->fops->compat_ioctl(bdev, mode, cmd, arg);