[PATCH] fuse: simplify locking
authorMiklos Szeredi <miklos@szeredi.hu>
Tue, 11 Apr 2006 05:54:55 +0000 (22:54 -0700)
committerLinus Torvalds <torvalds@g5.osdl.org>
Tue, 11 Apr 2006 13:18:48 +0000 (06:18 -0700)
commit0720b315976447cba3f0c3e211223b8cb82b0f93
treeb8013f53bca7a72670961ea6f439612d1c631283
parente5ac1d1e70a8c19a65a959d73650203df7a2e168
[PATCH] fuse: simplify locking

This is in preparation for removing the global spinlock in favor of a
per-mount one.

The only critical part is the interaction between fuse_dev_release() and
fuse_fill_super(): fuse_dev_release() must see the assignment to
file->private_data, otherwise it will leak the reference to fuse_conn.

This is ensured by the fput() operation, which will synchronize the assignment
with other CPU's that may do a final fput() soon after this.

Also redundant locking is removed from fuse_fill_super(), where exclusion is
already ensured by the BKL held for this function by the VFS.

Signed-off-by: Miklos Szeredi <miklos@szeredi.hu>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
fs/fuse/dev.c
fs/fuse/inode.c