diff options
| author | Nick Piggin <npiggin@kernel.dk> | 2011-01-07 09:49:53 +0300 | 
|---|---|---|
| committer | Nick Piggin <npiggin@kernel.dk> | 2011-01-07 09:50:27 +0300 | 
| commit | c28cc36469554dc55540f059fbdc7fa22a2c31fc (patch) | |
| tree | 6b867456be48b8633a2d56a99e00bb3faf9dccc7 /include/linux/fs_struct.h | |
| parent | 31e6b01f4183ff419a6d1f86177cbf4662347cec (diff) | |
| download | linux-c28cc36469554dc55540f059fbdc7fa22a2c31fc.tar.xz | |
fs: fs_struct use seqlock
Use a seqlock in the fs_struct to enable us to take an atomic copy of the
complete cwd and root paths. Use this in the RCU lookup path to avoid a
thread-shared spinlock in RCU lookup operations.
Multi-threaded apps may now perform path lookups with scalability matching
multi-process apps. Operations such as stat(2) become very scalable for
multi-threaded workload.
Signed-off-by: Nick Piggin <npiggin@kernel.dk>
Diffstat (limited to 'include/linux/fs_struct.h')
| -rw-r--r-- | include/linux/fs_struct.h | 3 | 
1 files changed, 3 insertions, 0 deletions
diff --git a/include/linux/fs_struct.h b/include/linux/fs_struct.h index a42b5bf02f8b..003dc0fd7347 100644 --- a/include/linux/fs_struct.h +++ b/include/linux/fs_struct.h @@ -2,10 +2,13 @@  #define _LINUX_FS_STRUCT_H  #include <linux/path.h> +#include <linux/spinlock.h> +#include <linux/seqlock.h>  struct fs_struct {  	int users;  	spinlock_t lock; +	seqcount_t seq;  	int umask;  	int in_exec;  	struct path root, pwd;  | 
