A transactional file system wherein multiple file system operations may be
performed as a transaction. An application specifies that file
system-related operations should be handled in a transaction, and the
application is given a file handle associated with a transaction context.
For file system requests associated with a transaction context, a file
system component manages operations consistent with transactional
behavior. The component provides data isolation by providing multiple
file versions, such that transactional readers do not receive changes
until after the transaction commits and the reader reopens the file. The
component also handles namespace logging operations in a multiple-level
log that facilitates logging and recovery. Namespace isolation is
provided until a transaction commits via isolation directories, whereby
until committed, a transaction sees the effects of its own operations but
not the operations of other transactions. Transactions over a network are
also facilitated via a redirector protocol.