a filesystem operation binds “ undo ” information to given filesystem resources , in order for the filesystem operation to reverse or rollback changes made to the resources , and thereby return a filesystem affected by a failed or incomplete operation from an inconsistent state to a previous , consistent state . changes can be undone , to return the filesystem to a consistent state , as long as any further changes can also be undone successfully . latter changes can be undone by making sure that no operation is fully successful until the preceding operations that changed the same metadata are successful . in an error path , the operation can go through every resource modified to determine if other threads have modified data beyond the initial modification . a failing thread can notify later threads that an operation has failed and all changes are to be undone . each thread can then run through and undo all pertinent metadata changes that were made .