• [^] # Re: Quelques précisions

    Posté par . En réponse au journal [Btrfs et openSUSE] Épisode 0 : l’ex‐fs du futur. Évalué à 2.

    Je ne comprends pas la distinction que tu fais : il me semble que tu décris simplement les deux étapes du même fonctionnement, non ?

    La copie sur écriture / différée fonctionne comme ça :

    • Les données manipulées sont inaltérables (une référence à ces données pointera toujours sur les mêmes données dans le futur, elles ne seront jamais modifiées).
    • Faire une copie est extrêmement simple, puisqu'il suffit de faire une copie de la référence aux données.
    • Les modifications sont plus complexes puisqu'il ne faut pas modifier les anciennes données. À ce moment on est obligé de copier tout ou partie des anciennes données et de créer une nouvelle version des méta-données pour qu'elle pointe sur ces nouvelles données sans altérer les anciennes méta-données (récursivement, il s'agit d'un arbre).

    Bon, là ce serait plus facile à comprendre avec un dessin... en gros je veux une copie modifiée d'un arbre (un nœud remplacé), je dois faire une copie de ce nœud et de tous ses nœuds ancêtres, jusqu'à la racine ; ce nouvel arbre a une nouvelle racine, les nœuds sur la branche recréée peuvent référencer aussi d'anciens nœuds dans l'arbre. L'ancien arbre n'a pas été modifié (la racine pointe toujours vers le même arbre, exactement), la nouvelle racine référence un arbre constitué d'anciens et de nouveaux nœuds.

    Pour l'implémentation dans Btrfs je ne connais pas les détails par contre...