aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/fs_struct.h
diff options
context:
space:
mode:
authorNick Piggin <npiggin@kernel.dk>2011-01-07 17:49:53 +1100
committerNick Piggin <npiggin@kernel.dk>2011-01-07 17:50:27 +1100
commitc28cc36469554dc55540f059fbdc7fa22a2c31fc (patch)
tree6b867456be48b8633a2d56a99e00bb3faf9dccc7 /include/linux/fs_struct.h
parentfs: rcu-walk for path lookup (diff)
downloadlinux-dev-c28cc36469554dc55540f059fbdc7fa22a2c31fc.tar.xz
linux-dev-c28cc36469554dc55540f059fbdc7fa22a2c31fc.zip
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.h3
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;