我正在编写一个 Linux 块设备驱动程序,并且我有很多初始化工作。但是,当我最终调用时add_disk()
,模块在insmod
.
有问题的片段在这里:
set_capacity(gendisk, dev->nsectors);
add_disk(gendisk);
//this line is never reached
我正在编写一个 Linux 块设备驱动程序,并且我有很多初始化工作。但是,当我最终调用时add_disk()
,模块在insmod
.
有问题的片段在这里:
set_capacity(gendisk, dev->nsectors);
add_disk(gendisk);
//this line is never reached
这似乎是由于在添加磁盘set_capacity()
之前设置了容量造成的。根据这个邮件列表,add_disk
应该在 gendisk 上调用gendisk->capacity = 0
,否则它会挂起check_partition()
。
以下似乎有效:
set_capacity(gendisk, 0)
add_disk(gendisk);
set_capacity(gendisk, dev->nsectors);