aboutsummaryrefslogtreecommitdiffstats
path: root/fs/adfs/inode.c
diff options
context:
space:
mode:
authorArnd Bergmann <arnd@arndb.de>2011-01-22 14:05:05 -0500
committerArnd Bergmann <arnd@arndb.de>2011-03-01 18:02:38 -0500
commit4688a066ecf60086ea82f68edb3b036b567d2c08 (patch)
treee1a4b93e5b5084adfbf78c83de32dc590959fe14 /fs/adfs/inode.c
parentf5412be599602124d2bdd49947b231dd77c0bf99 (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/inode.c')
-rw-r--r--fs/adfs/inode.c6
1 files changed, 0 insertions, 6 deletions
diff --git a/fs/adfs/inode.c b/fs/adfs/inode.c
index 65794b8fe79e..09fe40198d1c 100644
--- a/fs/adfs/inode.c
+++ b/fs/adfs/inode.c
@@ -7,7 +7,6 @@
7 * it under the terms of the GNU General Public License version 2 as 7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation. 8 * published by the Free Software Foundation.
9 */ 9 */
10#include <linux/smp_lock.h>
11#include <linux/buffer_head.h> 10#include <linux/buffer_head.h>
12#include <linux/writeback.h> 11#include <linux/writeback.h>
13#include "adfs.h" 12#include "adfs.h"
@@ -316,8 +315,6 @@ adfs_notify_change(struct dentry *dentry, struct iattr *attr)
316 unsigned int ia_valid = attr->ia_valid; 315 unsigned int ia_valid = attr->ia_valid;
317 int error; 316 int error;
318 317
319 lock_kernel();
320
321 error = inode_change_ok(inode, attr); 318 error = inode_change_ok(inode, attr);
322 319
323 /* 320 /*
@@ -359,7 +356,6 @@ adfs_notify_change(struct dentry *dentry, struct iattr *attr)
359 if (ia_valid & (ATTR_SIZE | ATTR_MTIME | ATTR_MODE)) 356 if (ia_valid & (ATTR_SIZE | ATTR_MTIME | ATTR_MODE))
360 mark_inode_dirty(inode); 357 mark_inode_dirty(inode);
361out: 358out:
362 unlock_kernel();
363 return error; 359 return error;
364} 360}
365 361
@@ -374,7 +370,6 @@ int adfs_write_inode(struct inode *inode, struct writeback_control *wbc)
374 struct object_info obj; 370 struct object_info obj;
375 int ret; 371 int ret;
376 372
377 lock_kernel();
378 obj.file_id = inode->i_ino; 373 obj.file_id = inode->i_ino;
379 obj.name_len = 0; 374 obj.name_len = 0;
380 obj.parent_id = ADFS_I(inode)->parent_id; 375 obj.parent_id = ADFS_I(inode)->parent_id;
@@ -384,6 +379,5 @@ int adfs_write_inode(struct inode *inode, struct writeback_control *wbc)
384 obj.size = inode->i_size; 379 obj.size = inode->i_size;
385 380
386 ret = adfs_dir_update(sb, &obj, wbc->sync_mode == WB_SYNC_ALL); 381 ret = adfs_dir_update(sb, &obj, wbc->sync_mode == WB_SYNC_ALL);
387 unlock_kernel();
388 return ret; 382 return ret;
389} 383}