Lines Matching refs:disk
241 void delete_partition(struct gendisk *disk, int partno) in delete_partition() argument
243 struct disk_part_tbl *ptbl = disk->part_tbl; in delete_partition()
269 struct hd_struct *add_partition(struct gendisk *disk, int partno, in add_partition() argument
275 struct device *ddev = disk_to_dev(disk); in add_partition()
281 err = disk_expand_part_tbl(disk, partno); in add_partition()
284 ptbl = disk->part_tbl; in add_partition()
303 queue_limit_alignment_offset(&disk->queue->limits, start); in add_partition()
305 queue_limit_discard_alignment(&disk->queue->limits, start); in add_partition()
308 p->policy = get_disk_ro(disk); in add_partition()
311 struct partition_meta_info *pinfo = alloc_part_info(disk); in add_partition()
385 static bool disk_unlock_native_capacity(struct gendisk *disk) in disk_unlock_native_capacity() argument
387 const struct block_device_operations *bdops = disk->fops; in disk_unlock_native_capacity()
390 !(disk->flags & GENHD_FL_NATIVE_CAPACITY)) { in disk_unlock_native_capacity()
392 bdops->unlock_native_capacity(disk); in disk_unlock_native_capacity()
393 disk->flags |= GENHD_FL_NATIVE_CAPACITY; in disk_unlock_native_capacity()
401 static int drop_partitions(struct gendisk *disk, struct block_device *bdev) in drop_partitions() argument
409 res = invalidate_partition(disk, 0); in drop_partitions()
413 disk_part_iter_init(&piter, disk, DISK_PITER_INCL_EMPTY); in drop_partitions()
415 delete_partition(disk, part->partno); in drop_partitions()
421 int rescan_partitions(struct gendisk *disk, struct block_device *bdev) in rescan_partitions() argument
432 res = drop_partitions(disk, bdev); in rescan_partitions()
436 if (disk->fops->revalidate_disk) in rescan_partitions()
437 disk->fops->revalidate_disk(disk); in rescan_partitions()
438 blk_integrity_revalidate(disk); in rescan_partitions()
439 check_disk_size_change(disk, bdev); in rescan_partitions()
441 if (!get_capacity(disk) || !(state = check_partition(disk, bdev))) in rescan_partitions()
451 disk->disk_name); in rescan_partitions()
452 if (disk_unlock_native_capacity(disk)) in rescan_partitions()
465 disk->disk_name); in rescan_partitions()
466 if (disk_unlock_native_capacity(disk)) in rescan_partitions()
471 kobject_uevent(&disk_to_dev(disk)->kobj, KOBJ_CHANGE); in rescan_partitions()
481 disk_expand_part_tbl(disk, highest); in rescan_partitions()
493 if (from >= get_capacity(disk)) { in rescan_partitions()
496 disk->disk_name, p, (unsigned long long) from); in rescan_partitions()
497 if (disk_unlock_native_capacity(disk)) in rescan_partitions()
502 if (from + size > get_capacity(disk)) { in rescan_partitions()
505 disk->disk_name, p, (unsigned long long) size); in rescan_partitions()
507 if (disk_unlock_native_capacity(disk)) { in rescan_partitions()
517 size = get_capacity(disk) - from; in rescan_partitions()
523 part = add_partition(disk, p, from, size, in rescan_partitions()
528 disk->disk_name, p, -PTR_ERR(part)); in rescan_partitions()
540 int invalidate_partitions(struct gendisk *disk, struct block_device *bdev) in invalidate_partitions() argument
547 res = drop_partitions(disk, bdev); in invalidate_partitions()
551 set_capacity(disk, 0); in invalidate_partitions()
552 check_disk_size_change(disk, bdev); in invalidate_partitions()
555 kobject_uevent(&disk_to_dev(disk)->kobj, KOBJ_CHANGE); in invalidate_partitions()