Lines Matching refs:bdev

14 static int blkpg_ioctl(struct block_device *bdev, struct blkpg_ioctl_arg __user *arg)  in blkpg_ioctl()  argument
31 disk = bdev->bd_disk; in blkpg_ioctl()
32 if (bdev != bdev->bd_contains) in blkpg_ioctl()
50 if (p.start & (bdev_logical_block_size(bdev) - 1)) in blkpg_ioctl()
53 mutex_lock(&bdev->bd_mutex); in blkpg_ioctl()
62 mutex_unlock(&bdev->bd_mutex); in blkpg_ioctl()
71 mutex_unlock(&bdev->bd_mutex); in blkpg_ioctl()
93 mutex_lock_nested(&bdev->bd_mutex, 1); in blkpg_ioctl()
95 mutex_unlock(&bdev->bd_mutex); in blkpg_ioctl()
121 mutex_lock_nested(&bdev->bd_mutex, 1); in blkpg_ioctl()
124 mutex_unlock(&bdev->bd_mutex); in blkpg_ioctl()
139 mutex_unlock(&bdev->bd_mutex); in blkpg_ioctl()
149 mutex_unlock(&bdev->bd_mutex); in blkpg_ioctl()
163 int __blkdev_reread_part(struct block_device *bdev) in __blkdev_reread_part() argument
165 struct gendisk *disk = bdev->bd_disk; in __blkdev_reread_part()
167 if (!disk_part_scan_enabled(disk) || bdev != bdev->bd_contains) in __blkdev_reread_part()
172 lockdep_assert_held(&bdev->bd_mutex); in __blkdev_reread_part()
174 return rescan_partitions(disk, bdev); in __blkdev_reread_part()
189 int blkdev_reread_part(struct block_device *bdev) in blkdev_reread_part() argument
193 mutex_lock(&bdev->bd_mutex); in blkdev_reread_part()
194 res = __blkdev_reread_part(bdev); in blkdev_reread_part()
195 mutex_unlock(&bdev->bd_mutex); in blkdev_reread_part()
201 static int blk_ioctl_discard(struct block_device *bdev, fmode_t mode, in blk_ioctl_discard() argument
206 struct request_queue *q = bdev_get_queue(bdev); in blk_ioctl_discard()
207 struct address_space *mapping = bdev->bd_inode->i_mapping; in blk_ioctl_discard()
227 if (start + len > i_size_read(bdev->bd_inode)) in blk_ioctl_discard()
230 return blkdev_issue_discard(bdev, start >> 9, len >> 9, in blk_ioctl_discard()
234 static int blk_ioctl_zeroout(struct block_device *bdev, fmode_t mode, in blk_ioctl_zeroout() argument
255 if (end >= (uint64_t)i_size_read(bdev->bd_inode)) in blk_ioctl_zeroout()
261 mapping = bdev->bd_inode->i_mapping; in blk_ioctl_zeroout()
264 return blkdev_issue_zeroout(bdev, start >> 9, len >> 9, GFP_KERNEL, in blk_ioctl_zeroout()
298 int __blkdev_driver_ioctl(struct block_device *bdev, fmode_t mode, in __blkdev_driver_ioctl() argument
301 struct gendisk *disk = bdev->bd_disk; in __blkdev_driver_ioctl()
304 return disk->fops->ioctl(bdev, mode, cmd, arg); in __blkdev_driver_ioctl()
315 static int blkdev_pr_register(struct block_device *bdev, in blkdev_pr_register() argument
318 const struct pr_ops *ops = bdev->bd_disk->fops->pr_ops; in blkdev_pr_register()
330 return ops->pr_register(bdev, reg.old_key, reg.new_key, reg.flags); in blkdev_pr_register()
333 static int blkdev_pr_reserve(struct block_device *bdev, in blkdev_pr_reserve() argument
336 const struct pr_ops *ops = bdev->bd_disk->fops->pr_ops; in blkdev_pr_reserve()
348 return ops->pr_reserve(bdev, rsv.key, rsv.type, rsv.flags); in blkdev_pr_reserve()
351 static int blkdev_pr_release(struct block_device *bdev, in blkdev_pr_release() argument
354 const struct pr_ops *ops = bdev->bd_disk->fops->pr_ops; in blkdev_pr_release()
366 return ops->pr_release(bdev, rsv.key, rsv.type); in blkdev_pr_release()
369 static int blkdev_pr_preempt(struct block_device *bdev, in blkdev_pr_preempt() argument
372 const struct pr_ops *ops = bdev->bd_disk->fops->pr_ops; in blkdev_pr_preempt()
384 return ops->pr_preempt(bdev, p.old_key, p.new_key, p.type, abort); in blkdev_pr_preempt()
387 static int blkdev_pr_clear(struct block_device *bdev, in blkdev_pr_clear() argument
390 const struct pr_ops *ops = bdev->bd_disk->fops->pr_ops; in blkdev_pr_clear()
402 return ops->pr_clear(bdev, c.key); in blkdev_pr_clear()
425 static int blkdev_flushbuf(struct block_device *bdev, fmode_t mode, in blkdev_flushbuf() argument
433 ret = __blkdev_driver_ioctl(bdev, mode, cmd, arg); in blkdev_flushbuf()
437 fsync_bdev(bdev); in blkdev_flushbuf()
438 invalidate_bdev(bdev); in blkdev_flushbuf()
442 static int blkdev_roset(struct block_device *bdev, fmode_t mode, in blkdev_roset() argument
450 ret = __blkdev_driver_ioctl(bdev, mode, cmd, arg); in blkdev_roset()
455 set_device_ro(bdev, n); in blkdev_roset()
459 static int blkdev_getgeo(struct block_device *bdev, in blkdev_getgeo() argument
462 struct gendisk *disk = bdev->bd_disk; in blkdev_getgeo()
476 geo.start = get_start_sect(bdev); in blkdev_getgeo()
477 ret = disk->fops->getgeo(bdev, &geo); in blkdev_getgeo()
486 static int blkdev_bszset(struct block_device *bdev, fmode_t mode, in blkdev_bszset() argument
499 bdgrab(bdev); in blkdev_bszset()
500 if (blkdev_get(bdev, mode | FMODE_EXCL, &bdev) < 0) in blkdev_bszset()
504 ret = set_blocksize(bdev, n); in blkdev_bszset()
506 blkdev_put(bdev, mode | FMODE_EXCL); in blkdev_bszset()
513 int blkdev_ioctl(struct block_device *bdev, fmode_t mode, unsigned cmd, in blkdev_ioctl() argument
522 return blkdev_flushbuf(bdev, mode, cmd, arg); in blkdev_ioctl()
524 return blkdev_roset(bdev, mode, cmd, arg); in blkdev_ioctl()
526 return blk_ioctl_discard(bdev, mode, arg, 0); in blkdev_ioctl()
528 return blk_ioctl_discard(bdev, mode, arg, in blkdev_ioctl()
531 return blk_ioctl_zeroout(bdev, mode, arg); in blkdev_ioctl()
533 return blkdev_report_zones_ioctl(bdev, mode, cmd, arg); in blkdev_ioctl()
535 return blkdev_reset_zones_ioctl(bdev, mode, cmd, arg); in blkdev_ioctl()
537 return put_uint(arg, bdev_zone_sectors(bdev)); in blkdev_ioctl()
539 return put_uint(arg, blkdev_nr_zones(bdev)); in blkdev_ioctl()
541 return blkdev_getgeo(bdev, argp); in blkdev_ioctl()
546 return put_long(arg, (bdev->bd_bdi->ra_pages*PAGE_SIZE) / 512); in blkdev_ioctl()
548 return put_int(arg, bdev_read_only(bdev) != 0); in blkdev_ioctl()
550 return put_int(arg, block_size(bdev)); in blkdev_ioctl()
552 return put_int(arg, bdev_logical_block_size(bdev)); in blkdev_ioctl()
554 return put_uint(arg, bdev_physical_block_size(bdev)); in blkdev_ioctl()
556 return put_uint(arg, bdev_io_min(bdev)); in blkdev_ioctl()
558 return put_uint(arg, bdev_io_opt(bdev)); in blkdev_ioctl()
560 return put_int(arg, bdev_alignment_offset(bdev)); in blkdev_ioctl()
565 queue_max_sectors(bdev_get_queue(bdev))); in blkdev_ioctl()
568 return put_ushort(arg, !blk_queue_nonrot(bdev_get_queue(bdev))); in blkdev_ioctl()
573 bdev->bd_bdi->ra_pages = (arg * 512) / PAGE_SIZE; in blkdev_ioctl()
576 return blkdev_bszset(bdev, mode, argp); in blkdev_ioctl()
578 return blkpg_ioctl(bdev, argp); in blkdev_ioctl()
580 return blkdev_reread_part(bdev); in blkdev_ioctl()
582 size = i_size_read(bdev->bd_inode); in blkdev_ioctl()
587 return put_u64(arg, i_size_read(bdev->bd_inode)); in blkdev_ioctl()
592 return blk_trace_ioctl(bdev, cmd, argp); in blkdev_ioctl()
594 return blkdev_pr_register(bdev, argp); in blkdev_ioctl()
596 return blkdev_pr_reserve(bdev, argp); in blkdev_ioctl()
598 return blkdev_pr_release(bdev, argp); in blkdev_ioctl()
600 return blkdev_pr_preempt(bdev, argp, false); in blkdev_ioctl()
602 return blkdev_pr_preempt(bdev, argp, true); in blkdev_ioctl()
604 return blkdev_pr_clear(bdev, argp); in blkdev_ioctl()
606 return __blkdev_driver_ioctl(bdev, mode, cmd, arg); in blkdev_ioctl()