Linux 4.3のIO/FSまわりcommit

今日読んだ分をざっくりとtweetから持ってきた

 

Btrfsは独自にbioをsubmitしているので、blkio controllerにacountingされていなかったのを直したような感じ。複数disk対応にはまだ作業が必要とか

transactionが別のtransactionの完了を待っていたが、正常終了かどうかをcheckしていなかった。そのためcommitされていないerror transactionに依存する形でtransactionがcommitされてたという問題のfix

Btrfsではdfで空きスペースがあるのにfileが作れない消せないということがあって問題とされていた. 原因の1つとして、空になったchunkを回収してない -> 新しいchunkをallocできないというのがあった. いつのまにか空のchunkを回収するコードが入っていたらしい。

これはそのまま。evict inodeに時間がかかるほど大量のinodeを溜め込めるメモリがあるマシンじゃないといけないけど、そういうこともあるのかーと面白かった。

syncで無駄にCPUを使うことがなくなってよかったというはなし。ついついsyncしちゃう人に朗報?(謎

複数fileに同時にIO operation(しかもdisk上では並んでいる & fsyncはしてない)というのは実際どういうオペレーションになるのか少し不明だけどSSDでもこれだけパフォーマンス改善するのは面白い

KTSan面白そうなので触ってみたい

log部分のchecksumとかsizeとか、logのcancelが正しく動くかなどlogまわりに多くのfixが入っている

ディレクトリエントリ置換前のfiletypeと置換後のfiletypeをうっかり同じ変数に保存していたため, filetypeがおかしくなってたよというバグ. これは怖い…