Transactions for the masses – Transactional NTFS

There is a new blog on my radar – Malcom Smith started to write about Transactional NTFS here: 

Transactional NTFS (or TxF as we call it here) is a very exciting technology. The idea is extremely simple: you can group multiple file operations in a single atomic transaction. For example a setup program can use several file system operations to carry on his work (copy new files, delete old ones, replace as needed, etc). What you need, at the end of the setup is a consistent state: either all the changes are applied, or everything is safely rolled back. That’s it!

The concept of a transaction is not something new. In fact, transactions are used for probably more than 30 years in the database world. But what is certainly new is to apply the same knowledge into the context of a commercial file system (and not only in a research project). By the way, did you know that NTFS was also (partially) transactional file system since beginning? NTFS is fully transactional for metadata operations (delete, rename, etc) so a reboot in the middle will nicely recover the state to a good point and you won’t have a corrupt file system metadata. What Transactional NTFS adds is full transaction support for the data changes, not only for metadata changes. This means that you could add transaction context in any write operating can to be transacted.

If you want to read more about TxF – start with an interesting post here …


Comments (3)

  1. James says:

    This is very cool. Can we expect updated versions of the FileSystemObject, System.IO etc to accommodate this?

  2. Jim Johnson says:

    I can’t speak for System.IO, but we do have integration with TxF from both the managed code transaction classes, and from unmanaged code, such as COM+.

    I have a sample of how the managed code looks. Take a look at

  3. Antimail says:

    One really think I love in Longhorn is the new TxF file system (I blogged about it a while back). Jim…