NAME¶
af_transaction, af_commit, af_abort - a simple transaction mechanism for AtFS
SYNOPSIS¶
#include <atfs.h>
int af_transaction (void)
int af_commit (void)
int af_abort (void)
DESCRIPTION¶
These functions implement a simple transaction mechanism for AtFS. A transaction
starts with calling
af_transaction. All changes to existing ASOs
performed hereafter have no immediate permanent effect. They rather get into
effect, when the transaction is ended. Calling
af_commit ends the
transactions and causes all changes to be saved to disk.
af_abort
aborts the transaction without saving the changes. These will then be
discarded.
Only modification of the state of existing source ASOs will be deferred.
Creation or deletion of ASOs have immediate effect, regardless if a
transaction is in effect or not. Additionally, all operations on derived ASOs
(all operations on the derived object cache) are not affected by the
transaction.
All archive files that are to be changed when the transaction is finished are
locked until the end of the transaction. The lock prevents all other
applications to perform any modifications on the archive file. You should make
sure, that ending a transaction should never be dependent on the successful
termination of another application (deadlock danger).
DIAGNOSTICS¶
Upon error, -1 is returned and
af_errno is set to the corresponding error
number.
BUGS¶
Changes to the contents of busy versions have immediate effect.