Really it can batch any number of modifications into one transaction
(unless fsync or sync is called). Transaction is closed only on
fsync/sync, if 2 minutes pass (can be adjusted) or when the disk runs out
of space.
Interesting. Let me pick an example and see where we're going from
there. You have four directories, A, B, C and D, none of which is the
parent of another. Two cross-directory renames happen:
$ mv A/foo B/
$ mv C/bar D/
This will cause four modifications, one to each of the directories. I
would have assumed that the modifications to A and B receive one
transaction number n, C and D get a different one, n+1 if nothing else
is going on in between.
They most likely receive the same transaction (this is not like journaling
transaction --- new transactions are issued only on conditions above).
A/foo entry is set with txc=memory_cct[memory_cc],cc=memory_cc
B/foo entry is set with txc=memory_cct[memoty_cc]|0x80000000,cc=memory_cc
C/foo entry is set with txc=memory_cct[memory_cc],cc=memory_cc
D/foo entry is set with txc=memory_cct[memoty_cc]|0x80000000,cc=memory_cc
They may be written in any order (that's some improvement over
journaling) by buffer thread.
And when you sync, with one write of memory_cct to disk, you make old
entries permanently invalid and new entries permanently valid.
If the machine crashes before sync (and some of directory sectors were
written and some not), new entries will always be considered invalid, and
old entries always valid, because new crash count will be used and crash
count table at old crash count index will never be modified.
To commit the first rename, n is written into cct[entry->cc]. To
commit both, n+1 is written instead. Committing the second
transaction without committing the first is not possible.
Now clearly we are disagreeing, so I must have misunderstood your
design somehow. Can you see how?
Jörn
Mikulas
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]