diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-11-14 02:30:30 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-11-14 02:30:30 -0500 |
commit | 5e30025a319910695f5010dc0fb53a23299da14d (patch) | |
tree | 4292bcf78de221c7de1774ccf5ad0ac5a9315c26 /fs | |
parent | 7971e23a66c94f1b9bd2d64a3e86dfbfa8c60121 (diff) | |
parent | 90d3839b90fe379557dae4a44735a6af78f42885 (diff) |
Merge branch 'core-locking-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull core locking changes from Ingo Molnar:
"The biggest changes:
- add lockdep support for seqcount/seqlocks structures, this
unearthed both bugs and required extra annotation.
- move the various kernel locking primitives to the new
kernel/locking/ directory"
* 'core-locking-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (21 commits)
block: Use u64_stats_init() to initialize seqcounts
locking/lockdep: Mark __lockdep_count_forward_deps() as static
lockdep/proc: Fix lock-time avg computation
locking/doc: Update references to kernel/mutex.c
ipv6: Fix possible ipv6 seqlock deadlock
cpuset: Fix potential deadlock w/ set_mems_allowed
seqcount: Add lockdep functionality to seqcount/seqlock structures
net: Explicitly initialize u64_stats_sync structures for lockdep
locking: Move the percpu-rwsem code to kernel/locking/
locking: Move the lglocks code to kernel/locking/
locking: Move the rwsem code to kernel/locking/
locking: Move the rtmutex code to kernel/locking/
locking: Move the semaphore core to kernel/locking/
locking: Move the spinlock code to kernel/locking/
locking: Move the lockdep code to kernel/locking/
locking: Move the mutex code to kernel/locking/
hung_task debugging: Add tracepoint to report the hang
x86/locking/kconfig: Update paravirt spinlock Kconfig description
lockstat: Report avg wait and hold times
lockdep, x86/alternatives: Drop ancient lockdep fixup message
...
Diffstat (limited to 'fs')
-rw-r--r-- | fs/dcache.c | 4 | ||||
-rw-r--r-- | fs/fs_struct.c | 2 |
2 files changed, 3 insertions, 3 deletions
diff --git a/fs/dcache.c b/fs/dcache.c index a9dd384c5e80..0a38ef8d7f00 100644 --- a/fs/dcache.c +++ b/fs/dcache.c | |||
@@ -2606,7 +2606,7 @@ static void __d_move(struct dentry * dentry, struct dentry * target) | |||
2606 | dentry_lock_for_move(dentry, target); | 2606 | dentry_lock_for_move(dentry, target); |
2607 | 2607 | ||
2608 | write_seqcount_begin(&dentry->d_seq); | 2608 | write_seqcount_begin(&dentry->d_seq); |
2609 | write_seqcount_begin(&target->d_seq); | 2609 | write_seqcount_begin_nested(&target->d_seq, DENTRY_D_LOCK_NESTED); |
2610 | 2610 | ||
2611 | /* __d_drop does write_seqcount_barrier, but they're OK to nest. */ | 2611 | /* __d_drop does write_seqcount_barrier, but they're OK to nest. */ |
2612 | 2612 | ||
@@ -2738,7 +2738,7 @@ static void __d_materialise_dentry(struct dentry *dentry, struct dentry *anon) | |||
2738 | dentry_lock_for_move(anon, dentry); | 2738 | dentry_lock_for_move(anon, dentry); |
2739 | 2739 | ||
2740 | write_seqcount_begin(&dentry->d_seq); | 2740 | write_seqcount_begin(&dentry->d_seq); |
2741 | write_seqcount_begin(&anon->d_seq); | 2741 | write_seqcount_begin_nested(&anon->d_seq, DENTRY_D_LOCK_NESTED); |
2742 | 2742 | ||
2743 | dparent = dentry->d_parent; | 2743 | dparent = dentry->d_parent; |
2744 | 2744 | ||
diff --git a/fs/fs_struct.c b/fs/fs_struct.c index d8ac61d0c932..7dca743b2ce1 100644 --- a/fs/fs_struct.c +++ b/fs/fs_struct.c | |||
@@ -161,6 +161,6 @@ EXPORT_SYMBOL(current_umask); | |||
161 | struct fs_struct init_fs = { | 161 | struct fs_struct init_fs = { |
162 | .users = 1, | 162 | .users = 1, |
163 | .lock = __SPIN_LOCK_UNLOCKED(init_fs.lock), | 163 | .lock = __SPIN_LOCK_UNLOCKED(init_fs.lock), |
164 | .seq = SEQCNT_ZERO, | 164 | .seq = SEQCNT_ZERO(init_fs.seq), |
165 | .umask = 0022, | 165 | .umask = 0022, |
166 | }; | 166 | }; |