ZFS on LinuxがLinux Kernel 5.0でビルドできない
「ZFS on Linux(ZoL)」は「OpenZFS」を「Linux」向けに実装したソフトウェアです。「ZoL」により、「Linux」上で高度なファイルシステムの1つである「ZFS」を利用することができます。
「ZoL」は「CDDL」でライセンスされたソフトウェアです。
Linux Kernel 5.0
「Linux Kernel 5.0」は、現在開発中の「Linux Kernel」です。「Ubuntu 19.04」で「Linux Kernel 5.0」以降の「Linux Kernel」が採用されるでしょう。
「Linux Kernel」は「GPLv2」でライセンスされたソフトウェアです。
ビルドできない
さて「Linux Kernel 5.0」で「ZoL」をビルドできない問題が報告されました。「ZoL」をビルドできないため、このままではユーザーは「Linux Kernel 5.0」上で「ZFS」を利用できなくなります。
ビルドできなくなった理由は、「Linux Kernel 5.0」がエクスポートしている「__kernel_fpu_begin」と「__kernel_fpu_end」を「ZoL」から利用できなくなったためです。
これらの関数は「GPL」もしくはGPL互換ライセンスでライセンスされたモジュールでのみ利用可能です。
「ZoL」はこれらの関数をファイルシステムのチェックサム処理で利用しているため、「ZoL」をビルドできなくなりました。
CDDLとGPLv2
「CDDL」と「GPLv2」は互換性のないライセンスだと考えられています。(Ubuntu/Canonical除く)そのため「CDDL」でライセンスされた「ZoL」は上記の関数を利用できません。
またライセンスに互換性がないため「Linux Kernel」の開発者はこの件に関心がなく、歩み寄りはありません。
ZoLの対応
ビルドできない問題に対し「ZoL」は実装を修正し、上記の関数を使用しない実装に変更しました。- ZFS On Linux Landing Workaround For Linux 5.0 Kernel Support
- Linux 5.0: _kernel_fpu{begin,end} no longer exported
これで「Linux Kernel 5.0」以降でビルドできない問題が解決します。
ただしこの修正はベクターベースのチェックサムアルゴリズムを無効にする修正であり、これによるパフォーマンス等への影響は、まだ明らかになっていません。