Nick Piggin 949854d024 fs: Use rename lock and RCU for multi-step operations
The remaining usages for dcache_lock is to allow atomic, multi-step read-side
operations over the directory tree by excluding modifications to the tree.
Also, to walk in the leaf->root direction in the tree where we don't have
a natural d_lock ordering.

This could be accomplished by taking every d_lock, but this would mean a
huge number of locks and actually gets very tricky.

Solve this instead by using the rename seqlock for multi-step read-side
operations, retry in case of a rename so we don't walk up the wrong parent.
Concurrent dentry insertions are not serialised against.  Concurrent deletes
are tricky when walking up the directory: our parent might have been deleted
when dropping locks so also need to check and retry for that.

We can also use the rename lock in cases where livelock is a worry (and it
is introduced in subsequent patch).

Signed-off-by: Nick Piggin <npiggin@kernel.dk>
2011-01-07 17:50:22 +11:00
..
2010-12-10 12:27:49 -08:00
2010-12-08 19:52:54 +01:00
2011-01-02 15:31:11 -08:00
2010-12-02 01:19:32 -05:00
2010-12-22 19:43:34 -08:00
2010-12-02 14:51:15 -08:00
2010-11-16 13:33:23 -08:00
2010-12-24 01:28:54 -07:00
2010-12-04 11:18:25 -05:00
2010-11-12 07:55:30 -08:00
2010-12-22 19:43:34 -08:00
2011-01-07 17:50:21 +11:00