diff options
author | Arnd Bergmann <arnd@arndb.de> | 2011-01-22 14:26:12 -0500 |
---|---|---|
committer | Arnd Bergmann <arnd@arndb.de> | 2011-03-02 16:27:36 -0500 |
commit | 9a311b96c3065f362e3348cb5d7af1a57ca6bff9 (patch) | |
tree | aed281e9ff7c5e689895ff838e886dff77e3e2e9 /fs/hpfs/inode.c | |
parent | 5edc341313a188d94cde7ef87ac31647cea8601a (diff) |
hpfs: remove the BKL
This removes the BKL in hpfs in a rather awful
way, by making the code only work on uniprocessor
systems without kernel preemption, as suggested
by Andi Kleen.
The HPFS code probably has close to zero remaining
users on current kernels, all archeological uses of
the file system can probably be done with the significant
restrictions.
The hpfs_lock/hpfs_unlock functions are left in the
code, sincen Mikulas has indicated that he is still
interested in fixing it in a better way.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Andi Kleen <ak@linux.intel.com>
Cc: Mikulas Patocka <mikulas@artax.karlin.mff.cuni.cz>
Cc: linux-fsdevel@vger.kernel.org
Diffstat (limited to 'fs/hpfs/inode.c')
-rw-r--r-- | fs/hpfs/inode.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/fs/hpfs/inode.c b/fs/hpfs/inode.c index 1ae35baa539e..87f1f787e767 100644 --- a/fs/hpfs/inode.c +++ b/fs/hpfs/inode.c | |||
@@ -6,7 +6,6 @@ | |||
6 | * inode VFS functions | 6 | * inode VFS functions |
7 | */ | 7 | */ |
8 | 8 | ||
9 | #include <linux/smp_lock.h> | ||
10 | #include <linux/slab.h> | 9 | #include <linux/slab.h> |
11 | #include "hpfs_fn.h" | 10 | #include "hpfs_fn.h" |
12 | 11 | ||
@@ -267,7 +266,7 @@ int hpfs_setattr(struct dentry *dentry, struct iattr *attr) | |||
267 | struct inode *inode = dentry->d_inode; | 266 | struct inode *inode = dentry->d_inode; |
268 | int error = -EINVAL; | 267 | int error = -EINVAL; |
269 | 268 | ||
270 | lock_kernel(); | 269 | hpfs_lock(inode->i_sb); |
271 | if (inode->i_ino == hpfs_sb(inode->i_sb)->sb_root) | 270 | if (inode->i_ino == hpfs_sb(inode->i_sb)->sb_root) |
272 | goto out_unlock; | 271 | goto out_unlock; |
273 | if ((attr->ia_valid & ATTR_SIZE) && attr->ia_size > inode->i_size) | 272 | if ((attr->ia_valid & ATTR_SIZE) && attr->ia_size > inode->i_size) |
@@ -290,7 +289,7 @@ int hpfs_setattr(struct dentry *dentry, struct iattr *attr) | |||
290 | hpfs_write_inode(inode); | 289 | hpfs_write_inode(inode); |
291 | 290 | ||
292 | out_unlock: | 291 | out_unlock: |
293 | unlock_kernel(); | 292 | hpfs_unlock(inode->i_sb); |
294 | return error; | 293 | return error; |
295 | } | 294 | } |
296 | 295 | ||
@@ -307,8 +306,8 @@ void hpfs_evict_inode(struct inode *inode) | |||
307 | truncate_inode_pages(&inode->i_data, 0); | 306 | truncate_inode_pages(&inode->i_data, 0); |
308 | end_writeback(inode); | 307 | end_writeback(inode); |
309 | if (!inode->i_nlink) { | 308 | if (!inode->i_nlink) { |
310 | lock_kernel(); | 309 | hpfs_lock(inode->i_sb); |
311 | hpfs_remove_fnode(inode->i_sb, inode->i_ino); | 310 | hpfs_remove_fnode(inode->i_sb, inode->i_ino); |
312 | unlock_kernel(); | 311 | hpfs_unlock(inode->i_sb); |
313 | } | 312 | } |
314 | } | 313 | } |