私は 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);