New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fixed issue: can not compile with linux-4.13 #178

Closed
wants to merge 1 commit into
base: master
from

Conversation

Projects
None yet
2 participants
@meke

meke commented Sep 12, 2017

Linux-4.13でコンパイルできなくなったので、パッチに問題が無ければマージををお願いします。

エラー内容はこのような物でした

  CC [M]  /home/meke/build/trunk/pkgs/kernel/BUILD/kernel-4.13/dm-writeboost-2.2.7/src/dm-writeboost-target.o
/home/meke/build/trunk/pkgs/kernel/BUILD/kernel-4.13/dm-writeboost-2.2.7/src/dm-writeboost-target.c: In function 'bio_endio_compat':
/home/meke/build/trunk/pkgs/kernel/BUILD/kernel-4.13/dm-writeboost-2.2.7/src/dm-writeboost-target.c:116:7: error: 'struct bio' has no member named 'bi_error'; did you mean 'bi_iter'?
  bio->bi_error = error;
       ^~~~~~~~
       bi_iter
/home/meke/build/trunk/pkgs/kernel/BUILD/kernel-4.13/dm-writeboost-2.2.7/src/dm-writeboost-target.c: At top level:
/home/meke/build/trunk/pkgs/kernel/BUILD/kernel-4.13/dm-writeboost-2.2.7/src/dm-writeboost-target.c:1946:12: error: initialization from incompatible pointer type [-Werror=incompatible-pointer-types]
  .end_io = writeboost_end_io,
            ^~~~~~~~~~~~~~~~~
/home/meke/build/trunk/pkgs/kernel/BUILD/kernel-4.13/dm-writeboost-2.2.7/src/dm-writeboost-target.c:1946:12: note: (near initialization for 'writeboost_target.end_io')
cc1: some warnings being treated as errors

@akiradeveloper akiradeveloper referenced this pull request Sep 12, 2017

Closed

release 2.2.8 #179

@akiradeveloper akiradeveloper added this to the v2.2.8 milestone Sep 12, 2017

@akiradeveloper

This comment has been minimized.

Show comment
Hide comment
@akiradeveloper

akiradeveloper Sep 12, 2017

Owner

@meke

bi_endio_compatですが,

torvalds/linux@4e4cbee

このコミットを見ると, 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を潰すという方針自体は良かろうという気はします. あるいはそういう関数が存在するならそれを使いたいです.

とはいえ, 私の方で一回コードをちゃんと調べてどういう修正にするのが将来的に良さそうか考えようと思いますので, しばらくおまちください.

Owner

akiradeveloper commented Sep 12, 2017

@meke

bi_endio_compatですが,

torvalds/linux@4e4cbee

このコミットを見ると, 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を潰すという方針自体は良かろうという気はします. あるいはそういう関数が存在するならそれを使いたいです.

とはいえ, 私の方で一回コードをちゃんと調べてどういう修正にするのが将来的に良さそうか考えようと思いますので, しばらくおまちください.

@akiradeveloper

This comment has been minimized.

Show comment
Hide comment
@akiradeveloper

akiradeveloper Sep 12, 2017

Owner

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.

torvalds/linux@2a842ac#diff-bd4811706a8d71334f8f07cc135455eb

Owner

akiradeveloper commented Sep 12, 2017

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.

torvalds/linux@2a842ac#diff-bd4811706a8d71334f8f07cc135455eb

@meke

This comment has been minimized.

Show comment
Hide comment
@meke

meke Sep 12, 2017

error変数は使ってないし、型を合わせれば良いやろ。と、温い対応をしてました。
2.2.8のリリースを待っています!

このプルリクはクローズとさせてもらいます

meke commented Sep 12, 2017

error変数は使ってないし、型を合わせれば良いやろ。と、温い対応をしてました。
2.2.8のリリースを待っています!

このプルリクはクローズとさせてもらいます

@akiradeveloper

This comment has been minimized.

Show comment
Hide comment
@akiradeveloper

akiradeveloper Oct 17, 2017

Owner

This issue is fixed in v2.2.8

Owner

akiradeveloper commented Oct 17, 2017

This issue is fixed in v2.2.8

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment