diff options
author | Miklos Szeredi <miklos@szeredi.hu> | 2006-04-11 01:54:55 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-04-11 09:18:48 -0400 |
commit | d713311464bcca73c990d1a1b5c9467eae87f5b4 (patch) | |
tree | d049e9655bebed5212cd3534961d354e51c2769f /fs/fuse/inode.c | |
parent | 0720b315976447cba3f0c3e211223b8cb82b0f93 (diff) |
[PATCH] fuse: use a per-mount spinlock
Remove the global spinlock in favor of a per-mount one.
This patch is basically find & replace. The difficult part has already been
done by the previous patch.
Signed-off-by: Miklos Szeredi <miklos@szeredi.hu>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'fs/fuse/inode.c')
-rw-r--r-- | fs/fuse/inode.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/fs/fuse/inode.c b/fs/fuse/inode.c index 620579a69107..cc58debeabd4 100644 --- a/fs/fuse/inode.c +++ b/fs/fuse/inode.c | |||
@@ -1,6 +1,6 @@ | |||
1 | /* | 1 | /* |
2 | FUSE: Filesystem in Userspace | 2 | FUSE: Filesystem in Userspace |
3 | Copyright (C) 2001-2005 Miklos Szeredi <miklos@szeredi.hu> | 3 | Copyright (C) 2001-2006 Miklos Szeredi <miklos@szeredi.hu> |
4 | 4 | ||
5 | This program can be distributed under the terms of the GNU GPL. | 5 | This program can be distributed under the terms of the GNU GPL. |
6 | See the file COPYING. | 6 | See the file COPYING. |
@@ -22,7 +22,6 @@ MODULE_AUTHOR("Miklos Szeredi <miklos@szeredi.hu>"); | |||
22 | MODULE_DESCRIPTION("Filesystem in Userspace"); | 22 | MODULE_DESCRIPTION("Filesystem in Userspace"); |
23 | MODULE_LICENSE("GPL"); | 23 | MODULE_LICENSE("GPL"); |
24 | 24 | ||
25 | spinlock_t fuse_lock; | ||
26 | static kmem_cache_t *fuse_inode_cachep; | 25 | static kmem_cache_t *fuse_inode_cachep; |
27 | static struct subsystem connections_subsys; | 26 | static struct subsystem connections_subsys; |
28 | 27 | ||
@@ -207,13 +206,14 @@ static void fuse_put_super(struct super_block *sb) | |||
207 | 206 | ||
208 | down_write(&fc->sbput_sem); | 207 | down_write(&fc->sbput_sem); |
209 | while (!list_empty(&fc->background)) | 208 | while (!list_empty(&fc->background)) |
210 | fuse_release_background(list_entry(fc->background.next, | 209 | fuse_release_background(fc, |
210 | list_entry(fc->background.next, | ||
211 | struct fuse_req, bg_entry)); | 211 | struct fuse_req, bg_entry)); |
212 | 212 | ||
213 | spin_lock(&fuse_lock); | 213 | spin_lock(&fc->lock); |
214 | fc->mounted = 0; | 214 | fc->mounted = 0; |
215 | fc->connected = 0; | 215 | fc->connected = 0; |
216 | spin_unlock(&fuse_lock); | 216 | spin_unlock(&fc->lock); |
217 | up_write(&fc->sbput_sem); | 217 | up_write(&fc->sbput_sem); |
218 | /* Flush all readers on this fs */ | 218 | /* Flush all readers on this fs */ |
219 | kill_fasync(&fc->fasync, SIGIO, POLL_IN); | 219 | kill_fasync(&fc->fasync, SIGIO, POLL_IN); |
@@ -388,6 +388,7 @@ static struct fuse_conn *new_conn(void) | |||
388 | fc = kzalloc(sizeof(*fc), GFP_KERNEL); | 388 | fc = kzalloc(sizeof(*fc), GFP_KERNEL); |
389 | if (fc) { | 389 | if (fc) { |
390 | int i; | 390 | int i; |
391 | spin_lock_init(&fc->lock); | ||
391 | init_waitqueue_head(&fc->waitq); | 392 | init_waitqueue_head(&fc->waitq); |
392 | INIT_LIST_HEAD(&fc->pending); | 393 | INIT_LIST_HEAD(&fc->pending); |
393 | INIT_LIST_HEAD(&fc->processing); | 394 | INIT_LIST_HEAD(&fc->processing); |
@@ -734,7 +735,6 @@ static int __init fuse_init(void) | |||
734 | printk("fuse init (API version %i.%i)\n", | 735 | printk("fuse init (API version %i.%i)\n", |
735 | FUSE_KERNEL_VERSION, FUSE_KERNEL_MINOR_VERSION); | 736 | FUSE_KERNEL_VERSION, FUSE_KERNEL_MINOR_VERSION); |
736 | 737 | ||
737 | spin_lock_init(&fuse_lock); | ||
738 | res = fuse_fs_init(); | 738 | res = fuse_fs_init(); |
739 | if (res) | 739 | if (res) |
740 | goto err; | 740 | goto err; |