diff options
author | Miklos Szeredi <mszeredi@redhat.com> | 2019-01-24 10:40:17 +0100 |
---|---|---|
committer | Miklos Szeredi <mszeredi@redhat.com> | 2019-02-13 13:15:14 +0100 |
commit | 75126f5504524dd0f24753d8815db42d9ab23614 (patch) | |
tree | ec0cde9b5ec4fab5037f7ce702ac81e3da6d0eb7 /fs/fuse | |
parent | eb98e3bdf3aa7b15b40c65063ea935f953f60c6b (diff) |
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.c | 4 | ||||
-rw-r--r-- | fs/fuse/fuse_i.h | 2 | ||||
-rw-r--r-- | fs/fuse/inode.c | 2 |
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; |