Closed meke closed 7 years ago
@meke
bi_endio_compat
ですが,
https://github.com/torvalds/linux/commit/4e4cbee93d5
このコミットを見ると, bi_statusにはintではなくBLK_STS_IOERRORなどの値が入るようです.
今カーネルのソースコードがないのでわかりませんが, このパッチによると, errno_to_blk_status
という関数がこの変換を担保していた時期があるようなのでこれを使えばいいかも知れませんが, どうやら逆関数もあることからerrorからstatusに移るまでの過渡的な状況があったと推察出来ますから, 正しいコードかはわかりません.
https://www.redhat.com/archives/dm-devel/2017-June/msg00098.html
1つの方針としては, bi_endio_compatはどうせ成功させるためにしか使っていないため, intをとることをやめて, 成功に相当する値を関数の内部で入れてしまうということです. この場合, bi_endio_success_compat
などと名前は変えた方がいいものと思います. なぜならば, endioがintをとることがふつうなので, とらないならば特別な名前をつけるべきだからです.
逆に, 失敗した場合についてはbio_io_errorを使っていて, これは今の世界でも推奨されているっぽいので,
https://www.spinics.net/lists/raid/msg58504.html
成功した場合についてintを潰すという方針自体は良かろうという気はします. あるいはそういう関数が存在するならそれを使いたいです.
とはいえ, 私の方で一回コードをちゃんと調べてどういう修正にするのが将来的に良さそうか考えようと思いますので, しばらくおまちください.
The transition from traditional int error to status has been done in 4.13. This commit helps us to find out the best change to Writeboost.
error変数は使ってないし、型を合わせれば良いやろ。と、温い対応をしてました。 2.2.8のリリースを待っています!
このプルリクはクローズとさせてもらいます
This issue is fixed in v2.2.8
Linux-4.13でコンパイルできなくなったので、パッチに問題が無ければマージををお願いします。
エラー内容はこのような物でした