我正在编写一个
Linux块设备驱动程序,我有很多初始化工作.但是,当我最终调用add_disk()时,模块在insmod期间挂起.
有问题的片段在这里:
set_capacity(gendisk,dev->nsectors); add_disk(gendisk); //this line is never reached
解决方法
这似乎是在添加磁盘之前使用set_capacity()设置容量引起的.根据
this mailing list,应该在gendisk-> capacity = 0的gendisk上调用add_disk,否则它会在check_partition()中挂起.
以下似乎有效:
set_capacity(gendisk,0) add_disk(gendisk); set_capacity(gendisk,dev->nsectors);