diff options
author | Kirill Tkhai <ktkhai@virtuozzo.com> | 2018-11-09 13:33:17 +0300 |
---|---|---|
committer | Miklos Szeredi <mszeredi@redhat.com> | 2019-02-13 13:15:13 +0100 |
commit | 4510d86fbbb36872224482bb21836d47cce8be8c (patch) | |
tree | d4340b770fd1f73d14c5391f407b50b00b946f2b /fs/fuse/dir.c | |
parent | ebf84d0c7220c7c9b904c405e61175d2a50cfb39 (diff) | |
download | lwn-4510d86fbbb36872224482bb21836d47cce8be8c.tar.gz lwn-4510d86fbbb36872224482bb21836d47cce8be8c.zip |
fuse: Convert fc->attr_version into atomic64_t
This patch makes fc->attr_version of atomic64_t type, so fc->lock won't be
needed to read or modify it anymore.
Signed-off-by: Kirill Tkhai <ktkhai@virtuozzo.com>
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
Diffstat (limited to 'fs/fuse/dir.c')
-rw-r--r-- | fs/fuse/dir.c | 19 |
1 files changed, 2 insertions, 17 deletions
diff --git a/fs/fuse/dir.c b/fs/fuse/dir.c index 46c7430b94fc..10106f23e9e8 100644 --- a/fs/fuse/dir.c +++ b/fs/fuse/dir.c @@ -149,21 +149,6 @@ static void fuse_lookup_init(struct fuse_conn *fc, struct fuse_args *args, args->out.args[0].value = outarg; } -u64 fuse_get_attr_version(struct fuse_conn *fc) -{ - u64 curr_version; - - /* - * The spin lock isn't actually needed on 64bit archs, but we - * don't yet care too much about such optimizations. - */ - spin_lock(&fc->lock); - curr_version = fc->attr_version; - spin_unlock(&fc->lock); - - return curr_version; -} - /* * Check whether the dentry is still valid * @@ -674,7 +659,7 @@ static int fuse_unlink(struct inode *dir, struct dentry *entry) struct fuse_inode *fi = get_fuse_inode(inode); spin_lock(&fc->lock); - fi->attr_version = ++fc->attr_version; + fi->attr_version = atomic64_inc_return(&fc->attr_version); /* * If i_nlink == 0 then unlink doesn't make sense, yet this can * happen if userspace filesystem is careless. It would be @@ -828,7 +813,7 @@ static int fuse_link(struct dentry *entry, struct inode *newdir, struct fuse_inode *fi = get_fuse_inode(inode); spin_lock(&fc->lock); - fi->attr_version = ++fc->attr_version; + fi->attr_version = atomic64_inc_return(&fc->attr_version); inc_nlink(inode); spin_unlock(&fc->lock); fuse_invalidate_attr(inode); |