diff options
author | 2011-01-07 17:49:53 +1100 | |
---|---|---|
committer | 2011-01-07 17:50:27 +1100 | |
commit | c28cc36469554dc55540f059fbdc7fa22a2c31fc (patch) | |
tree | 6b867456be48b8633a2d56a99e00bb3faf9dccc7 /include | |
parent | fs: rcu-walk for path lookup (diff) | |
download | linux-c28cc36469554dc55540f059fbdc7fa22a2c31fc.tar.gz linux-c28cc36469554dc55540f059fbdc7fa22a2c31fc.tar.bz2 linux-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')
-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; |