diff options
Diffstat (limited to 'fs/coda/file.c')
| -rw-r--r-- | fs/coda/file.c | 19 |
1 files changed, 3 insertions, 16 deletions
diff --git a/fs/coda/file.c b/fs/coda/file.c index c4e395781d41..c8b50ba4366a 100644 --- a/fs/coda/file.c +++ b/fs/coda/file.c | |||
| @@ -15,7 +15,6 @@ | |||
| 15 | #include <linux/stat.h> | 15 | #include <linux/stat.h> |
| 16 | #include <linux/cred.h> | 16 | #include <linux/cred.h> |
| 17 | #include <linux/errno.h> | 17 | #include <linux/errno.h> |
| 18 | #include <linux/smp_lock.h> | ||
| 19 | #include <linux/spinlock.h> | 18 | #include <linux/spinlock.h> |
| 20 | #include <linux/string.h> | 19 | #include <linux/string.h> |
| 21 | #include <linux/slab.h> | 20 | #include <linux/slab.h> |
| @@ -144,8 +143,6 @@ int coda_open(struct inode *coda_inode, struct file *coda_file) | |||
| 144 | if (!cfi) | 143 | if (!cfi) |
| 145 | return -ENOMEM; | 144 | return -ENOMEM; |
| 146 | 145 | ||
| 147 | lock_kernel(); | ||
| 148 | |||
| 149 | error = venus_open(coda_inode->i_sb, coda_i2f(coda_inode), coda_flags, | 146 | error = venus_open(coda_inode->i_sb, coda_i2f(coda_inode), coda_flags, |
| 150 | &host_file); | 147 | &host_file); |
| 151 | if (!host_file) | 148 | if (!host_file) |
| @@ -153,7 +150,6 @@ int coda_open(struct inode *coda_inode, struct file *coda_file) | |||
| 153 | 150 | ||
| 154 | if (error) { | 151 | if (error) { |
| 155 | kfree(cfi); | 152 | kfree(cfi); |
| 156 | unlock_kernel(); | ||
| 157 | return error; | 153 | return error; |
| 158 | } | 154 | } |
| 159 | 155 | ||
| @@ -165,8 +161,6 @@ int coda_open(struct inode *coda_inode, struct file *coda_file) | |||
| 165 | 161 | ||
| 166 | BUG_ON(coda_file->private_data != NULL); | 162 | BUG_ON(coda_file->private_data != NULL); |
| 167 | coda_file->private_data = cfi; | 163 | coda_file->private_data = cfi; |
| 168 | |||
| 169 | unlock_kernel(); | ||
| 170 | return 0; | 164 | return 0; |
| 171 | } | 165 | } |
| 172 | 166 | ||
| @@ -177,9 +171,7 @@ int coda_release(struct inode *coda_inode, struct file *coda_file) | |||
| 177 | struct coda_file_info *cfi; | 171 | struct coda_file_info *cfi; |
| 178 | struct coda_inode_info *cii; | 172 | struct coda_inode_info *cii; |
| 179 | struct inode *host_inode; | 173 | struct inode *host_inode; |
| 180 | int err = 0; | 174 | int err; |
| 181 | |||
| 182 | lock_kernel(); | ||
| 183 | 175 | ||
| 184 | cfi = CODA_FTOC(coda_file); | 176 | cfi = CODA_FTOC(coda_file); |
| 185 | BUG_ON(!cfi || cfi->cfi_magic != CODA_MAGIC); | 177 | BUG_ON(!cfi || cfi->cfi_magic != CODA_MAGIC); |
| @@ -203,8 +195,6 @@ int coda_release(struct inode *coda_inode, struct file *coda_file) | |||
| 203 | kfree(coda_file->private_data); | 195 | kfree(coda_file->private_data); |
| 204 | coda_file->private_data = NULL; | 196 | coda_file->private_data = NULL; |
| 205 | 197 | ||
| 206 | unlock_kernel(); | ||
| 207 | |||
| 208 | /* VFS fput ignores the return value from file_operations->release, so | 198 | /* VFS fput ignores the return value from file_operations->release, so |
| 209 | * there is no use returning an error here */ | 199 | * there is no use returning an error here */ |
| 210 | return 0; | 200 | return 0; |
| @@ -215,7 +205,7 @@ int coda_fsync(struct file *coda_file, int datasync) | |||
| 215 | struct file *host_file; | 205 | struct file *host_file; |
| 216 | struct inode *coda_inode = coda_file->f_path.dentry->d_inode; | 206 | struct inode *coda_inode = coda_file->f_path.dentry->d_inode; |
| 217 | struct coda_file_info *cfi; | 207 | struct coda_file_info *cfi; |
| 218 | int err = 0; | 208 | int err; |
| 219 | 209 | ||
| 220 | if (!(S_ISREG(coda_inode->i_mode) || S_ISDIR(coda_inode->i_mode) || | 210 | if (!(S_ISREG(coda_inode->i_mode) || S_ISDIR(coda_inode->i_mode) || |
| 221 | S_ISLNK(coda_inode->i_mode))) | 211 | S_ISLNK(coda_inode->i_mode))) |
| @@ -226,11 +216,8 @@ int coda_fsync(struct file *coda_file, int datasync) | |||
| 226 | host_file = cfi->cfi_container; | 216 | host_file = cfi->cfi_container; |
| 227 | 217 | ||
| 228 | err = vfs_fsync(host_file, datasync); | 218 | err = vfs_fsync(host_file, datasync); |
| 229 | if ( !err && !datasync ) { | 219 | if (!err && !datasync) |
| 230 | lock_kernel(); | ||
| 231 | err = venus_fsync(coda_inode->i_sb, coda_i2f(coda_inode)); | 220 | err = venus_fsync(coda_inode->i_sb, coda_i2f(coda_inode)); |
| 232 | unlock_kernel(); | ||
| 233 | } | ||
| 234 | 221 | ||
| 235 | return err; | 222 | return err; |
| 236 | } | 223 | } |
