Lines Matching refs:bdev

16 static int blkpg_do_ioctl(struct block_device *bdev,
19 struct gendisk *disk = bdev->bd_disk;
27 if (bdev_is_partition(bdev))
39 if (!IS_ALIGNED(p.start | p.length, bdev_logical_block_size(bdev)))
62 static int blkpg_ioctl(struct block_device *bdev,
71 return blkpg_do_ioctl(bdev, udata, op);
82 static int compat_blkpg_ioctl(struct block_device *bdev,
91 return blkpg_do_ioctl(bdev, compat_ptr(udata), op);
95 static int blk_ioctl_discard(struct block_device *bdev, blk_mode_t mode,
100 struct inode *inode = bdev->bd_inode;
106 if (!bdev_max_discard_sectors(bdev))
121 end > bdev_nr_bytes(bdev))
125 err = truncate_bdev_range(bdev, mode, start, start + len - 1);
128 err = blkdev_issue_discard(bdev, start >> 9, len >> 9, GFP_KERNEL);
134 static int blk_ioctl_secure_erase(struct block_device *bdev, blk_mode_t mode,
143 if (!bdev_max_secure_erase_sectors(bdev))
152 if (start + len > bdev_nr_bytes(bdev))
155 filemap_invalidate_lock(bdev->bd_inode->i_mapping);
156 err = truncate_bdev_range(bdev, mode, start, start + len - 1);
158 err = blkdev_issue_secure_erase(bdev, start >> 9, len >> 9,
160 filemap_invalidate_unlock(bdev->bd_inode->i_mapping);
165 static int blk_ioctl_zeroout(struct block_device *bdev, blk_mode_t mode,
170 struct inode *inode = bdev->bd_inode;
187 if (end >= (uint64_t)bdev_nr_bytes(bdev))
194 err = truncate_bdev_range(bdev, mode, start, end);
198 err = blkdev_issue_zeroout(bdev, start >> 9, len >> 9, GFP_KERNEL,
254 int blkdev_compat_ptr_ioctl(struct block_device *bdev, blk_mode_t mode,
257 struct gendisk *disk = bdev->bd_disk;
260 return disk->fops->ioctl(bdev, mode, cmd,
268 static bool blkdev_pr_allowed(struct block_device *bdev, blk_mode_t mode)
271 if (bdev_is_partition(bdev))
283 static int blkdev_pr_register(struct block_device *bdev, blk_mode_t mode,
286 const struct pr_ops *ops = bdev->bd_disk->fops->pr_ops;
289 if (!blkdev_pr_allowed(bdev, mode))
298 return ops->pr_register(bdev, reg.old_key, reg.new_key, reg.flags);
301 static int blkdev_pr_reserve(struct block_device *bdev, blk_mode_t mode,
304 const struct pr_ops *ops = bdev->bd_disk->fops->pr_ops;
307 if (!blkdev_pr_allowed(bdev, mode))
316 return ops->pr_reserve(bdev, rsv.key, rsv.type, rsv.flags);
319 static int blkdev_pr_release(struct block_device *bdev, blk_mode_t mode,
322 const struct pr_ops *ops = bdev->bd_disk->fops->pr_ops;
325 if (!blkdev_pr_allowed(bdev, mode))
334 return ops->pr_release(bdev, rsv.key, rsv.type);
337 static int blkdev_pr_preempt(struct block_device *bdev, blk_mode_t mode,
340 const struct pr_ops *ops = bdev->bd_disk->fops->pr_ops;
343 if (!blkdev_pr_allowed(bdev, mode))
352 return ops->pr_preempt(bdev, p.old_key, p.new_key, p.type, abort);
355 static int blkdev_pr_clear(struct block_device *bdev, blk_mode_t mode,
358 const struct pr_ops *ops = bdev->bd_disk->fops->pr_ops;
361 if (!blkdev_pr_allowed(bdev, mode))
370 return ops->pr_clear(bdev, c.key);
373 static int blkdev_flushbuf(struct block_device *bdev, unsigned cmd,
379 mutex_lock(&bdev->bd_holder_lock);
380 if (bdev->bd_holder_ops && bdev->bd_holder_ops->sync)
381 bdev->bd_holder_ops->sync(bdev);
383 mutex_unlock(&bdev->bd_holder_lock);
384 sync_blockdev(bdev);
387 invalidate_bdev(bdev);
391 static int blkdev_roset(struct block_device *bdev, unsigned cmd,
401 if (bdev->bd_disk->fops->set_read_only) {
402 ret = bdev->bd_disk->fops->set_read_only(bdev, n);
406 bdev->bd_read_only = n;
410 static int blkdev_getgeo(struct block_device *bdev,
413 struct gendisk *disk = bdev->bd_disk;
427 geo.start = get_start_sect(bdev);
428 ret = disk->fops->getgeo(bdev, &geo);
444 static int compat_hdio_getgeo(struct block_device *bdev,
447 struct gendisk *disk = bdev->bd_disk;
461 geo.start = get_start_sect(bdev);
462 ret = disk->fops->getgeo(bdev, &geo);
476 static int blkdev_bszset(struct block_device *bdev, blk_mode_t mode,
490 return set_blocksize(bdev, n);
492 file = bdev_file_open_by_dev(bdev->bd_dev, mode, &bdev, NULL);
495 ret = set_blocksize(bdev, n);
505 static int blkdev_common_ioctl(struct block_device *bdev, blk_mode_t mode,
513 return blkdev_flushbuf(bdev, cmd, arg);
515 return blkdev_roset(bdev, cmd, arg);
517 return blk_ioctl_discard(bdev, mode, arg);
519 return blk_ioctl_secure_erase(bdev, mode, argp);
521 return blk_ioctl_zeroout(bdev, mode, arg);
523 return put_u64(argp, bdev->bd_disk->diskseq);
525 return blkdev_report_zones_ioctl(bdev, cmd, arg);
530 return blkdev_zone_mgmt_ioctl(bdev, mode, cmd, arg);
532 return put_uint(argp, bdev_zone_sectors(bdev));
534 return put_uint(argp, bdev_nr_zones(bdev));
536 return put_int(argp, bdev_read_only(bdev) != 0);
538 return put_int(argp, bdev_logical_block_size(bdev));
540 return put_uint(argp, bdev_physical_block_size(bdev));
542 return put_uint(argp, bdev_io_min(bdev));
544 return put_uint(argp, bdev_io_opt(bdev));
546 return put_int(argp, bdev_alignment_offset(bdev));
551 queue_max_sectors(bdev_get_queue(bdev)));
554 return put_ushort(argp, !bdev_nonrot(bdev));
559 bdev->bd_disk->bdi->ra_pages = (arg * 512) / PAGE_SIZE;
564 if (bdev_is_partition(bdev))
566 return disk_scan_partitions(bdev->bd_disk,
571 return blk_trace_ioctl(bdev, cmd, argp);
573 return blkdev_pr_register(bdev, mode, argp);
575 return blkdev_pr_reserve(bdev, mode, argp);
577 return blkdev_pr_release(bdev, mode, argp);
579 return blkdev_pr_preempt(bdev, mode, argp, false);
581 return blkdev_pr_preempt(bdev, mode, argp, true);
583 return blkdev_pr_clear(bdev, mode, argp);
597 struct block_device *bdev = I_BDEV(file->f_mapping->host);
605 return blkdev_getgeo(bdev, argp);
607 return blkpg_ioctl(bdev, argp);
615 (bdev->bd_disk->bdi->ra_pages * PAGE_SIZE) / 512);
617 if (bdev_nr_sectors(bdev) > ~0UL)
619 return put_ulong(argp, bdev_nr_sectors(bdev));
623 return put_int(argp, block_size(bdev));
625 return blkdev_bszset(bdev, mode, argp);
627 return put_u64(argp, bdev_nr_bytes(bdev));
631 return blk_trace_ioctl(bdev, cmd, argp);
636 ret = blkdev_common_ioctl(bdev, mode, cmd, arg, argp);
640 if (!bdev->bd_disk->fops->ioctl)
642 return bdev->bd_disk->fops->ioctl(bdev, mode, cmd, arg);
658 struct block_device *bdev = I_BDEV(file->f_mapping->host);
659 struct gendisk *disk = bdev->bd_disk;
665 return compat_hdio_getgeo(bdev, argp);
667 return compat_blkpg_ioctl(bdev, argp);
675 (bdev->bd_disk->bdi->ra_pages * PAGE_SIZE) / 512);
677 if (bdev_nr_sectors(bdev) > ~(compat_ulong_t)0)
679 return compat_put_ulong(argp, bdev_nr_sectors(bdev));
683 return put_int(argp, bdev_logical_block_size(bdev));
685 return blkdev_bszset(bdev, mode, argp);
687 return put_u64(argp, bdev_nr_bytes(bdev));
691 return blk_trace_ioctl(bdev, cmd, argp);
696 ret = blkdev_common_ioctl(bdev, mode, cmd, arg, argp);
698 ret = disk->fops->compat_ioctl(bdev, mode, cmd, arg);