1.3 Connection-Task-Transaction Model

The following diagram shows how various transactions and tasks connect to the file system:

Figure 1-1 Transaction Model

The connection is an entity supplied by the OS. zRootKey creates the owner and the default task and transaction and returns the first key that has a NULL context (currently does not map to a directory or a file). New tasks can be created by calling zBeginTask.

If you want to use transactions, you must have transactions turned on for the volume. Every transaction is associated with a task, so a task ID must be supplied when a transaction is used. For some transactioned operations, the task ID is implied by the object being transactioned, such as for zRead and zWrite. When the key was created, a task ID was required and bound to the open file object during the zCreate or zOpen request. Because transactions are bound to a particular task, multiple tasks cannot use the same transaction.

The owner and door entities are transparent to the user and do not show in the functions.