Posted By: Charles | Dec 2nd, 2005 @ 11:51 AM | 80,442 Views | 19 Comments
Surendra Verma, Development Manager on the Vista Kernel team, digs into Vista's new Transactional File System whith Charles Torre. TxF, as it is referred to internally, is a new kernel construct that is part of an updated Vista NTFS. Surendra provides a high level overview of TxF in this video. We will continue to look under the hood in future Going Deep episodes with interviews with developers working on the Kernel Transaction Manager, a key component of TxF, which Surendra touches on during the white board session, which is a Going Deep requirement.

Enjoy. 
Media Downloads:
Rating:
1
0
keeron
keeron
Obsessive Geek
Thanks Charles for contiuning the work on going deep series.

I'd probably have to see the video couple of times to wrap my head around it (this is first real informative video / article on this topic. Had some news articles/blogs mention it but not in great detail).

Just had a burning question - the managed APIs are part of the .net framework (2.0 RTM) correct? There was talk about them being in WinFX which didn't make sense to me (WinFX = Avalon, Indigo, Workflow). Also, are they available only on Vista? (if so, are they in the framework or the Vista managed SDK)

Any blogs or whitepapers on this subject? Would love to see people talk about real-world usage and places where it makes more sense to use this than to use traditional system calls (given the cost of using transactions).

- Keeron
Tyler Brown
Tyler Brown
Bullets change governments far surer than votes.
I haven't watched the video yet. It's downloading, but at this time of year I'm far too busy with school to find an hour to sit down and watch a good Channel 9 video.

Keeron - If I'm not mistaken, the managed Vista API is a part of WinFX, which may be of some help.
keeron wrote:
Would love to see people talk about real-world usage and places where it makes more sense to use this than to use traditional system calls (given the cost of using transactions). 


What kind of program would not have any benefit of this? There are certain processes where one should not use a transaction over the whole process (if power fails, you'd not want to undo what you managed to record of ...for example, an important event), but even inside that process you could use it in more fine grained way, to keep your live video file recording in a consistent state so it would work without any "rebuilding of index" or such if power fails middle of the recording.

The performance is probably fine if you have one of those hybrid hard drives. Smiley

In reply to "Just had a burning question - the managed APIs are part of the .net framework (2.0 RTM) correct? There was talk about them being in WinFX which didn't make sense to me (WinFX = Avalon, Indigo, Workflow). Also, are they available only on Vista? (if so, are they in the framework or the Vista managed SDK)"



That's not WinFX (it's not WCF+WPF+WWF at all).  That's part of WinFX.  WinFX is the new Microsoft API and as such it's the go to card for general future development.  The .NET FX is considered part of the WinFX model as well.  This is why, when I teach .NET, I never say ".NET" I always refer to managed code as "WinFX" because I'm teaching the API in general even though nothing in my WinFX course has ANYTHING to do with WCF, WPF, or WWF.  It's still WinFX.

That said, WinfX is different things to different people.  For instance to a marketing person WinFX might be WCF, WPF, WWF, but to the architects and developers it's the new world of development.  Not a technical idea, or anything like that, but a new model, a new mindset, and a fully new API for development and architecture.

www.davidbetz.net/dotnetcourse/

What is the difference between a transactional file system and a journaling file system, if any?

 

A journaling file system will ensure that individual metadata changes are atomic (such as creating directory entries, renaming files, etc.).  It only applies to one change.  If your system crashes, the file structure itself will be correct, but the data in your files might not be.

A logging file system (terminology is sometimes different), both the metadata and the actual data are journaled.  This allows it to make sure the contents of the file are correct, but it still only works on one operation.

A transactional file system (AFAICT for Vista) will do both data and metadata over many modifications.  So, you can create and modify many files atomically (either everything is done or nothing is done).

It's nice to see Microsoft moving us out of the stone age.  Trying to write safe file-system modification routines on most file systems is tricky (using atomic rename tricks and such) and requires a lot of "check for cleanup" code during startup if you want to handle it properly.  I work on systems that cannot fail (embedded systems where nobody can administrate them), and would really love something like this.

The managed APIs are available in Whidbey running on top of Vista.
A good reference to these is at http://msdn2.microsoft.com/library/a90c30fy(en-us,vs.80).aspx

There's also a BLOG entry with a code sample here:

http://pluralsight.com/blogs/jimjohn/archive/2005/09/13/14803.aspx

Note that you can also write unmanaged code and access this functionality.

There's some preliminary MSDN documentation here:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/fs/overview_of_the_transactional_ntfs_programming_model.asp
Wow--I can't wait to see this technology in widespread use!

In the interview, you alluded to the tight integration between NTFS and TxF. I am wondering how far this goes? In particular, as hard disks become more intelligent (e.g. native command queuing and hybrid flash/conventional disks), does TxF include special code to benefit from these features, or does it benefit indirectly, through NTFS?

Thanks,

- James
Microsoft Communities