最初のブロックデバイスにマウント時にデータが含まれ、もう一方が空であると見なされるように、2つのブロックデバイスを新しいブロックデバイスにバインドするカーネルモジュールの開発に興味があります。すべての書き込みは2番目のパーティションに対して行われるため、次のマウントではベースファイルシステムは変更されません。私はUnionFSのようなソリューションを知っていますが、それらはファイルシステムベースですが、それをより低い層のブロックベースで開発したいと思っています。
カーネルモジュールから広告読み取り/書き込みブロックデバイスを開く方法を教えてもらえますか?おそらく、マージされたブロックデバイスの読み取り/書き込みにユーザースペースプログラムを使用せずに。ここで同様のトピックを見つけましたが、filp_ *関数は(大きな)ブロックデバイスI / Oではなく、小さな構成ファイルを読み取るためのものであるため、答えはかなり満足のいくものではありませんでした。
ブロックデバイスを作成するためのインターフェイスは標準化されているため、ソースデバイスを実装する関数に直接(またはほぼ直接)アクセスすることを考えていました。とにかく同様の関数をエクスポートするように要求されるためです。それができれば、ソースデバイスで適切な関数を呼び出すプロキシ関数を作成するだけです。どういうわけか、別のドライバーに属するgendisk構造へのポインターを取得できますか?
これは私自身の目的にしか役立たないので(それらの主なものであるクオリオシティを満たす)、私はカーネルを真剣に台無しにすることを心配していません。
または、そのようなモジュールがすでに存在するかどうか誰かが知っていますか?