2012-11-22 5 views
6

私はLinuxブロックデバイスドライバを書いています。私は多くの初期化作業をしています。しかし、私が最後にadd_disk()と呼ぶと、モジュールはinsmodの間にハングします。insmodでadd_disk()がハングします

問題のスニペットはここにある:

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

//this line is never reached 

答えて

6

これはは、ディスクを追加する前にset_capacity()と容量を設定することによって引き起こされると思われます。 this mailing listによれば、add_diskgendisk->capacity = 0とgendiskで呼び出されます。それ以外の場合はcheck_partition()にハングアップします。

次の仕事に表示されます。

set_capacity(gendisk, 0) 
add_disk(gendisk); 
set_capacity(gendisk, dev->nsectors); 
関連する問題