Lines Matching refs:disk

17 	 * Probe partition formats with tables at disk address 0
32 * disk address 0xdc0. Since these may also have stale
129 state->disk = hd;
285 * Must be called either with open_mutex held, before a disk can be opened or
286 * after all disk users are gone.
288 static struct block_device *add_partition(struct gendisk *disk, int partno,
293 struct device *ddev = disk_to_dev(disk);
299 lockdep_assert_held(&disk->open_mutex);
308 if (bdev_is_zoned(disk->part0)) {
310 disk->disk_name);
314 if (xa_load(&disk->part_tbl, partno))
317 /* ensure we always have a reference to the whole disk */
318 get_device(disk_to_dev(disk));
321 bdev = bdev_alloc(disk, partno);
341 if (bdev->bd_partno < disk->minors) {
342 devt = MKDEV(disk->major, disk->first_minor + bdev->bd_partno);
377 err = xa_insert(&disk->part_tbl, partno, bdev, GFP_KERNEL);
382 /* suppress uevent if the disk suppresses it */
394 put_disk(disk);
398 static bool partition_overlaps(struct gendisk *disk, sector_t start,
406 xa_for_each_start(&disk->part_tbl, idx, part, 1) {
419 int bdev_add_partition(struct gendisk *disk, int partno, sector_t start,
425 mutex_lock(&disk->open_mutex);
426 if (!disk_live(disk)) {
431 if (disk->flags & GENHD_FL_NO_PART) {
436 if (partition_overlaps(disk, start, length, -1)) {
441 part = add_partition(disk, partno, start, length,
445 mutex_unlock(&disk->open_mutex);
449 int bdev_del_partition(struct gendisk *disk, int partno)
454 mutex_lock(&disk->open_mutex);
455 part = xa_load(&disk->part_tbl, partno);
466 * @disk->open_mutex the device can't be claimed by anyone.
477 mutex_unlock(&disk->open_mutex);
481 int bdev_resize_partition(struct gendisk *disk, int partno, sector_t start,
487 mutex_lock(&disk->open_mutex);
488 part = xa_load(&disk->part_tbl, partno);
497 if (partition_overlaps(disk, start, length, partno))
504 mutex_unlock(&disk->open_mutex);
508 static bool disk_unlock_native_capacity(struct gendisk *disk)
510 if (!disk->fops->unlock_native_capacity ||
511 test_and_set_bit(GD_NATIVE_CAPACITY, &disk->state)) {
517 disk->fops->unlock_native_capacity(disk);
521 static bool blk_add_partition(struct gendisk *disk,
531 if (from >= get_capacity(disk)) {
534 disk->disk_name, p, (unsigned long long) from);
535 if (disk_unlock_native_capacity(disk))
540 if (from + size > get_capacity(disk)) {
543 disk->disk_name, p, (unsigned long long) size);
545 if (disk_unlock_native_capacity(disk))
551 * disk to avoid creating invalid block devices.
553 size = get_capacity(disk) - from;
556 part = add_partition(disk, p, from, size, state->parts[p].flags,
560 disk->disk_name, p, part);
571 static int blk_add_partitions(struct gendisk *disk)
576 if (disk->flags & GENHD_FL_NO_PART)
579 if (test_bit(GD_SUPPRESS_PART_SCAN, &disk->state))
582 state = check_partition(disk);
592 disk->disk_name);
593 if (disk_unlock_native_capacity(disk))
602 if (bdev_is_zoned(disk->part0)) {
604 disk->disk_name);
617 disk->disk_name);
618 if (disk_unlock_native_capacity(disk))
623 kobject_uevent(&disk_to_dev(disk)->kobj, KOBJ_CHANGE);
626 if (!blk_add_partition(disk, state, p))
635 int bdev_disk_changed(struct gendisk *disk, bool invalidate)
641 lockdep_assert_held(&disk->open_mutex);
643 if (!disk_live(disk))
647 if (disk->open_partitions)
649 sync_blockdev(disk->part0);
650 invalidate_bdev(disk->part0);
652 xa_for_each_start(&disk->part_tbl, idx, part, 1) {
661 * If @disk->open_partitions isn't elevated but there's
669 clear_bit(GD_NEED_PART_SCAN, &disk->state);
680 if (!(disk->flags & GENHD_FL_NO_PART) ||
681 !(disk->flags & GENHD_FL_REMOVABLE))
682 set_capacity(disk, 0);
685 if (get_capacity(disk)) {
686 ret = blk_add_partitions(disk);
694 kobject_uevent(&disk_to_dev(disk)->kobj, KOBJ_CHANGE);
707 struct address_space *mapping = state->disk->part0->bd_inode->i_mapping;
710 if (n >= get_capacity(state->disk)) {