こんにちは、私はカーネルプログラミングの初心者です。バックアップ メカニズムを実装するための wrapfs テンプレートに基づく小さなカーネル モジュールを作成しています。これは純粋に学習ベースです。
書き込み呼び出しが行われると、wrapfs が別のディレクトリにそのファイルのコピーを透過的に作成し、そのファイルに対して書き込みが実行されるように、wrapfs を拡張しています。しかし、書き込み呼び出しごとにコピーを作成したくありません。
素朴なアプローチは、そのディレクトリにファイルが存在するかどうかを確認することです。しかし、これをチェックするたびに、これは深刻なペナルティになる可能性があると思います。
また、最初の書き込み呼び出しを確認してから、private_data 属性を使用してその特定のファイルの値を保存することもできます。しかし、それはディスクに保存されません。そのため、もう一度確認する必要があります。
修正時間を活用することも考えていました。修正時間を節約できました。古い変更時刻がその時刻より前の場合、コピーのみが作成されます。それ以外の場合は何もしません。これに inode.i_mtime を使用しようとしましたが、書き込みが呼び出される前でも変更された時刻でした。アプリケーションもその時刻を変更できます。
そのため、バックアップが作成されたかどうかを示す値をディスク上の i ノードに保存することを考えていました。それは可能ですか?他の提案やアプローチは大歓迎です。