umount -l
私はリムーバブルデバイスに安全で競争条件のない代替案を開発しています。
計画中です:
umount --move
000
絶対パスを介してファイルを開くことができないように、許可ディレクトリにあります。- プロセスを対話的に終了(または正常に終了)し、書き込み用にファイルを開きます。
- ステップ(2)が完了したときのみ読み取り専用モードでアトムを再マウントする
- 問題を引き起こす可能性がある読み取り専用プロセスを対話的に終了/終了
- いよいよ
umount
成功した
rw
(3)段階におよびがある競争条件がありますmount -o remount,ro
。
mount -o remount,ro
ファイルシステムに書き込み用に開いているファイルがある場合は必ず失敗しますか?
マニュアルページにはこれについての内容はありません。その後もデバイスに書き込むことができます。blockdev --setro
。
答え1
はい。関連コードはsb_prepare_remount_readonly
(Linux 4.0以降では、異なるバージョンでコードが異なるように構成される可能性があります。)ロジックは次のとおりです。
- インストールされている各インスタンスに対して、次の操作を行います。
- インスタンスが読み取り専用でない場合:
- 新規作者登録を禁止します
MNT_WRITE_HOLD
。 ( ) - 登録されたWriterがある場合はエラーフラグを設定します(return
EBUSY
)。
- 新規作者登録を禁止します
- インスタンスが読み取り専用でない場合:
- ファイルが削除されたが(inodeカウント= 0)、まだ削除されていない(ファイルが開いていたためにまだ存在する場合)、エラーフラグを設定します。
- エラーフラグが設定されていない場合、パーティションは読み取り専用として表示されます。
- インストールされている各インスタンスに対して、次の操作を行います。
- 作家の購読をブロックしないでください。
作成者登録は、メタデータなどの書き込みおよび書き込みのためにファイルを開く継続的な操作mkdir
ですchmod
。通貨を見るmnt_want_write
登録された作家の数が増えるところです。
システム設計では、読み取り専用再マウントが書き込み登録バリアになることを保証します。成功すると、登録された作成者がなく、特に再マウント操作中に書き込み用に開いているファイルは存在できません。再マウントすると、書き込み用にファイルを開くことができないため、書き込み用に開いているファイルはまだありません。