Lines Matching refs:bdev
13 static int blkpg_ioctl(struct block_device *bdev, struct blkpg_ioctl_arg __user *arg) in blkpg_ioctl() argument
30 disk = bdev->bd_disk; in blkpg_ioctl()
31 if (bdev != bdev->bd_contains) in blkpg_ioctl()
49 if (p.start & (bdev_logical_block_size(bdev) - 1)) in blkpg_ioctl()
52 mutex_lock(&bdev->bd_mutex); in blkpg_ioctl()
61 mutex_unlock(&bdev->bd_mutex); in blkpg_ioctl()
70 mutex_unlock(&bdev->bd_mutex); in blkpg_ioctl()
92 mutex_lock_nested(&bdev->bd_mutex, 1); in blkpg_ioctl()
94 mutex_unlock(&bdev->bd_mutex); in blkpg_ioctl()
120 mutex_lock_nested(&bdev->bd_mutex, 1); in blkpg_ioctl()
123 mutex_unlock(&bdev->bd_mutex); in blkpg_ioctl()
138 mutex_unlock(&bdev->bd_mutex); in blkpg_ioctl()
148 mutex_unlock(&bdev->bd_mutex); in blkpg_ioctl()
162 int __blkdev_reread_part(struct block_device *bdev) in __blkdev_reread_part() argument
164 struct gendisk *disk = bdev->bd_disk; in __blkdev_reread_part()
166 if (!disk_part_scan_enabled(disk) || bdev != bdev->bd_contains) in __blkdev_reread_part()
171 lockdep_assert_held(&bdev->bd_mutex); in __blkdev_reread_part()
173 return rescan_partitions(disk, bdev); in __blkdev_reread_part()
188 int blkdev_reread_part(struct block_device *bdev) in blkdev_reread_part() argument
192 mutex_lock(&bdev->bd_mutex); in blkdev_reread_part()
193 res = __blkdev_reread_part(bdev); in blkdev_reread_part()
194 mutex_unlock(&bdev->bd_mutex); in blkdev_reread_part()
200 static int blk_ioctl_discard(struct block_device *bdev, fmode_t mode, in blk_ioctl_discard() argument
205 struct request_queue *q = bdev_get_queue(bdev); in blk_ioctl_discard()
206 struct address_space *mapping = bdev->bd_inode->i_mapping; in blk_ioctl_discard()
226 if (start + len > i_size_read(bdev->bd_inode)) in blk_ioctl_discard()
229 return blkdev_issue_discard(bdev, start >> 9, len >> 9, in blk_ioctl_discard()
233 static int blk_ioctl_zeroout(struct block_device *bdev, fmode_t mode, in blk_ioctl_zeroout() argument
254 if (end >= (uint64_t)i_size_read(bdev->bd_inode)) in blk_ioctl_zeroout()
260 mapping = bdev->bd_inode->i_mapping; in blk_ioctl_zeroout()
263 return blkdev_issue_zeroout(bdev, start >> 9, len >> 9, GFP_KERNEL, in blk_ioctl_zeroout()
297 int __blkdev_driver_ioctl(struct block_device *bdev, fmode_t mode, in __blkdev_driver_ioctl() argument
300 struct gendisk *disk = bdev->bd_disk; in __blkdev_driver_ioctl()
303 return disk->fops->ioctl(bdev, mode, cmd, arg); in __blkdev_driver_ioctl()
314 static int blkdev_pr_register(struct block_device *bdev, in blkdev_pr_register() argument
317 const struct pr_ops *ops = bdev->bd_disk->fops->pr_ops; in blkdev_pr_register()
329 return ops->pr_register(bdev, reg.old_key, reg.new_key, reg.flags); in blkdev_pr_register()
332 static int blkdev_pr_reserve(struct block_device *bdev, in blkdev_pr_reserve() argument
335 const struct pr_ops *ops = bdev->bd_disk->fops->pr_ops; in blkdev_pr_reserve()
347 return ops->pr_reserve(bdev, rsv.key, rsv.type, rsv.flags); in blkdev_pr_reserve()
350 static int blkdev_pr_release(struct block_device *bdev, in blkdev_pr_release() argument
353 const struct pr_ops *ops = bdev->bd_disk->fops->pr_ops; in blkdev_pr_release()
365 return ops->pr_release(bdev, rsv.key, rsv.type); in blkdev_pr_release()
368 static int blkdev_pr_preempt(struct block_device *bdev, in blkdev_pr_preempt() argument
371 const struct pr_ops *ops = bdev->bd_disk->fops->pr_ops; in blkdev_pr_preempt()
383 return ops->pr_preempt(bdev, p.old_key, p.new_key, p.type, abort); in blkdev_pr_preempt()
386 static int blkdev_pr_clear(struct block_device *bdev, in blkdev_pr_clear() argument
389 const struct pr_ops *ops = bdev->bd_disk->fops->pr_ops; in blkdev_pr_clear()
401 return ops->pr_clear(bdev, c.key); in blkdev_pr_clear()
424 static int blkdev_flushbuf(struct block_device *bdev, fmode_t mode, in blkdev_flushbuf() argument
432 ret = __blkdev_driver_ioctl(bdev, mode, cmd, arg); in blkdev_flushbuf()
436 fsync_bdev(bdev); in blkdev_flushbuf()
437 invalidate_bdev(bdev); in blkdev_flushbuf()
441 static int blkdev_roset(struct block_device *bdev, fmode_t mode, in blkdev_roset() argument
449 ret = __blkdev_driver_ioctl(bdev, mode, cmd, arg); in blkdev_roset()
454 set_device_ro(bdev, n); in blkdev_roset()
458 static int blkdev_getgeo(struct block_device *bdev, in blkdev_getgeo() argument
461 struct gendisk *disk = bdev->bd_disk; in blkdev_getgeo()
475 geo.start = get_start_sect(bdev); in blkdev_getgeo()
476 ret = disk->fops->getgeo(bdev, &geo); in blkdev_getgeo()
485 static int blkdev_bszset(struct block_device *bdev, fmode_t mode, in blkdev_bszset() argument
498 bdgrab(bdev); in blkdev_bszset()
499 if (blkdev_get(bdev, mode | FMODE_EXCL, &bdev) < 0) in blkdev_bszset()
503 ret = set_blocksize(bdev, n); in blkdev_bszset()
505 blkdev_put(bdev, mode | FMODE_EXCL); in blkdev_bszset()
512 int blkdev_ioctl(struct block_device *bdev, fmode_t mode, unsigned cmd, in blkdev_ioctl() argument
521 return blkdev_flushbuf(bdev, mode, cmd, arg); in blkdev_ioctl()
523 return blkdev_roset(bdev, mode, cmd, arg); in blkdev_ioctl()
525 return blk_ioctl_discard(bdev, mode, arg, 0); in blkdev_ioctl()
527 return blk_ioctl_discard(bdev, mode, arg, in blkdev_ioctl()
530 return blk_ioctl_zeroout(bdev, mode, arg); in blkdev_ioctl()
532 return blkdev_report_zones_ioctl(bdev, mode, cmd, arg); in blkdev_ioctl()
534 return blkdev_reset_zones_ioctl(bdev, mode, cmd, arg); in blkdev_ioctl()
536 return blkdev_getgeo(bdev, argp); in blkdev_ioctl()
541 return put_long(arg, (bdev->bd_bdi->ra_pages*PAGE_SIZE) / 512); in blkdev_ioctl()
543 return put_int(arg, bdev_read_only(bdev) != 0); in blkdev_ioctl()
545 return put_int(arg, block_size(bdev)); in blkdev_ioctl()
547 return put_int(arg, bdev_logical_block_size(bdev)); in blkdev_ioctl()
549 return put_uint(arg, bdev_physical_block_size(bdev)); in blkdev_ioctl()
551 return put_uint(arg, bdev_io_min(bdev)); in blkdev_ioctl()
553 return put_uint(arg, bdev_io_opt(bdev)); in blkdev_ioctl()
555 return put_int(arg, bdev_alignment_offset(bdev)); in blkdev_ioctl()
560 queue_max_sectors(bdev_get_queue(bdev))); in blkdev_ioctl()
563 return put_ushort(arg, !blk_queue_nonrot(bdev_get_queue(bdev))); in blkdev_ioctl()
568 bdev->bd_bdi->ra_pages = (arg * 512) / PAGE_SIZE; in blkdev_ioctl()
571 return blkdev_bszset(bdev, mode, argp); in blkdev_ioctl()
573 return blkpg_ioctl(bdev, argp); in blkdev_ioctl()
575 return blkdev_reread_part(bdev); in blkdev_ioctl()
577 size = i_size_read(bdev->bd_inode); in blkdev_ioctl()
582 return put_u64(arg, i_size_read(bdev->bd_inode)); in blkdev_ioctl()
587 return blk_trace_ioctl(bdev, cmd, argp); in blkdev_ioctl()
589 return blkdev_pr_register(bdev, argp); in blkdev_ioctl()
591 return blkdev_pr_reserve(bdev, argp); in blkdev_ioctl()
593 return blkdev_pr_release(bdev, argp); in blkdev_ioctl()
595 return blkdev_pr_preempt(bdev, argp, false); in blkdev_ioctl()
597 return blkdev_pr_preempt(bdev, argp, true); in blkdev_ioctl()
599 return blkdev_pr_clear(bdev, argp); in blkdev_ioctl()
601 return __blkdev_driver_ioctl(bdev, mode, cmd, arg); in blkdev_ioctl()