diff options
author | Arnd Bergmann <arnd@arndb.de> | 2011-01-22 14:05:05 -0500 |
---|---|---|
committer | Arnd Bergmann <arnd@arndb.de> | 2011-03-01 18:02:38 -0500 |
commit | 4688a066ecf60086ea82f68edb3b036b567d2c08 (patch) | |
tree | e1a4b93e5b5084adfbf78c83de32dc590959fe14 /fs/adfs/dir.c | |
parent | f5412be599602124d2bdd49947b231dd77c0bf99 (diff) |
adfs: remove the big kernel lock
According to Russell King, adfs was written to not require the big
kernel lock, and all inode updates are done under adfs_dir_lock.
All other metadata in adfs is read-only and does not require locking.
The use of the BKL is the result of various pushdowns from the VFS
operations.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Russell King <rmk@arm.linux.org.uk>
Cc: Stuart Swales <stuart.swales.croftnuisk@gmail.com>
Diffstat (limited to 'fs/adfs/dir.c')
-rw-r--r-- | fs/adfs/dir.c | 6 |
1 files changed, 0 insertions, 6 deletions
diff --git a/fs/adfs/dir.c b/fs/adfs/dir.c index 3b4a764ed780..3d83075aaa2e 100644 --- a/fs/adfs/dir.c +++ b/fs/adfs/dir.c | |||
@@ -9,7 +9,6 @@ | |||
9 | * | 9 | * |
10 | * Common directory handling for ADFS | 10 | * Common directory handling for ADFS |
11 | */ | 11 | */ |
12 | #include <linux/smp_lock.h> | ||
13 | #include "adfs.h" | 12 | #include "adfs.h" |
14 | 13 | ||
15 | /* | 14 | /* |
@@ -27,8 +26,6 @@ adfs_readdir(struct file *filp, void *dirent, filldir_t filldir) | |||
27 | struct adfs_dir dir; | 26 | struct adfs_dir dir; |
28 | int ret = 0; | 27 | int ret = 0; |
29 | 28 | ||
30 | lock_kernel(); | ||
31 | |||
32 | if (filp->f_pos >> 32) | 29 | if (filp->f_pos >> 32) |
33 | goto out; | 30 | goto out; |
34 | 31 | ||
@@ -70,7 +67,6 @@ free_out: | |||
70 | ops->free(&dir); | 67 | ops->free(&dir); |
71 | 68 | ||
72 | out: | 69 | out: |
73 | unlock_kernel(); | ||
74 | return ret; | 70 | return ret; |
75 | } | 71 | } |
76 | 72 | ||
@@ -276,7 +272,6 @@ adfs_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd) | |||
276 | struct object_info obj; | 272 | struct object_info obj; |
277 | int error; | 273 | int error; |
278 | 274 | ||
279 | lock_kernel(); | ||
280 | error = adfs_dir_lookup_byname(dir, &dentry->d_name, &obj); | 275 | error = adfs_dir_lookup_byname(dir, &dentry->d_name, &obj); |
281 | if (error == 0) { | 276 | if (error == 0) { |
282 | error = -EACCES; | 277 | error = -EACCES; |
@@ -288,7 +283,6 @@ adfs_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd) | |||
288 | if (inode) | 283 | if (inode) |
289 | error = 0; | 284 | error = 0; |
290 | } | 285 | } |
291 | unlock_kernel(); | ||
292 | d_add(dentry, inode); | 286 | d_add(dentry, inode); |
293 | return ERR_PTR(error); | 287 | return ERR_PTR(error); |
294 | } | 288 | } |