J'ai essayé de patcher à la fois 4.12.5 et 4.13-rc4. Les correctifs s'appliquent proprement et j'ai défini CONFIG_SQUASHFS_ZSTD=y, CONFIG_XXHASH=y et CONFIG_ZSTD_DECOMPRESS=y.
J'ai utilisé les outils squashfs d' ici , cela se compile bien et j'ai réussi à créer les squashfs.
Lorsque je monte, je reçois juste une erreur d'entrée/sortie ayant échoué. Dans dmesg, j'ai repéré ceci:
[ 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
J'ai lu que les correctifs du noyau étaient destinés à 4.10, ai-je tort de m'attendre à ce qu'ils fonctionnent sur 4.12+ ou est-ce peut-être les outils squashfs qui créent des systèmes de fichiers corrompus ?
Tout commentaire est apprécié, et faites-moi savoir s'il y a plus d'informations nécessaires.
Merci pour le reportage @escalade. Je pense avoir repéré le bug, zstd_wrapper.c:83
devrait être
stream = ZSTD_initDStream(max_t(size_t, msblk->block_size, SQUASHFS_METADATA_SIZE), wksp->mem, wksp->mem_size);
Cela a dû être exposé lorsque j'ai ajouté des tables supplémentaires au ZSTD_DCtx
, ce qui a augmenté la taille de la fenêtre sur une limite de puissance 2. Je vous tiendrai au courant quand je l'aurai confirmé.
C'était rapide :)
J'ai confirmé le correctif, merci encore pour le rapport. Je mettrai à jour les correctifs ici et sur les listes de diffusion. J'ajouterai également le correctif squashfs-tools au référentiel zstd. Les correctifs sont maintenant testés sur la branche master, je vais supprimer ce commentaire obsolète à propos de 4.10.
Commentaire le plus utile
Merci pour le reportage @escalade. Je pense avoir repéré le bug,
zstd_wrapper.c:83
devrait êtreCela a dû être exposé lorsque j'ai ajouté des tables supplémentaires au
ZSTD_DCtx
, ce qui a augmenté la taille de la fenêtre sur une limite de puissance 2. Je vous tiendrai au courant quand je l'aurai confirmé.