web-dev-qa-db-ja.com

umount呼び出しは同期して保留中の書き込みを完了しますか

カーネル3.12が実行されているBBBベースのカスタムボードがあります。

アンマウントと同期について疑問があります。

スクリプトがパーティションをアンマウントしているとしましょう。保留中の書き込みを完了するには、syncの前にumountコマンドを実行する必要がありますか? ?

7
ART

いいえ、syncの前にumountを実行する必要はありません。 umountは、ファイルシステムを実際にマウント解除する前に、保留中の書き込みをすべて完了します。また、一部のプロセスがまだファイルシステムを使用している場合は、アンマウントも拒否されます。現在の作業ディレクトリとして。

編集:アンマウントは主にfs/namespace.cで処理されます。 syncへの明示的な呼び出しはありませんが、「このマウントポイントにアンマウントのマークを付け、それ以上の操作を拒否し、すべての操作が完了したらアンマウントする」というコメントが表示されます。 。使用中の明示的なチェックも確認できます。

umountが保留中のすべての操作を実際に完了していることを簡単にテストできます。遅いUSBスティックをマウントし、大きなファイルをそれにコピーして、umountの後に直接cpを呼び出します。新しいプロンプトが表示されるまで数秒かかります。別のウィンドウでdstatなどを実行すると、まだ進行中の書き込み操作が表示されます。これは、syncと入力した場合とまったく同じ動作です。

11
dirkt