diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-10-21 15:54:12 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-10-21 15:54:12 -0400 |
| commit | 888a6f77e0418b049f83d37547c209b904d30af4 (patch) | |
| tree | 42cdb9f781d2177e6b380e69a66a27ec7705f51f /include | |
| parent | 31b7eab27a314b153d8fa07ba9e9ec00a98141e1 (diff) | |
| parent | 6506cf6ce68d78a5470a8360c965dafe8e4b78e3 (diff) | |
Merge branch 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
* 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (52 commits)
sched: fix RCU lockdep splat from task_group()
rcu: using ACCESS_ONCE() to observe the jiffies_stall/rnp->qsmask value
sched: suppress RCU lockdep splat in task_fork_fair
net: suppress RCU lockdep false positive in sock_update_classid
rcu: move check from rcu_dereference_bh to rcu_read_lock_bh_held
rcu: Add advice to PROVE_RCU_REPEATEDLY kernel config parameter
rcu: Add tracing data to support queueing models
rcu: fix sparse errors in rcutorture.c
rcu: only one evaluation of arg in rcu_dereference_check() unless sparse
kernel: Remove undead ifdef CONFIG_DEBUG_LOCK_ALLOC
rcu: fix _oddness handling of verbose stall warnings
rcu: performance fixes to TINY_PREEMPT_RCU callback checking
rcu: upgrade stallwarn.txt documentation for CPU-bound RT processes
vhost: add __rcu annotations
rcu: add comment stating that list_empty() applies to RCU-protected lists
rcu: apply TINY_PREEMPT_RCU read-side speedup to TREE_PREEMPT_RCU
rcu: combine duplicate code, courtesy of CONFIG_PREEMPT_RCU
rcu: Upgrade srcu_read_lock() docbook about SRCU grace periods
rcu: document ways of stalling updates in low-memory situations
rcu: repair code-duplication FIXMEs
...
Diffstat (limited to 'include')
| -rw-r--r-- | include/linux/cgroup.h | 4 | ||||
| -rw-r--r-- | include/linux/compiler.h | 4 | ||||
| -rw-r--r-- | include/linux/cred.h | 2 | ||||
| -rw-r--r-- | include/linux/fdtable.h | 6 | ||||
| -rw-r--r-- | include/linux/fs.h | 2 | ||||
| -rw-r--r-- | include/linux/genhd.h | 6 | ||||
| -rw-r--r-- | include/linux/hardirq.h | 2 | ||||
| -rw-r--r-- | include/linux/idr.h | 4 | ||||
| -rw-r--r-- | include/linux/init_task.h | 14 | ||||
| -rw-r--r-- | include/linux/input.h | 2 | ||||
| -rw-r--r-- | include/linux/iocontext.h | 2 | ||||
| -rw-r--r-- | include/linux/key.h | 3 | ||||
| -rw-r--r-- | include/linux/kvm_host.h | 2 | ||||
| -rw-r--r-- | include/linux/mm_types.h | 2 | ||||
| -rw-r--r-- | include/linux/nfs_fs.h | 2 | ||||
| -rw-r--r-- | include/linux/notifier.h | 10 | ||||
| -rw-r--r-- | include/linux/radix-tree.h | 4 | ||||
| -rw-r--r-- | include/linux/rculist.h | 62 | ||||
| -rw-r--r-- | include/linux/rculist_nulls.h | 16 | ||||
| -rw-r--r-- | include/linux/rcupdate.h | 490 | ||||
| -rw-r--r-- | include/linux/rcutiny.h | 104 | ||||
| -rw-r--r-- | include/linux/rcutree.h | 57 | ||||
| -rw-r--r-- | include/linux/sched.h | 16 | ||||
| -rw-r--r-- | include/linux/srcu.h | 34 | ||||
| -rw-r--r-- | include/linux/sunrpc/auth_gss.h | 4 | ||||
| -rw-r--r-- | include/net/cls_cgroup.h | 3 | ||||
| -rw-r--r-- | include/net/netfilter/nf_conntrack.h | 2 |
27 files changed, 527 insertions, 332 deletions
diff --git a/include/linux/cgroup.h b/include/linux/cgroup.h index 0c991023ee47..709dfb901d11 100644 --- a/include/linux/cgroup.h +++ b/include/linux/cgroup.h | |||
| @@ -75,7 +75,7 @@ struct cgroup_subsys_state { | |||
| 75 | 75 | ||
| 76 | unsigned long flags; | 76 | unsigned long flags; |
| 77 | /* ID for this css, if possible */ | 77 | /* ID for this css, if possible */ |
| 78 | struct css_id *id; | 78 | struct css_id __rcu *id; |
| 79 | }; | 79 | }; |
| 80 | 80 | ||
| 81 | /* bits in struct cgroup_subsys_state flags field */ | 81 | /* bits in struct cgroup_subsys_state flags field */ |
| @@ -205,7 +205,7 @@ struct cgroup { | |||
| 205 | struct list_head children; /* my children */ | 205 | struct list_head children; /* my children */ |
| 206 | 206 | ||
| 207 | struct cgroup *parent; /* my parent */ | 207 | struct cgroup *parent; /* my parent */ |
| 208 | struct dentry *dentry; /* cgroup fs entry, RCU protected */ | 208 | struct dentry __rcu *dentry; /* cgroup fs entry, RCU protected */ |
| 209 | 209 | ||
| 210 | /* Private pointers for each registered subsystem */ | 210 | /* Private pointers for each registered subsystem */ |
| 211 | struct cgroup_subsys_state *subsys[CGROUP_SUBSYS_COUNT]; | 211 | struct cgroup_subsys_state *subsys[CGROUP_SUBSYS_COUNT]; |
diff --git a/include/linux/compiler.h b/include/linux/compiler.h index c1a62c56a660..320d6c94ff84 100644 --- a/include/linux/compiler.h +++ b/include/linux/compiler.h | |||
| @@ -16,7 +16,11 @@ | |||
| 16 | # define __release(x) __context__(x,-1) | 16 | # define __release(x) __context__(x,-1) |
| 17 | # define __cond_lock(x,c) ((c) ? ({ __acquire(x); 1; }) : 0) | 17 | # define __cond_lock(x,c) ((c) ? ({ __acquire(x); 1; }) : 0) |
| 18 | # define __percpu __attribute__((noderef, address_space(3))) | 18 | # define __percpu __attribute__((noderef, address_space(3))) |
| 19 | #ifdef CONFIG_SPARSE_RCU_POINTER | ||
| 20 | # define __rcu __attribute__((noderef, address_space(4))) | ||
| 21 | #else | ||
| 19 | # define __rcu | 22 | # define __rcu |
| 23 | #endif | ||
| 20 | extern void __chk_user_ptr(const volatile void __user *); | 24 | extern void __chk_user_ptr(const volatile void __user *); |
| 21 | extern void __chk_io_ptr(const volatile void __iomem *); | 25 | extern void __chk_io_ptr(const volatile void __iomem *); |
| 22 | #else | 26 | #else |
diff --git a/include/linux/cred.h b/include/linux/cred.h index 4d2c39573f36..4aaeab376446 100644 --- a/include/linux/cred.h +++ b/include/linux/cred.h | |||
| @@ -84,7 +84,7 @@ struct thread_group_cred { | |||
| 84 | atomic_t usage; | 84 | atomic_t usage; |
| 85 | pid_t tgid; /* thread group process ID */ | 85 | pid_t tgid; /* thread group process ID */ |
| 86 | spinlock_t lock; | 86 | spinlock_t lock; |
| 87 | struct key *session_keyring; /* keyring inherited over fork */ | 87 | struct key __rcu *session_keyring; /* keyring inherited over fork */ |
| 88 | struct key *process_keyring; /* keyring private to this process */ | 88 | struct key *process_keyring; /* keyring private to this process */ |
| 89 | struct rcu_head rcu; /* RCU deletion hook */ | 89 | struct rcu_head rcu; /* RCU deletion hook */ |
| 90 | }; | 90 | }; |
diff --git a/include/linux/fdtable.h b/include/linux/fdtable.h index f59ed297b661..133c0ba25e30 100644 --- a/include/linux/fdtable.h +++ b/include/linux/fdtable.h | |||
| @@ -31,7 +31,7 @@ struct embedded_fd_set { | |||
| 31 | 31 | ||
| 32 | struct fdtable { | 32 | struct fdtable { |
| 33 | unsigned int max_fds; | 33 | unsigned int max_fds; |
| 34 | struct file ** fd; /* current fd array */ | 34 | struct file __rcu **fd; /* current fd array */ |
| 35 | fd_set *close_on_exec; | 35 | fd_set *close_on_exec; |
| 36 | fd_set *open_fds; | 36 | fd_set *open_fds; |
| 37 | struct rcu_head rcu; | 37 | struct rcu_head rcu; |
| @@ -46,7 +46,7 @@ struct files_struct { | |||
| 46 | * read mostly part | 46 | * read mostly part |
| 47 | */ | 47 | */ |
| 48 | atomic_t count; | 48 | atomic_t count; |
| 49 | struct fdtable *fdt; | 49 | struct fdtable __rcu *fdt; |
| 50 | struct fdtable fdtab; | 50 | struct fdtable fdtab; |
| 51 | /* | 51 | /* |
| 52 | * written part on a separate cache line in SMP | 52 | * written part on a separate cache line in SMP |
| @@ -55,7 +55,7 @@ struct files_struct { | |||
| 55 | int next_fd; | 55 | int next_fd; |
| 56 | struct embedded_fd_set close_on_exec_init; | 56 | struct embedded_fd_set close_on_exec_init; |
| 57 | struct embedded_fd_set open_fds_init; | 57 | struct embedded_fd_set open_fds_init; |
| 58 | struct file * fd_array[NR_OPEN_DEFAULT]; | 58 | struct file __rcu * fd_array[NR_OPEN_DEFAULT]; |
| 59 | }; | 59 | }; |
| 60 | 60 | ||
| 61 | #define rcu_dereference_check_fdtable(files, fdtfd) \ | 61 | #define rcu_dereference_check_fdtable(files, fdtfd) \ |
diff --git a/include/linux/fs.h b/include/linux/fs.h index 63d069bd80b7..3168dcfb94f2 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h | |||
| @@ -1384,7 +1384,7 @@ struct super_block { | |||
| 1384 | * Saved mount options for lazy filesystems using | 1384 | * Saved mount options for lazy filesystems using |
| 1385 | * generic_show_options() | 1385 | * generic_show_options() |
| 1386 | */ | 1386 | */ |
| 1387 | char *s_options; | 1387 | char __rcu *s_options; |
| 1388 | }; | 1388 | }; |
| 1389 | 1389 | ||
| 1390 | extern struct timespec current_fs_time(struct super_block *sb); | 1390 | extern struct timespec current_fs_time(struct super_block *sb); |
diff --git a/include/linux/genhd.h b/include/linux/genhd.h index 5f2f4c4d8fb0..af3f06b41dc1 100644 --- a/include/linux/genhd.h +++ b/include/linux/genhd.h | |||
| @@ -129,8 +129,8 @@ struct blk_scsi_cmd_filter { | |||
| 129 | struct disk_part_tbl { | 129 | struct disk_part_tbl { |
| 130 | struct rcu_head rcu_head; | 130 | struct rcu_head rcu_head; |
| 131 | int len; | 131 | int len; |
| 132 | struct hd_struct *last_lookup; | 132 | struct hd_struct __rcu *last_lookup; |
| 133 | struct hd_struct *part[]; | 133 | struct hd_struct __rcu *part[]; |
| 134 | }; | 134 | }; |
| 135 | 135 | ||
| 136 | struct gendisk { | 136 | struct gendisk { |
| @@ -149,7 +149,7 @@ struct gendisk { | |||
| 149 | * non-critical accesses use RCU. Always access through | 149 | * non-critical accesses use RCU. Always access through |
| 150 | * helpers. | 150 | * helpers. |
| 151 | */ | 151 | */ |
| 152 | struct disk_part_tbl *part_tbl; | 152 | struct disk_part_tbl __rcu *part_tbl; |
| 153 | struct hd_struct part0; | 153 | struct hd_struct part0; |
| 154 | 154 | ||
| 155 | const struct block_device_operations *fops; | 155 | const struct block_device_operations *fops; |
diff --git a/include/linux/hardirq.h b/include/linux/hardirq.h index d5b387669dab..1f4517d55b19 100644 --- a/include/linux/hardirq.h +++ b/include/linux/hardirq.h | |||
| @@ -139,7 +139,7 @@ static inline void account_system_vtime(struct task_struct *tsk) | |||
| 139 | #endif | 139 | #endif |
| 140 | 140 | ||
| 141 | #if defined(CONFIG_NO_HZ) | 141 | #if defined(CONFIG_NO_HZ) |
| 142 | #if defined(CONFIG_TINY_RCU) | 142 | #if defined(CONFIG_TINY_RCU) || defined(CONFIG_TINY_PREEMPT_RCU) |
| 143 | extern void rcu_enter_nohz(void); | 143 | extern void rcu_enter_nohz(void); |
| 144 | extern void rcu_exit_nohz(void); | 144 | extern void rcu_exit_nohz(void); |
| 145 | 145 | ||
diff --git a/include/linux/idr.h b/include/linux/idr.h index e968db71e33a..cdb715e58e3e 100644 --- a/include/linux/idr.h +++ b/include/linux/idr.h | |||
| @@ -50,14 +50,14 @@ | |||
| 50 | 50 | ||
| 51 | struct idr_layer { | 51 | struct idr_layer { |
| 52 | unsigned long bitmap; /* A zero bit means "space here" */ | 52 | unsigned long bitmap; /* A zero bit means "space here" */ |
| 53 | |||
