4.12.5と4.13-rc4の両方にパッチを適用してみました。 パッチはきれいに適用され、CONFIG_SQUASHFS_ZSTD = y、CONFIG_XXHASH = y、CONFIG_ZSTD_DECOMPRESS = yを設定しました。
ここから紹介したsquashfsを使用しましたが、正常にコンパイルされ、squashfsが正常に作成されました。
マウントすると、マウントに失敗した入出力エラーが発生します。 dmesgで私はこれを見つけました:
[ 4377.243871] SQUASHFS error: Failed to initialize zstd decompressor
[ 4377.243872] SQUASHFS error: zstd decompression failed, data probably corrupt
[ 4377.243873] SQUASHFS error: squashfs_read_data failed to read block 0x28b3d
[ 4377.243874] SQUASHFS error: Unable to read metadata cache entry [28b3d]
[ 4377.243875] SQUASHFS error: Unable to read inode 0x106709e0
カーネルパッチが4.10向けであることを読みましたが、4.12 +で動作すると期待するのは間違っていますか、それとも破損したファイルシステムを作成しているのはsquashfsツールですか?
コメントをいただければ幸いです。さらに情報が必要な場合はお知らせください。
レポート@escaladeをありがとう。 私はバグを見つけたと思います、 zstd_wrapper.c:83
は
stream = ZSTD_initDStream(max_t(size_t, msblk->block_size, SQUASHFS_METADATA_SIZE), wksp->mem, wksp->mem_size);
ZSTD_DCtx
にいくつかのテーブルを追加したときに公開されたに違いありません。これにより、ウィンドウサイズが2の累乗の境界を超えてしまいました。 確認次第お知らせします。
それは速かった :)
修正を確認しました。レポートをありがとうございます。 こことメーリングリストでパッチを更新します。 また、squashfs-toolsパッチをzstdリポジトリに追加します。 パッチはマスターブランチでテストされるようになりました。4.10に関する古いコメントを削除します。
最も参考になるコメント
レポート@escaladeをありがとう。 私はバグを見つけたと思います、
zstd_wrapper.c:83
はZSTD_DCtx
にいくつかのテーブルを追加したときに公開されたに違いありません。これにより、ウィンドウサイズが2の累乗の境界を超えてしまいました。 確認次第お知らせします。