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()
378 static bool disk_unlock_native_capacity(struct gendisk *disk) in disk_unlock_native_capacity() argument
380 const struct block_device_operations *bdops = disk->fops; in disk_unlock_native_capacity()
383 !(disk->flags & GENHD_FL_NATIVE_CAPACITY)) { in disk_unlock_native_capacity()
385 bdops->unlock_native_capacity(disk); in disk_unlock_native_capacity()
386 disk->flags |= GENHD_FL_NATIVE_CAPACITY; in disk_unlock_native_capacity()
394 static int drop_partitions(struct gendisk *disk, struct block_device *bdev) in drop_partitions() argument
402 res = invalidate_partition(disk, 0); in drop_partitions()
406 disk_part_iter_init(&piter, disk, DISK_PITER_INCL_EMPTY); in drop_partitions()
408 delete_partition(disk, part->partno); in drop_partitions()
414 int rescan_partitions(struct gendisk *disk, struct block_device *bdev) in rescan_partitions() argument
425 res = drop_partitions(disk, bdev); in rescan_partitions()
429 if (disk->fops->revalidate_disk) in rescan_partitions()
430 disk->fops->revalidate_disk(disk); in rescan_partitions()
431 check_disk_size_change(disk, bdev); in rescan_partitions()
433 if (!get_capacity(disk) || !(state = check_partition(disk, bdev))) in rescan_partitions()
443 disk->disk_name); in rescan_partitions()
444 if (disk_unlock_native_capacity(disk)) in rescan_partitions()
457 disk->disk_name); in rescan_partitions()
458 if (disk_unlock_native_capacity(disk)) in rescan_partitions()
463 kobject_uevent(&disk_to_dev(disk)->kobj, KOBJ_CHANGE); in rescan_partitions()
473 disk_expand_part_tbl(disk, highest); in rescan_partitions()
485 if (from >= get_capacity(disk)) { in rescan_partitions()
488 disk->disk_name, p, (unsigned long long) from); in rescan_partitions()
489 if (disk_unlock_native_capacity(disk)) in rescan_partitions()
494 if (from + size > get_capacity(disk)) { in rescan_partitions()
497 disk->disk_name, p, (unsigned long long) size); in rescan_partitions()
499 if (disk_unlock_native_capacity(disk)) { in rescan_partitions()
509 size = get_capacity(disk) - from; in rescan_partitions()
515 part = add_partition(disk, p, from, size, in rescan_partitions()
520 disk->disk_name, p, -PTR_ERR(part)); in rescan_partitions()
532 int invalidate_partitions(struct gendisk *disk, struct block_device *bdev) in invalidate_partitions() argument
539 res = drop_partitions(disk, bdev); in invalidate_partitions()
543 set_capacity(disk, 0); in invalidate_partitions()
544 check_disk_size_change(disk, bdev); in invalidate_partitions()
547 kobject_uevent(&disk_to_dev(disk)->kobj, KOBJ_CHANGE); in invalidate_partitions()