720 struct gendisk *alloc_disk(int minors)
721 {
722 return alloc_disk_node(minors, -1);
723 }
724
725 struct gendisk *alloc_disk_node(int minors, int node_id)
726 {
727 struct gendisk *disk;
728
729 disk = kmalloc_node(sizeof(struct gendisk), GFP_KERNEL, node_id);
730 if (disk) {
731 memset(disk, 0, sizeof(struct gendisk));
732 if (!init_disk_stats(disk)) {
733 kfree(disk);
734 return NULL;
735 }
736 if (minors > 1) {
737 int size = (minors – 1) * sizeof(struct hd_struct *);
738 disk->part = kmalloc_node(size, GFP_KERNEL, node_id);
739 if (!disk->part) {
740 kfree(disk);
741 return NULL;
742 }
743 memset(disk->part, 0, size);
744 }
745 disk->minors = minors;
746 kobj_set_kset_s(disk,block_subsys);
747 kobject_init(&disk->kobj);
748 rand_initialize_disk(disk);
749 INIT_WORK(&disk->async_notify,
750 media_change_notify_thread);
751 }
752 return disk;
753 }
没有什么可留恋,只有抑制不住的梦想,