読者です 読者をやめる 読者になる 読者になる

テストステ論

高テス協会会長が, テストステロンに関する情報をお届けします.

(writeboost report) ベンジャミンはすごいやつだ

(writeboost report) リードのキャッシュのバグが報告された - テストステ論

の続き.

ベンジャミンは, 問題をVM上で再現するスクリプトを書いた. しかし私の環境では再現しない.

私はwriteboost-test-suiteにそのテストを移植した. しかしそのテストを使ってもベンジャミンの環境では再現しない.

ベンジャミンは, ファイルシステムを使ったテストではなく, ブロックデバイスに直接I/Oテストするテストをエッセンスとして抽出し, やはり彼の環境では再現した. しかしやはり私の環境では再現しない. 彼のテストにはコード的に間違いはないと思った.

お互いにリスペクトがあるから, どちらも間違ったことは言ってないということが信じられる. だから我々は, 日本時間で深夜を回っても, 色々と条件を変えたり, ライトブーストのコードを変更して試してもらったり, カーネルを入れ替えて実験したり, 色々やった. 優秀な仲間と働くのは楽しいというのもある. 私が寝たあともベンジャミンは5時間ほど作業を続けた. 彼はwriteboost-test-suiteのコードをすぐに理解し, その後, dm-writeboostのコードを読み始めた. 私が依頼する作業は瞬時に行うが, どちらかというと, 自分自身で解決するつもりだった.

私が途方に暮れていた時, なぜだかベンジャミンは.dmtest.configを消した. configを消すことは常識的にはあり得ないことなので, これはたぶん, 天才的な勘だったと思う. これを消すと, writeboost-test-suiteはtmpfs backedなデバイスをテストで使うようになる. そして, configを消すと彼の環境でも移植したテストが再現するようになったというのだ.

私の環境でも.dmtest.configを消してみると, こちらでも再現した. 調べてみると, backing storeがtmpfs backedな場合にバグが再現することがわかった.

まだ原因はわからない. おそらく, デバイスがある程度速い時に限って起きうるバグなのだと思う. もしかしたらLinuxカーネル本体かdevice-mapperにタイミング問題があり, ワークアラウンド的にそれを吸収する必要がある可能性もある. おそらく相当に難しいバグだが, 今までもそうしてきたように地道に絞り込んでいけばきっと解決出来る. ベンジャミンの気持ちに応えるためにも, おれが止めを刺す.

ライトブーストには色々な人がやってくる. ベンジャミンのように, 話していてわくわくしてくる人はなかなかいないが, どれも雑な対応はしない. 丁寧に対応していくことが, 口コミで広まっていくことに繋がるからだ. 今さっきも, ライトブーストが魔法と勘違いした書き込みがあった. 設定自体間違っていたし, どうしようもないと思ったが, こういう問い合わせも, wikiのFAQのネタになると思うとありがたい. ユーザというのは信じられない間違いをするものだ. 尖っていた昔の私なら中指を立てて「受精卵からやり直せ」と吐き捨てるところだが, 今の私はプロジェクトオーナーたる態度で接する.

write to backdevice not batched? · Issue #153 · akiradeveloper/dm-writeboost · GitHub

次の2.2.5にはIssue 150のfixが入る. 楽しみにしてほしい.