Lines Matching refs:disk
54 void set_capacity(struct gendisk *disk, sector_t sectors) in set_capacity() argument
56 struct block_device *bdev = disk->part0; in set_capacity()
68 bool set_capacity_and_notify(struct gendisk *disk, sector_t size) in set_capacity_and_notify() argument
70 sector_t capacity = get_capacity(disk); in set_capacity_and_notify()
73 set_capacity(disk, size); in set_capacity_and_notify()
81 !disk_live(disk) || in set_capacity_and_notify()
82 (disk->flags & GENHD_FL_HIDDEN)) in set_capacity_and_notify()
86 disk->disk_name, capacity, size); in set_capacity_and_notify()
94 kobject_uevent_env(&disk_to_dev(disk)->kobj, KOBJ_CHANGE, envp); in set_capacity_and_notify()
349 void disk_uevent(struct gendisk *disk, enum kobject_action action) in disk_uevent() argument
355 xa_for_each(&disk->part_tbl, idx, part) { in disk_uevent()
370 static void disk_scan_partitions(struct gendisk *disk) in disk_scan_partitions() argument
374 if (!get_capacity(disk) || !disk_part_scan_enabled(disk)) in disk_scan_partitions()
377 set_bit(GD_NEED_PART_SCAN, &disk->state); in disk_scan_partitions()
378 bdev = blkdev_get_by_dev(disk_devt(disk), FMODE_READ, NULL); in disk_scan_partitions()
392 int device_add_disk(struct device *parent, struct gendisk *disk, in device_add_disk() argument
396 struct device *ddev = disk_to_dev(disk); in device_add_disk()
405 elevator_init_mq(disk->queue); in device_add_disk()
414 if (disk->major) { in device_add_disk()
415 if (WARN_ON(!disk->minors)) in device_add_disk()
418 if (disk->minors > DISK_MAX_PARTS) { in device_add_disk()
421 disk->minors = DISK_MAX_PARTS; in device_add_disk()
424 if (WARN_ON(disk->minors)) in device_add_disk()
430 disk->major = BLOCK_EXT_MAJOR; in device_add_disk()
431 disk->first_minor = ret; in device_add_disk()
432 disk->flags |= GENHD_FL_EXT_DEVT; in device_add_disk()
435 ret = disk_alloc_events(disk); in device_add_disk()
444 dev_set_name(ddev, "%s", disk->disk_name); in device_add_disk()
445 if (!(disk->flags & GENHD_FL_HIDDEN)) in device_add_disk()
446 ddev->devt = MKDEV(disk->major, disk->first_minor); in device_add_disk()
464 ret = blk_integrity_add(disk); in device_add_disk()
468 disk->part0->bd_holder_dir = in device_add_disk()
470 if (!disk->part0->bd_holder_dir) in device_add_disk()
472 disk->slave_dir = kobject_create_and_add("slaves", &ddev->kobj); in device_add_disk()
473 if (!disk->slave_dir) in device_add_disk()
476 ret = bd_register_pending_holders(disk); in device_add_disk()
480 ret = blk_register_queue(disk); in device_add_disk()
484 if (disk->flags & GENHD_FL_HIDDEN) { in device_add_disk()
489 disk->flags |= GENHD_FL_SUPPRESS_PARTITION_INFO; in device_add_disk()
490 disk->flags |= GENHD_FL_NO_PART_SCAN; in device_add_disk()
492 ret = bdi_register(disk->bdi, "%u:%u", in device_add_disk()
493 disk->major, disk->first_minor); in device_add_disk()
496 bdi_set_owner(disk->bdi, ddev); in device_add_disk()
498 &disk->bdi->dev->kobj, "bdi"); in device_add_disk()
502 bdev_add(disk->part0, ddev->devt); in device_add_disk()
503 disk_scan_partitions(disk); in device_add_disk()
510 disk_uevent(disk, KOBJ_ADD); in device_add_disk()
513 disk_update_readahead(disk); in device_add_disk()
514 disk_add_events(disk); in device_add_disk()
518 if (!(disk->flags & GENHD_FL_HIDDEN)) in device_add_disk()
519 bdi_unregister(disk->bdi); in device_add_disk()
521 blk_unregister_queue(disk); in device_add_disk()
523 kobject_put(disk->slave_dir); in device_add_disk()
525 kobject_put(disk->part0->bd_holder_dir); in device_add_disk()
527 blk_integrity_del(disk); in device_add_disk()
534 disk_release_events(disk); in device_add_disk()
536 if (disk->major == BLOCK_EXT_MAJOR) in device_add_disk()
537 blk_free_ext_minor(disk->first_minor); in device_add_disk()
561 void del_gendisk(struct gendisk *disk) in del_gendisk() argument
563 struct request_queue *q = disk->queue; in del_gendisk()
567 if (WARN_ON_ONCE(!disk_live(disk) && !(disk->flags & GENHD_FL_HIDDEN))) in del_gendisk()
570 blk_integrity_del(disk); in del_gendisk()
571 disk_del_events(disk); in del_gendisk()
573 mutex_lock(&disk->open_mutex); in del_gendisk()
574 remove_inode_hash(disk->part0->bd_inode); in del_gendisk()
575 blk_drop_partitions(disk); in del_gendisk()
576 mutex_unlock(&disk->open_mutex); in del_gendisk()
578 fsync_bdev(disk->part0); in del_gendisk()
579 __invalidate_device(disk->part0, true); in del_gendisk()
584 set_bit(GD_DEAD, &disk->state); in del_gendisk()
585 set_capacity(disk, 0); in del_gendisk()
592 if (!(disk->flags & GENHD_FL_HIDDEN)) { in del_gendisk()
593 sysfs_remove_link(&disk_to_dev(disk)->kobj, "bdi"); in del_gendisk()
599 bdi_unregister(disk->bdi); in del_gendisk()
602 blk_unregister_queue(disk); in del_gendisk()
604 kobject_put(disk->part0->bd_holder_dir); in del_gendisk()
605 kobject_put(disk->slave_dir); in del_gendisk()
607 part_stat_set_all(disk->part0, 0); in del_gendisk()
608 disk->part0->bd_stamp = 0; in del_gendisk()
610 sysfs_remove_link(block_depr, dev_name(disk_to_dev(disk))); in del_gendisk()
611 pm_runtime_set_memalloc_noio(disk_to_dev(disk), false); in del_gendisk()
612 device_del(disk_to_dev(disk)); in del_gendisk()
633 struct gendisk *disk = dev_to_disk(dev); in disk_badblocks_show() local
635 if (!disk->bb) in disk_badblocks_show()
638 return badblocks_show(disk->bb, page, 0); in disk_badblocks_show()
645 struct gendisk *disk = dev_to_disk(dev); in disk_badblocks_store() local
647 if (!disk->bb) in disk_badblocks_store()
650 return badblocks_store(disk->bb, page, len, 0); in disk_badblocks_store()
685 struct gendisk *disk = dev_to_disk(dev); in printk_all_partitions() local
694 if (get_capacity(disk) == 0 || in printk_all_partitions()
695 (disk->flags & GENHD_FL_SUPPRESS_PARTITION_INFO)) in printk_all_partitions()
703 xa_for_each(&disk->part_tbl, idx, part) { in printk_all_partitions()
838 struct gendisk *disk = dev_to_disk(dev); in disk_range_show() local
840 return sprintf(buf, "%d\n", disk->minors); in disk_range_show()
846 struct gendisk *disk = dev_to_disk(dev); in disk_ext_range_show() local
848 return sprintf(buf, "%d\n", disk_max_parts(disk)); in disk_ext_range_show()
854 struct gendisk *disk = dev_to_disk(dev); in disk_removable_show() local
857 (disk->flags & GENHD_FL_REMOVABLE ? 1 : 0)); in disk_removable_show()
863 struct gendisk *disk = dev_to_disk(dev); in disk_hidden_show() local
866 (disk->flags & GENHD_FL_HIDDEN ? 1 : 0)); in disk_hidden_show()
872 struct gendisk *disk = dev_to_disk(dev); in disk_ro_show() local
874 return sprintf(buf, "%d\n", get_disk_ro(disk) ? 1 : 0); in disk_ro_show()
945 struct gendisk *disk = dev_to_disk(dev); in disk_capability_show() local
947 return sprintf(buf, "%x\n", disk->flags); in disk_capability_show()
954 struct gendisk *disk = dev_to_disk(dev); in disk_alignment_offset_show() local
956 return sprintf(buf, "%d\n", queue_alignment_offset(disk->queue)); in disk_alignment_offset_show()
963 struct gendisk *disk = dev_to_disk(dev); in disk_discard_alignment_show() local
965 return sprintf(buf, "%d\n", queue_discard_alignment(disk->queue)); in disk_discard_alignment_show()
971 struct gendisk *disk = dev_to_disk(dev); in diskseq_show() local
973 return sprintf(buf, "%llu\n", disk->diskseq); in diskseq_show()
1047 struct gendisk *disk = dev_to_disk(dev); in disk_visible() local
1049 if (a == &dev_attr_badblocks.attr && !disk->bb) in disk_visible()
1080 struct gendisk *disk = dev_to_disk(dev); in disk_release() local
1083 WARN_ON_ONCE(disk_live(disk)); in disk_release()
1085 disk_release_events(disk); in disk_release()
1086 kfree(disk->random); in disk_release()
1087 xa_destroy(&disk->part_tbl); in disk_release()
1088 disk->queue->disk = NULL; in disk_release()
1089 blk_put_queue(disk->queue); in disk_release()
1090 iput(disk->part0->bd_inode); /* frees the disk */ in disk_release()
1095 struct gendisk *disk = dev_to_disk(dev); in block_uevent() local
1097 return add_uevent_var(env, "DISKSEQ=%llu", disk->diskseq); in block_uevent()
1108 struct gendisk *disk = dev_to_disk(dev); in block_devnode() local
1110 if (disk->fops->devnode) in block_devnode()
1111 return disk->fops->devnode(disk, mode); in block_devnode()
1212 dev_t part_devt(struct gendisk *disk, u8 partno) in part_devt() argument
1218 part = xa_load(&disk->part_tbl, partno); in part_devt()
1234 struct gendisk *disk = dev_to_disk(dev); in blk_lookup_devt() local
1239 if (partno < disk->minors) { in blk_lookup_devt()
1246 devt = part_devt(disk, partno); in blk_lookup_devt()
1258 struct gendisk *disk; in __alloc_disk_node() local
1263 disk = kzalloc_node(sizeof(struct gendisk), GFP_KERNEL, node_id); in __alloc_disk_node()
1264 if (!disk) in __alloc_disk_node()
1267 disk->bdi = bdi_alloc(node_id); in __alloc_disk_node()
1268 if (!disk->bdi) in __alloc_disk_node()
1271 disk->part0 = bdev_alloc(disk, 0); in __alloc_disk_node()
1272 if (!disk->part0) in __alloc_disk_node()
1275 disk->node_id = node_id; in __alloc_disk_node()
1276 mutex_init(&disk->open_mutex); in __alloc_disk_node()
1277 xa_init(&disk->part_tbl); in __alloc_disk_node()
1278 if (xa_insert(&disk->part_tbl, 0, disk->part0, GFP_KERNEL)) in __alloc_disk_node()
1281 rand_initialize_disk(disk); in __alloc_disk_node()
1282 disk_to_dev(disk)->class = &block_class; in __alloc_disk_node()
1283 disk_to_dev(disk)->type = &disk_type; in __alloc_disk_node()
1284 device_initialize(disk_to_dev(disk)); in __alloc_disk_node()
1285 inc_diskseq(disk); in __alloc_disk_node()
1286 disk->queue = q; in __alloc_disk_node()
1287 q->disk = disk; in __alloc_disk_node()
1288 lockdep_init_map(&disk->lockdep_map, "(bio completion)", lkclass, 0); in __alloc_disk_node()
1290 INIT_LIST_HEAD(&disk->slave_bdevs); in __alloc_disk_node()
1292 return disk; in __alloc_disk_node()
1295 xa_destroy(&disk->part_tbl); in __alloc_disk_node()
1296 disk->part0->bd_disk = NULL; in __alloc_disk_node()
1297 iput(disk->part0->bd_inode); in __alloc_disk_node()
1299 bdi_put(disk->bdi); in __alloc_disk_node()
1301 kfree(disk); in __alloc_disk_node()
1311 struct gendisk *disk; in __blk_alloc_disk() local
1317 disk = __alloc_disk_node(q, node, lkclass); in __blk_alloc_disk()
1318 if (!disk) { in __blk_alloc_disk()
1322 return disk; in __blk_alloc_disk()
1336 void put_disk(struct gendisk *disk) in put_disk() argument
1338 if (disk) in put_disk()
1339 put_device(disk_to_dev(disk)); in put_disk()
1352 void blk_cleanup_disk(struct gendisk *disk) in blk_cleanup_disk() argument
1354 blk_cleanup_queue(disk->queue); in blk_cleanup_disk()
1355 put_disk(disk); in blk_cleanup_disk()
1378 void set_disk_ro(struct gendisk *disk, bool read_only) in set_disk_ro() argument
1381 if (test_and_set_bit(GD_READ_ONLY, &disk->state)) in set_disk_ro()
1384 if (!test_and_clear_bit(GD_READ_ONLY, &disk->state)) in set_disk_ro()
1387 set_disk_ro_uevent(disk, read_only); in set_disk_ro()
1397 void inc_diskseq(struct gendisk *disk) in inc_diskseq() argument
1399 disk->diskseq = atomic64_inc_return(&diskseq); in inc_diskseq()