Lines Matching refs:disk

270 void delete_partition(struct gendisk *disk, int partno)  in delete_partition()  argument
273 rcu_dereference_protected(disk->part_tbl, 1); in delete_partition()
309 struct hd_struct *add_partition(struct gendisk *disk, int partno, in add_partition() argument
315 struct device *ddev = disk_to_dev(disk); in add_partition()
321 err = disk_expand_part_tbl(disk, partno); in add_partition()
324 ptbl = rcu_dereference_protected(disk->part_tbl, 1); in add_partition()
343 queue_limit_alignment_offset(&disk->queue->limits, start); in add_partition()
345 queue_limit_discard_alignment(&disk->queue->limits, start); in add_partition()
348 p->policy = get_disk_ro(disk); in add_partition()
351 struct partition_meta_info *pinfo = alloc_part_info(disk); in add_partition()
426 static bool disk_unlock_native_capacity(struct gendisk *disk) in disk_unlock_native_capacity() argument
428 const struct block_device_operations *bdops = disk->fops; in disk_unlock_native_capacity()
431 !(disk->flags & GENHD_FL_NATIVE_CAPACITY)) { in disk_unlock_native_capacity()
433 bdops->unlock_native_capacity(disk); in disk_unlock_native_capacity()
434 disk->flags |= GENHD_FL_NATIVE_CAPACITY; in disk_unlock_native_capacity()
442 static int drop_partitions(struct gendisk *disk, struct block_device *bdev) in drop_partitions() argument
450 res = invalidate_partition(disk, 0); in drop_partitions()
454 disk_part_iter_init(&piter, disk, DISK_PITER_INCL_EMPTY); in drop_partitions()
456 delete_partition(disk, part->partno); in drop_partitions()
462 static bool part_zone_aligned(struct gendisk *disk, in part_zone_aligned() argument
493 if ((from + size) < get_capacity(disk)) { in part_zone_aligned()
503 if ((from + size) < get_capacity(disk) && in part_zone_aligned()
512 int rescan_partitions(struct gendisk *disk, struct block_device *bdev) in rescan_partitions() argument
523 res = drop_partitions(disk, bdev); in rescan_partitions()
527 if (disk->fops->revalidate_disk) in rescan_partitions()
528 disk->fops->revalidate_disk(disk); in rescan_partitions()
529 check_disk_size_change(disk, bdev, true); in rescan_partitions()
531 if (!get_capacity(disk) || !(state = check_partition(disk, bdev))) in rescan_partitions()
541 disk->disk_name); in rescan_partitions()
542 if (disk_unlock_native_capacity(disk)) in rescan_partitions()
555 disk->disk_name); in rescan_partitions()
556 if (disk_unlock_native_capacity(disk)) in rescan_partitions()
561 kobject_uevent(&disk_to_dev(disk)->kobj, KOBJ_CHANGE); in rescan_partitions()
571 disk_expand_part_tbl(disk, highest); in rescan_partitions()
582 if (from >= get_capacity(disk)) { in rescan_partitions()
585 disk->disk_name, p, (unsigned long long) from); in rescan_partitions()
586 if (disk_unlock_native_capacity(disk)) in rescan_partitions()
591 if (from + size > get_capacity(disk)) { in rescan_partitions()
594 disk->disk_name, p, (unsigned long long) size); in rescan_partitions()
596 if (disk_unlock_native_capacity(disk)) { in rescan_partitions()
606 size = get_capacity(disk) - from; in rescan_partitions()
617 !part_zone_aligned(disk, bdev, from, size)) { in rescan_partitions()
620 disk->disk_name, p, (unsigned long long) from, in rescan_partitions()
625 part = add_partition(disk, p, from, size, in rescan_partitions()
630 disk->disk_name, p, -PTR_ERR(part)); in rescan_partitions()
642 int invalidate_partitions(struct gendisk *disk, struct block_device *bdev) in invalidate_partitions() argument
649 res = drop_partitions(disk, bdev); in invalidate_partitions()
653 set_capacity(disk, 0); in invalidate_partitions()
654 check_disk_size_change(disk, bdev, false); in invalidate_partitions()
657 kobject_uevent(&disk_to_dev(disk)->kobj, KOBJ_CHANGE); in invalidate_partitions()