From 556d03d97b0689ee32cc20d35e8715e655745c80 Mon Sep 17 00:00:00 2001 From: Miklos Szeredi Date: Wed, 30 Jun 2004 11:13:41 +0000 Subject: add inode locking for open/release --- kernel/file.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'kernel/file.c') diff --git a/kernel/file.c b/kernel/file.c index e845d86..9a7da73 100644 --- a/kernel/file.c +++ b/kernel/file.c @@ -62,7 +62,9 @@ static int fuse_open(struct inode *inode, struct file *file) req->in.numargs = 1; req->in.args[0].size = sizeof(inarg); req->in.args[0].value = &inarg; + down(&inode->i_sem); request_send(fc, req); + up(&inode->i_sem); err = req->out.h.error; if (!err && !(fc->flags & FUSE_KERNEL_CACHE)) { #ifdef KERNEL_2_6 @@ -95,7 +97,10 @@ static int fuse_release(struct inode *inode, struct file *file) req->in.numargs = 1; req->in.args[0].size = sizeof(struct fuse_open_in); req->in.args[0].value = inarg; - request_send_noreply(fc, req); + down(&inode->i_sem); + request_send(fc, req); + up(&inode->i_sem); + fuse_put_request(fc, req); /* Return value is ignored by VFS */ return 0; -- cgit v1.2.3