Concepts txF de base

Isolation de lecture

Transactional NTFS (TxF) fournit une cohérence de lecture validée.

Un writer traité fait référence à un handle de fichier traité ouvert avec n’importe quelle autorisation qui ne fait pas partie de l’accès en lecture générique, mais qui fait partie de l’accès en écriture générique. Un writer traité affiche la version la plus récente d’un fichier qui inclut toutes les modifications apportées par la même transaction. Il ne peut y avoir qu’un seul writer traité par fichier. Les enregistreurs non traités sont toujours bloqués par un writer traité, même si le fichier est ouvert avec des autorisations d’écriture partagée.

Un lecteur traité fait référence à un handle de fichier traité ouvert avec n’importe quelle autorisation qui fait partie de l’accès en lecture générique, mais qui ne fait pas partie de l’accès en écriture générique. Un lecteur traité affiche une version validée du fichier qui existait au moment de l’ouverture du handle de fichier. Le lecteur traité est isolé des effets des enregistreurs traités. Cela fournit une vue cohérente du fichier uniquement pendant la durée de vie du handle de fichier et bloque les rédacteurs non traités.

Notes

Lorsqu’un handle a été ouvert pour modification avec la fonction CreateFileTransacted , toutes les ouvertures ultérieures du fichier au sein de cette transaction, que ce soit en lecture seule ou non, sont converties par le système pour être un enregistreur traité à des fins d’isolation et d’autres sémantiques transactionnelles. Cela signifie que, par la suite, lorsqu’un handle est ouvert pour l’accès en lecture seule, le handle ne reçoit pas de vue du fichier avant le début de la transaction ; elle reçoit la vue de transaction active du fichier.

Un handle de fichier non traité ne voit aucune modification apportée dans une transaction tant que la transaction n’est pas validée. Le handle de fichier non traité reçoit une vue isolée similaire à un lecteur traité, mais contrairement à un lecteur traité, il reçoit la mise à jour du fichier lorsqu’un enregistreur transactionné valide la transaction.

Niveaux d’isolation

TxF fournit une isolation en lecture validée. Cela signifie que les mises à jour de fichiers ne sont pas visibles en dehors de la transaction. En outre, si un fichier est ouvert plusieurs fois lors de la lecture de fichiers dans la transaction, vous pouvez voir des résultats différents à chaque ouverture suivante. Les fichiers qui étaient disponibles la première fois que vous y avez accédé peuvent ne pas être disponibles (car ils ont été supprimés), ou vice versa.

Verrouillage transactionnel

La création d’un writer traité sur un fichier verrouille le fichier de manière transactionnelle . Une fois qu’un fichier est verrouillé par une transaction, les autres opérations de système de fichiers externes à la transaction de verrouillage qui tentent de modifier le fichier verrouillé par transaction échouent avec ERROR_SHARING_VIOLATION ou ERROR_TRANSACTIONAL_CONFLICT.

Le tableau suivant récapitule le verrouillage transactionnel.

Fichier actuellement ouvert par

Tentative d’ouverture de fichier par

Transacted

Non traité

Lecteur

Lecteur/Enregistreur

Lecteur

Lecteur/Enregistreur

Lecteur traité

Oui

Oui

Oui

Non 2

Lecteur/enregistreur traité

Oui

Non 2

Oui

Non 2

Lecteur non traité

Oui

Oui

Oui

Oui

Lecteur/enregistreur non traité

Non1

Non1

Oui

Oui

  1. Échec avec ERROR_TRANSACTIONAL_CONFLICT
    2. Échoue avec ERROR_SHARING_VIOLATION

Si vous ouvrez un flux nommé pour une modification qui utilise une transaction, l’intégralité du fichier doit être verrouillée.

En plus du verrouillage transactionnel, des règles de partage de fichiers NTFS classiques s’appliquent.

Vous devez prendre en compte les deux modes de partage de fichiers suivants en parallèle :

  • Mode de verrouillage transactionnel.
  • Modes de partage de fichiers normaux.

Le mode le plus restrictif est celui qui s’applique.