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

テストステ論

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

(nim-fuse report) 今後の目指すところ

WORA

nim-fuseを使って書いたコードは, Linux/OSX/FreeBSD/NetBSDfuseで動作出来るようにする. このうち厄介なのはNetBSDだ. NetBSDはPuffsとかいうユーザランドファイルシステムを独自に持っていて, その上にハイレベルFUSEを構築している. ローレベルFUSEはある時点ではサポートしていなかったようだが, ある時点からエミュレーションでサポートし始めたらしい. しかしこれがきな臭い. 前3つについてはたぶん可搬性を保証出来るだろうと思う. ユーザの潜在的な数としては, 前3つでほぼ100%だから, NetBSDに構って損するくらいならば即捨てるつもりだ.

ハイレベルFUSE

実は実在する多くのファイルシステムは, 今nim-fuseがサポートしているローレベルFUSEで構築されている. ハイレベルFUSEで作ると, 性能が遅くなるしなにより, 情報量が減るのだ. これを嫌がる開発者は少なくない. つまり, vfsで作った場合に比べて, 層を重ねるほど可能性が減っていくということだ. しかし, 一方で, ハイレベルFUSEで作っても問題ないものは多い. 簡単なファイルシステムは可搬性や実装容易性を考えれば, ハイレベルFUSEで実装すべきだろう.

ハイレベルFUSEの実装方法としては, 現在あるローレベルFUSEを踏み台にして作る方法があるが, これは難しい. 難しさの理由の一つは, すべき処理が明確でなさすぎるということだ. カーネルとのプロトコルを扱うローレベルFUSEですらundocumentedで困ったさんなのだが, それより上は実装者のフィーリングで作られているようなところがある. その上, この前調査したように, 実装はゴミだ.

はっきり言って付き合いたくないが, 提供しないわけにもいかないと思う. そこで, cfuseのハイレベルFUSEを踏み台にして作るということを考えている. つまりブリッジだ. そもそもハイレベルFUSEは遅くて良いのだから何層重ねようが大きな問題とはならない. どう作るのが良いか検討はしていないが, たぶん出来ると思う. 一気にやる.