Zstd: Squashfs機能を動作させることができません

作成日 2017年08月08日  ·  3コメント  ·  ソース: facebook/zstd

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の累乗の境界を超えてしまいました。 確認次第お知らせします。

全てのコメント3件

レポート@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に関する古いコメントを削除します。

このページは役に立ちましたか?
0 / 5 - 0 評価