LinuxでFATがインストールされた理由だけでFATを「ダーティ」とマークするのはなぜですか?

LinuxでFATがインストールされた理由だけでFATを「ダーティ」とマークするのはなぜですか?

USBスティック(FAT形式)をWindows PCに接続し、「取り出さずに」取り出して再接続すると、Windowsに問題はなく、「問題がある可能性がある」ことについて何も提供しません。警告する

ただし、Linux(Ubuntu 15.04など)で同じ操作を実行すると、2回目の挿入後にログに次の警告メッセージが表示されます。

FAT-fs (sdf1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.

その後、Windows PCに挿入すると、エラーを確認するように求められます。

LinuxがFAT "ダーティー"フラグをとても簡単に処理するのはなぜですか?実際に「汚い」ことができる場合は、「汚れた」フラグを設定する方が良いと思いました。たとえば、次のようになります。

  • ファイルに書き込むときに"dirty"フラグを設定してください。
  • 次の場合、「ダーティ」フラグがクリアされます。
    • 記録されたすべてのファイルが閉じられました。および/または
    • 書き込みキャッシュはディスクに書き込まれます。
    • もちろん、ディスクがマウント解除されている場合です。

実際に何も作成されていない場合でも、ユーザーがリムーバブルデバイスを接続または切断したときに「ダーティ」フラグの誤った警告を受け取る可能性を減らすために、そのモードで実行できるインストールオプションが少なくともいくつかあるとよいでしょう。

答え1

私のCは粗いですが、次のようになります。スーパーブロックを読み取るときにFat Dirtyビットを設定します。(これ犯罪なぜこのように実装されるのかを説明します。)

WindowsはFSで何かが変更されるまでこのビットを設定しないことを選択できますが、Linuxはマウント時にこれを設定するためのより編集可能なアプローチをとります。

私にとっては、この方法はより効率的なようです。マウント後にダーティを想定し、きれいなマウント解除時に設定を解除します。それ以外の場合は、カーネルがボリュームのダーティ/クリーン状態を追跡し、すべての書き込みで設定する必要があることを確認する必要があります。

コードとコミットコメントに示すように、ROをインストールしてもビットは変更されません。

関連情報