Lines Matching full:disk
1108 struct gendisk *disk = get_gendisk(bdev->bd_dev, partno); in bdev_get_gendisk() local
1110 if (!disk) in bdev_get_gendisk()
1121 put_disk_and_module(disk); in bdev_get_gendisk()
1124 return disk; in bdev_get_gendisk()
1184 struct gendisk *disk; member
1189 struct gendisk *disk) in bd_find_holder_disk() argument
1194 if (holder->disk == disk) in bd_find_holder_disk()
1210 * bd_link_disk_holder - create symlinks between holding disk and slave bdev
1212 * @disk: the holding disk
1218 * - from "slaves" directory of the holder @disk to the claimed @bdev
1219 * - from "holders" directory of the @bdev to the holder @disk
1221 * For example, if /dev/dm-0 maps to /dev/sda and disk for dm-0 is
1228 * ensure that both @bdev and @disk are valid during the creation and
1237 int bd_link_disk_holder(struct block_device *bdev, struct gendisk *disk) in bd_link_disk_holder() argument
1247 if (WARN_ON(!disk->slave_dir || !bdev->bd_part->holder_dir)) in bd_link_disk_holder()
1250 holder = bd_find_holder_disk(bdev, disk); in bd_link_disk_holder()
1263 holder->disk = disk; in bd_link_disk_holder()
1266 ret = add_symlink(disk->slave_dir, &part_to_dev(bdev->bd_part)->kobj); in bd_link_disk_holder()
1270 ret = add_symlink(bdev->bd_part->holder_dir, &disk_to_dev(disk)->kobj); in bd_link_disk_holder()
1283 del_symlink(disk->slave_dir, &part_to_dev(bdev->bd_part)->kobj); in bd_link_disk_holder()
1295 * @disk: the holding disk
1302 void bd_unlink_disk_holder(struct block_device *bdev, struct gendisk *disk) in bd_unlink_disk_holder() argument
1308 holder = bd_find_holder_disk(bdev, disk); in bd_unlink_disk_holder()
1311 del_symlink(disk->slave_dir, &part_to_dev(bdev->bd_part)->kobj); in bd_unlink_disk_holder()
1313 &disk_to_dev(disk)->kobj); in bd_unlink_disk_holder()
1325 * check_disk_size_change - checks for disk size change and adjusts bdev size.
1326 * @disk: struct gendisk to check
1330 * This routine checks to see if the bdev size does not match the disk size
1334 static void check_disk_size_change(struct gendisk *disk, in check_disk_size_change() argument
1340 disk_size = (loff_t)get_capacity(disk) << 9; in check_disk_size_change()
1346 disk->disk_name, bdev_size, disk_size); in check_disk_size_change()
1354 pr_warn("VFS: busy inodes on resized disk %s\n", in check_disk_size_change()
1355 disk->disk_name); in check_disk_size_change()
1360 * revalidate_disk_size - checks for disk size change and adjusts bdev size.
1361 * @disk: struct gendisk to check
1364 * This routine checks to see if the bdev size does not match the disk size
1368 void revalidate_disk_size(struct gendisk *disk, bool verbose) in revalidate_disk_size() argument
1376 if (disk->flags & GENHD_FL_HIDDEN) in revalidate_disk_size()
1379 bdev = bdget_disk(disk, 0); in revalidate_disk_size()
1381 check_disk_size_change(disk, bdev, verbose); in revalidate_disk_size()
1399 struct gendisk *disk = bdev->bd_disk; in bdev_disk_changed() local
1404 if (!(disk->flags & GENHD_FL_UP)) in bdev_disk_changed()
1412 clear_bit(GD_NEED_PART_SCAN, &disk->state); in bdev_disk_changed()
1423 if (disk_part_scan_enabled(disk) || in bdev_disk_changed()
1424 !(disk->flags & GENHD_FL_REMOVABLE)) in bdev_disk_changed()
1425 set_capacity(disk, 0); in bdev_disk_changed()
1427 if (disk->fops->revalidate_disk) in bdev_disk_changed()
1428 disk->fops->revalidate_disk(disk); in bdev_disk_changed()
1431 check_disk_size_change(disk, bdev, !invalidate); in bdev_disk_changed()
1433 if (get_capacity(disk)) { in bdev_disk_changed()
1434 ret = blk_add_partitions(disk, bdev); in bdev_disk_changed()
1442 kobject_uevent(&disk_to_dev(disk)->kobj, KOBJ_CHANGE); in bdev_disk_changed()
1464 struct gendisk *disk; in __blkdev_get() local
1472 disk = bdev_get_gendisk(bdev, &partno); in __blkdev_get()
1473 if (!disk) in __blkdev_get()
1477 whole = bdget_disk(disk, 0); in __blkdev_get()
1495 disk_block_events(disk); in __blkdev_get()
1499 bdev->bd_disk = disk; in __blkdev_get()
1505 bdev->bd_part = disk_get_part(disk, partno); in __blkdev_get()
1510 if (disk->fops->open) { in __blkdev_get()
1511 ret = disk->fops->open(bdev, mode); in __blkdev_get()
1513 * If we lost a race with 'disk' being deleted, in __blkdev_get()
1521 bd_set_nr_sectors(bdev, get_capacity(disk)); in __blkdev_get()
1531 if (test_bit(GD_NEED_PART_SCAN, &disk->state) && in __blkdev_get()
1543 bdev->bd_part = disk_get_part(disk, partno); in __blkdev_get()
1544 if (!(disk->flags & GENHD_FL_UP) || in __blkdev_get()
1554 bdev->bd_bdi = bdi_get(disk->queue->backing_dev_info); in __blkdev_get()
1561 if (test_bit(GD_NEED_PART_SCAN, &disk->state) && in __blkdev_get()
1581 (disk->flags & GENHD_FL_BLOCK_EVENTS_ON_EXCL_WRITE)) { in __blkdev_get()
1588 disk_unblock_events(disk); in __blkdev_get()
1590 /* only one opener holds refs to the module and disk */ in __blkdev_get()
1592 put_disk_and_module(disk); in __blkdev_get()
1608 disk_unblock_events(disk); in __blkdev_get()
1613 put_disk_and_module(disk); in __blkdev_get()
1773 struct gendisk *disk = bdev->bd_disk; in __blkdev_put() local
1798 if (disk->fops->release) in __blkdev_put()
1799 disk->fops->release(disk, mode); in __blkdev_put()
1809 put_disk_and_module(disk); in __blkdev_put()