Skip to content

Linux 7.3 corrige les ID de système de fichiers Btrfs et le démarrage grub2

Un changement Btrfs dans Linux 7.2-rc1 a rendu les ID de système de fichiers instables et cassé la dérivation de clé d'OpenConnect. Le correctif touche 10 fichiers.

Par Tech AI Wire Team

3 min de lecture

XLinkedIn
A terminal window on a Linux desktop showing btrfs filesystem show output, with a volume label, a UUID and three member devices.

En chiffres

Btrfs files changed in the merged pull
10
lines added, against 13 removed
96
kernel where the ID regression appeared
7.2-rc1

Linus Torvalds a intégré une série de correctifs Btrfs dans le noyau Linux 7.3. Deux d'entre eux annulent des changements qui avaient cassé des machines en service. L'un rendait instable l'identifiant que Btrfs déclare à son propre sujet. L'autre empêchait certains ordinateurs de terminer leur démarrage.

Btrfs est un système de fichiers intégré à Linux. C'est le choix par défaut sur Fedora et sur openSUSE. Une régression à cet endroit atteint donc des ordinateurs de bureau ordinaires, et pas seulement des serveurs. La demande d'intégration vient du mainteneur de Btrfs, David Sterba, et porte l'étiquette for-7.3-rc3-tag. Phoronix indique que les correctifs arrivent dans la version candidate 7.3-rc4.

Pourquoi l'ID de système de fichiers a cessé d'être stable

Tout système de fichiers monté déclare un FSID, abréviation d'identifiant de système de fichiers. Les programmes le lisent pour distinguer un système de fichiers d'un autre. La demande d'intégration de Sterba décrit le premier problème comme "filesystem id stability on default configurations".

Phoronix rapporte que la régression est arrivée dans Linux 7.2-rc1. À partir de là, l'ID déclaré par Btrfs sur une installation par défaut pouvait changer. Les logiciels qui avaient enregistré l'ancienne valeur en lisaient ensuite une autre.

La demande d'intégration nomme directement la victime : "openconnect key derivation". OpenConnect est un client libre pour les VPN d'entreprise, et NetworkManager en fournit la prise en charge. Phoronix relie la panne à cette prise en charge VPN. Quand une clé est dérivée en partie d'une valeur qui change soudainement, la clé ne correspond plus.

Pourquoi certaines machines ne démarraient plus

Le second correctif rétablit la "/dev/root detection for initramfs-less boot systems with grub2", selon les termes de Sterba.

Un initramfs est un petit système de fichiers temporaire. Le noyau le charge tôt au démarrage et s'en sert pour trouver le vrai système de fichiers racine. La plupart des distributions en fournissent un. Certaines installations s'en passent pour démarrer plus vite ou garder une configuration simple.

Sans initramfs, le noyau doit déterminer seul quel périphérique porte la racine. Phoronix rapporte que cette détection échouait sur les systèmes de fichiers racine Btrfs démarrés par GRUB2. Une machine qui ne peut pas identifier son système de fichiers racine ne finit pas de démarrer.

Ce que contient le reste de la demande d'intégration

La fusion modifie 10 fichiers, ajoute 96 lignes et en retire 13. Le message de Sterba décrit le reste comme des correctifs ordinaires. Ils figurent ci-dessous, avec une note en langage simple sur le domaine touché.

Domaine cité dans la demandeCe que fait cette partie de Btrfs
Extents compressés en ligneStocke de très petits fichiers compressés dans les métadonnées
Activation de zone en mode zonedPrend en charge les disques qui s'écrivent par zones fixes
Validation de l'espace des chunk itemsVérifie les enregistrements qui cartographient les chunks de stockage
Suppression des items verityNettoie les données fs-verity, qui vérifient le contenu des fichiers
Reconstruction de l'arbre d'espace libreGère les erreurs pendant la reconstruction de la carte d'espace libre
Reflink et perforation de trousCopie des blocs par référence et libère des plages dans les fichiers
Parcours des groupes de blocsProtège le parcours des groupes de blocs alloués
Messages d'erreurCorrige la formulation des messages du journal noyau

Parmi les fichiers modifiés figurent super.c, volumes.c, disk-io.c, inode.c, tree-checker.c, zoned.c et verity.c.

Ce que cela signifie pour les développeurs

Traitez un FSID comme une valeur qui peut changer. Si votre code en enregistre un et compte le retrouver après une mise à jour du noyau, cette hypothèse vient d'échouer en production chez des utilisateurs de VPN. Relisez l'identifiant à chaque fois. Prévoyez un chemin pour le cas où il diffère de celui que vous aviez gardé.

Si vous administrez des machines avec une racine Btrfs et sans initramfs sous GRUB2, n'y déployez pas Linux 7.2. Attendez un noyau 7.3 qui porte cette demande d'intégration, ou gardez un initramfs comme solution de repli. Ubuntu 26.10 livre un noyau Linux 7.3 en préversion. Vérifiez donc quelle version candidate contient votre image avant de lui faire confiance.

Le premier bogue porte une leçon plus large. Toute valeur que l'espace utilisateur peut lire est une interface, même si aucun document ne le dit. Un changement du noyau qui déplace une telle valeur casse des logiciels que personne n'a pensé à tester.

Sources

  1. Linux 7.3-rc4 To Address Two Unfortunate Bugs With Btrfs - Phoronix
  2. Merge tag 'for-7.3-rc3-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux - GitHub

Articles liés