Une version intermédiaire du projet OpenZFS 2.2.1 est disponible, développant l'implémentation du système de fichiers ZFS pour Linux et FreeBSD. Cette version se distingue par l'ajout du support du noyau Linux 6.6 et tente de résoudre un problème entraînant la corruption des données (avec un réinitialisation partielle de blocs) dans les fichiers après leur copie.
Il était initialement prévu que le problème ne se manifeste que dans la branche 2.2.x et soit causé par une erreur dans le mécanisme de clonage de blocs inclus dans OpenZFS 2.2.0, permettant de créer une copie d'un fichier ou d'une partie sans dupliquer les données, en utilisant des références aux blocs de données existants du fichier source sans leur copie réelle. Dans OpenZFS 2.2.1, pour bloquer ce problème, le mécanisme de clonage de blocs a été désactivé par défaut, et pour réactiver ce mode, un paramètre zfs_bclone_enabled a été ajouté.
Plus tard, les développeurs ont signalé avoir reproduit le problème également dans les configurations de la branche OpenZFS 2.1.x. Les hypothèses selon lesquelles le problème se manifesterait sur des systèmes dotés d'anciennes versions du paquet coreutils n'ont pas été confirmées — l'erreur a pu être reproduite sous FreeBSD et sur des distributions Linux avec une version récente de coreutils 9.4.
La corruption des fichiers se manifeste dans des circonstances relativement rares, par exemple, l'exécution de la commande «emerge -1 dev-lang/go» sur Gentoo entraîne l'installation des outils pour le langage Go avec corruption des fichiers dans le répertoire /usr/lib/go/pkg/tool/linux_amd64/compile. Il est supposé que l'erreur a commencé à apparaître après que le paramètre «zfs_dmu_offset_next_sync=1» a été défini par défaut dans la version openzfs 2.1.4. La source de l'erreur n'a pas encore été identifiée. Comme solution de contournement recommandée pour bloquer l'erreur, il a été suggéré de définir le paramètre «/sys/module/zfs/parameters/zfs_dmu_offset_next_sync» à 0.
Source : opennet.ru
