add_disk()在insmod上挂起

时间:2012-11-22 18:35:49

标签: linux-device-driver insmod

我正在编写一个Linux块设备驱动程序,我有很多初始化工作。但是,当我最终致电add_disk()时,模块会在insmod期间挂起。

有问题的片段在这里:

set_capacity(gendisk, dev->nsectors);
add_disk(gendisk);

//this line is never reached

1 个答案:

答案 0 :(得分:6)

这似乎是由于在添加磁盘之前使用set_capacity() 设置容量所致。根据{{​​3}},add_disk应在带有gendisk->capacity = 0的gendisk上调用,否则会在check_partition()中挂起。

以下似乎有效:

set_capacity(gendisk, 0)
add_disk(gendisk);
set_capacity(gendisk, dev->nsectors);