テストステ論

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

(writeboost report) ctrでセグメントサイズを指定出来るようにした

マイクからの注文だったので, 検討した. zero-length arrayを使えば, 性能的にはそこまで損失ないように実装出来るように見えるし, コードも大げさに穢れるわけではない. セグメントサイズの指定をコンパイル時にさせるのは使い勝手をかなり失う意味がある, この点でマイクに反論することは明らかに得策ではない, 一度ごねておいてからやっぱりやったらマージへの誠意見せられるかな, とか色々打算的に考えた結果, 実装することにした.

14時くらいには始めたはずだが, まさかの盛大にバグってしまい, こんな時間(23時)までかかってしまった. 本質的にいえばバグは2つ. 1つは今回の実装で紛れ込んで見逃した. こいつが修正は1行だが超骨だった. もう1つは数日前に適当にコードを並び替えたことが仇となってデグレしてた. いずれも, 再起動後のキャッシュ復活(recover cache)を実行すると判明した. このテストも自動化する必要があると感じた.

結果, 初期化の最後にセグメントサイズを指定出来るようになった. 7は, (1<<7) sector = 64KBを意味する. 最大では1MB単位で書き込むことが出来るが, 現実的には64KBくらいだろうと思う.

dmsetup create writeboost-vol --table "0 ${sz} writeboost ${BACKING} ${CACHE} 7"

積み残し課題が2つほど出た. 片方はunlikelyなのと激ムズであり, 触りたくないので, 放置するかも知れない. もう片方は絶対に対処しないと大変なことが起きるかも知れない(本質的なバグではないが, ユーザが誤って使うとデータ消滅する)ので必ずやります.

とりあえず, マイクに向けてこの仕事を報告するか.