summaryrefslogtreecommitdiff
path: root/fs/fuse
diff options
context:
space:
mode:
authorMiklos Szeredi <mszeredi@redhat.com>2019-01-24 12:40:17 +0300
committerMiklos Szeredi <mszeredi@redhat.com>2019-02-13 15:15:14 +0300
commit75126f5504524dd0f24753d8815db42d9ab23614 (patch)
treeec0cde9b5ec4fab5037f7ce702ac81e3da6d0eb7 /fs/fuse
parenteb98e3bdf3aa7b15b40c65063ea935f953f60c6b (diff)
downloadlinux-75126f5504524dd0f24753d8815db42d9ab23614.tar.xz
fuse: use atomic64_t for khctr
...to get rid of one more fc->lock use. Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
Diffstat (limited to 'fs/fuse')
-rw-r--r--fs/fuse/file.c4
-rw-r--r--fs/fuse/fuse_i.h2
-rw-r--r--fs/fuse/inode.c2
3 files changed, 3 insertions, 5 deletions
diff --git a/fs/fuse/file.c b/fs/fuse/file.c
index 26c2523120bc..b2a4fab08cb4 100644
--- a/fs/fuse/file.c
+++ b/fs/fuse/file.c
@@ -64,9 +64,7 @@ struct fuse_file *fuse_file_alloc(struct fuse_conn *fc)
RB_CLEAR_NODE(&ff->polled_node);
init_waitqueue_head(&ff->poll_wait);
- spin_lock(&fc->lock);
- ff->kh = ++fc->khctr;
- spin_unlock(&fc->lock);
+ ff->kh = atomic64_inc_return(&fc->khctr);
return ff;
}
diff --git a/fs/fuse/fuse_i.h b/fs/fuse/fuse_i.h
index b1ac587671ac..033e30af519f 100644
--- a/fs/fuse/fuse_i.h
+++ b/fs/fuse/fuse_i.h
@@ -544,7 +544,7 @@ struct fuse_conn {
struct fuse_iqueue iq;
/** The next unique kernel file handle */
- u64 khctr;
+ atomic64_t khctr;
/** rbtree of fuse_files waiting for poll events indexed by ph */
struct rb_root polled_files;
diff --git a/fs/fuse/inode.c b/fs/fuse/inode.c
index 11aac2f4eda1..2bbb7c59d6da 100644
--- a/fs/fuse/inode.c
+++ b/fs/fuse/inode.c
@@ -622,7 +622,7 @@ void fuse_conn_init(struct fuse_conn *fc, struct user_namespace *user_ns)
atomic_set(&fc->num_waiting, 0);
fc->max_background = FUSE_DEFAULT_MAX_BACKGROUND;
fc->congestion_threshold = FUSE_DEFAULT_CONGESTION_THRESHOLD;
- fc->khctr = 0;
+ atomic64_set(&fc->khctr, 0);
fc->polled_files = RB_ROOT;
fc->blocked = 0;
fc->initialized = 0;