]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - include/linux/fs_struct.h
fs: fs_struct rwlock to spinlock
[net-next-2.6.git] / include / linux / fs_struct.h
index 78a05bfcd8ebd6075b2add0da9da064804e645d6..a42b5bf02f8bcfec3ea20ecef765df3f4d690250 100644 (file)
@@ -5,7 +5,7 @@
 
 struct fs_struct {
        int users;
-       rwlock_t lock;
+       spinlock_t lock;
        int umask;
        int in_exec;
        struct path root, pwd;
@@ -21,4 +21,31 @@ extern void free_fs_struct(struct fs_struct *);
 extern void daemonize_fs_struct(void);
 extern int unshare_fs_struct(void);
 
+static inline void get_fs_root(struct fs_struct *fs, struct path *root)
+{
+       spin_lock(&fs->lock);
+       *root = fs->root;
+       path_get(root);
+       spin_unlock(&fs->lock);
+}
+
+static inline void get_fs_pwd(struct fs_struct *fs, struct path *pwd)
+{
+       spin_lock(&fs->lock);
+       *pwd = fs->pwd;
+       path_get(pwd);
+       spin_unlock(&fs->lock);
+}
+
+static inline void get_fs_root_and_pwd(struct fs_struct *fs, struct path *root,
+                                      struct path *pwd)
+{
+       spin_lock(&fs->lock);
+       *root = fs->root;
+       path_get(root);
+       *pwd = fs->pwd;
+       path_get(pwd);
+       spin_unlock(&fs->lock);
+}
+
 #endif /* _LINUX_FS_STRUCT_H */