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)))
55 static int blkpg_ioctl(struct block_device *bdev,
64 return blkpg_do_ioctl(bdev, udata, op);
75 static int compat_blkpg_ioctl(struct block_device *bdev,
84 return blkpg_do_ioctl(bdev, compat_ptr(udata), op);
88 static int blk_ioctl_discard(struct block_device *bdev, blk_mode_t mode,
93 struct inode *inode = bdev->bd_inode;
99 if (!bdev_max_discard_sectors(bdev))
113 if (start + len > bdev_nr_bytes(bdev))
117 err = truncate_bdev_range(bdev, mode, start, start + len - 1);
120 err = blkdev_issue_discard(bdev, start >> 9, len >> 9, GFP_KERNEL);
126 static int blk_ioctl_secure_erase(struct block_device *bdev, blk_mode_t mode,
135 if (!bdev_max_secure_erase_sectors(bdev))
144 if (start + len > bdev_nr_bytes(bdev))
147 filemap_invalidate_lock(bdev->bd_inode->i_mapping);
148 err = truncate_bdev_range(bdev, mode, start, start + len - 1);
150 err = blkdev_issue_secure_erase(bdev, start >> 9, len >> 9,
152 filemap_invalidate_unlock(bdev->bd_inode->i_mapping);
157 static int blk_ioctl_zeroout(struct block_device *bdev, blk_mode_t mode,
162 struct inode *inode = bdev->bd_inode;
179 if (end >= (uint64_t)bdev_nr_bytes(bdev))
186 err = truncate_bdev_range(bdev, mode, start, end);
190 err = blkdev_issue_zeroout(bdev, start >> 9, len >> 9, GFP_KERNEL,
246 int blkdev_compat_ptr_ioctl(struct block_device *bdev, blk_mode_t mode,
249 struct gendisk *disk = bdev->bd_disk;
252 return disk->fops->ioctl(bdev, mode, cmd,
260 static bool blkdev_pr_allowed(struct block_device *bdev, blk_mode_t mode)
263 if (bdev_is_partition(bdev))
275 static int blkdev_pr_register(struct block_device *bdev, blk_mode_t mode,
278 const struct pr_ops *ops = bdev->bd_disk->fops->pr_ops;
281 if (!blkdev_pr_allowed(bdev, mode))
290 return ops->pr_register(bdev, reg.old_key, reg.new_key, reg.flags);
293 static int blkdev_pr_reserve(struct block_device *bdev, blk_mode_t mode,
296 const struct pr_ops *ops = bdev->bd_disk->fops->pr_ops;
299 if (!blkdev_pr_allowed(bdev, mode))
308 return ops->pr_reserve(bdev, rsv.key, rsv.type, rsv.flags);
311 static int blkdev_pr_release(struct block_device *bdev, blk_mode_t mode,
314 const struct pr_ops *ops = bdev->bd_disk->fops->pr_ops;
317 if (!blkdev_pr_allowed(bdev, mode))
326 return ops->pr_release(bdev, rsv.key, rsv.type);
329 static int blkdev_pr_preempt(struct block_device *bdev, blk_mode_t mode,
332 const struct pr_ops *ops = bdev->bd_disk->fops->pr_ops;
335 if (!blkdev_pr_allowed(bdev, mode))
344 return ops->pr_preempt(bdev, p.old_key, p.new_key, p.type, abort);
347 static int blkdev_pr_clear(struct block_device *bdev, blk_mode_t mode,
350 const struct pr_ops *ops = bdev->bd_disk->fops->pr_ops;
353 if (!blkdev_pr_allowed(bdev, mode))
362 return ops->pr_clear(bdev, c.key);
365 static int blkdev_flushbuf(struct block_device *bdev, unsigned cmd,
371 mutex_lock(&bdev->bd_holder_lock);
372 if (bdev->bd_holder_ops && bdev->bd_holder_ops->sync)
373 bdev->bd_holder_ops->sync(bdev);
375 sync_blockdev(bdev);
376 mutex_unlock(&bdev->bd_holder_lock);
378 invalidate_bdev(bdev);
382 static int blkdev_roset(struct block_device *bdev, unsigned cmd,
392 if (bdev->bd_disk->fops->set_read_only) {
393 ret = bdev->bd_disk->fops->set_read_only(bdev, n);
397 bdev->bd_read_only = n;
401 static int blkdev_getgeo(struct block_device *bdev,
404 struct gendisk *disk = bdev->bd_disk;
418 geo.start = get_start_sect(bdev);
419 ret = disk->fops->getgeo(bdev, &geo);
435 static int compat_hdio_getgeo(struct block_device *bdev,
438 struct gendisk *disk = bdev->bd_disk;
452 geo.start = get_start_sect(bdev);
453 ret = disk->fops->getgeo(bdev, &geo);
467 static int blkdev_bszset(struct block_device *bdev, blk_mode_t mode,
480 return set_blocksize(bdev, n);
482 if (IS_ERR(blkdev_get_by_dev(bdev->bd_dev, mode, &bdev, NULL)))
484 ret = set_blocksize(bdev, n);
485 blkdev_put(bdev, &bdev);
495 static int blkdev_common_ioctl(struct block_device *bdev, blk_mode_t mode,
503 return blkdev_flushbuf(bdev, cmd, arg);
505 return blkdev_roset(bdev, cmd, arg);
507 return blk_ioctl_discard(bdev, mode, arg);
509 return blk_ioctl_secure_erase(bdev, mode, argp);
511 return blk_ioctl_zeroout(bdev, mode, arg);
513 return put_u64(argp, bdev->bd_disk->diskseq);
515 return blkdev_report_zones_ioctl(bdev, cmd, arg);
520 return blkdev_zone_mgmt_ioctl(bdev, mode, cmd, arg);
522 return put_uint(argp, bdev_zone_sectors(bdev));
524 return put_uint(argp, bdev_nr_zones(bdev));
526 return put_int(argp, bdev_read_only(bdev) != 0);
528 return put_int(argp, bdev_logical_block_size(bdev));
530 return put_uint(argp, bdev_physical_block_size(bdev));
532 return put_uint(argp, bdev_io_min(bdev));
534 return put_uint(argp, bdev_io_opt(bdev));
536 return put_int(argp, bdev_alignment_offset(bdev));
541 queue_max_sectors(bdev_get_queue(bdev)));
544 return put_ushort(argp, !bdev_nonrot(bdev));
549 bdev->bd_disk->bdi->ra_pages = (arg * 512) / PAGE_SIZE;
554 if (bdev_is_partition(bdev))
556 return disk_scan_partitions(bdev->bd_disk, mode);
560 return blk_trace_ioctl(bdev, cmd, argp);
562 return blkdev_pr_register(bdev, mode, argp);
564 return blkdev_pr_reserve(bdev, mode, argp);
566 return blkdev_pr_release(bdev, mode, argp);
568 return blkdev_pr_preempt(bdev, mode, argp, false);
570 return blkdev_pr_preempt(bdev, mode, argp, true);
572 return blkdev_pr_clear(bdev, mode, argp);
586 struct block_device *bdev = I_BDEV(file->f_mapping->host);
594 return blkdev_getgeo(bdev, argp);
596 return blkpg_ioctl(bdev, argp);
604 (bdev->bd_disk->bdi->ra_pages * PAGE_SIZE) / 512);
606 if (bdev_nr_sectors(bdev) > ~0UL)
608 return put_ulong(argp, bdev_nr_sectors(bdev));
612 return put_int(argp, block_size(bdev));
614 return blkdev_bszset(bdev, mode, argp);
616 return put_u64(argp, bdev_nr_bytes(bdev));
620 return blk_trace_ioctl(bdev, cmd, argp);
625 ret = blkdev_common_ioctl(bdev, mode, cmd, arg, argp);
629 if (!bdev->bd_disk->fops->ioctl)
631 return bdev->bd_disk->fops->ioctl(bdev, mode, cmd, arg);
647 struct block_device *bdev = I_BDEV(file->f_mapping->host);
648 struct gendisk *disk = bdev->bd_disk;
654 return compat_hdio_getgeo(bdev, argp);
656 return compat_blkpg_ioctl(bdev, argp);
664 (bdev->bd_disk->bdi->ra_pages * PAGE_SIZE) / 512);
666 if (bdev_nr_sectors(bdev) > ~(compat_ulong_t)0)
668 return compat_put_ulong(argp, bdev_nr_sectors(bdev));
672 return put_int(argp, bdev_logical_block_size(bdev));
674 return blkdev_bszset(bdev, mode, argp);
676 return put_u64(argp, bdev_nr_bytes(bdev));
680 return blk_trace_ioctl(bdev, cmd, argp);
685 ret = blkdev_common_ioctl(bdev, mode, cmd, arg, argp);
687 ret = disk->fops->compat_ioctl(bdev, mode, cmd, arg);