aboutsummaryrefslogtreecommitdiffstats
path: root/fs/fuse/inode.c
diff options
context:
space:
mode:
authorMiklos Szeredi <miklos@szeredi.hu>2006-04-11 01:54:55 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2006-04-11 09:18:48 -0400
commitd713311464bcca73c990d1a1b5c9467eae87f5b4 (patch)
treed049e9655bebed5212cd3534961d354e51c2769f /fs/fuse/inode.c
parent0720b315976447cba3f0c3e211223b8cb82b0f93 (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.c12
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>");
22MODULE_DESCRIPTION("Filesystem in Userspace"); 22MODULE_DESCRIPTION("Filesystem in Userspace");
23MODULE_LICENSE("GPL"); 23MODULE_LICENSE("GPL");
24 24
25spinlock_t fuse_lock;
26static kmem_cache_t *fuse_inode_cachep; 25static kmem_cache_t *fuse_inode_cachep;
27static struct subsystem connections_subsys; 26static 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;