diff options
author | Nick Piggin <npiggin@kernel.dk> | 2011-01-07 17:49:53 +1100 |
---|---|---|
committer | Nick Piggin <npiggin@kernel.dk> | 2011-01-07 17:50:27 +1100 |
commit | c28cc36469554dc55540f059fbdc7fa22a2c31fc (patch) | |
tree | 6b867456be48b8633a2d56a99e00bb3faf9dccc7 /include/linux/fs_struct.h | |
parent | 31e6b01f4183ff419a6d1f86177cbf4662347cec (diff) | |
download | op-kernel-dev-c28cc36469554dc55540f059fbdc7fa22a2c31fc.zip op-kernel-dev-c28cc36469554dc55540f059fbdc7fa22a2c31fc.tar.gz |
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 a42b5bf..003dc0f 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; |