summaryrefslogtreecommitdiffstats
path: root/src/doc/Commitdir.txt
blob: 05c727be60ae68babda76c3b879ee6cd39eedc5b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
OLD


How Directory Committing Works:

Each CDir has: 
	 version - current version of directory
	 committing_version - which version was sent to stable storage
	 last_committed_version - last version to be safely stored

Each Inode has: 
	 parent_dir_version - what dir version i was in when i was dirtied.  (*)

	 (*) note that if you change an inode, mark_dirty() again, even if it's already dirty!


How committing works:

A call to commit_dir(dir, context) will ensure tha the _current_ version is stored safely on disk before the context is finished.

When a commit completes, inodes in the directory are checked.  If they are dirty and belonged to the _committed_ (or earlier) version, then they are marked clean.  If they belong to a newer version, then they are _still dirty_.