diff options
author | Roman Zippel <zippel@linux-m68k.org> | 2008-04-29 17:02:20 +0200 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2008-05-06 13:45:33 -0400 |
commit | dca3c33652e437ed02c30ed3eca3cecd0cc00838 (patch) | |
tree | 590db1cd28a19c85532ba8ec8abf5eeb70f993ea /fs/affs/affs.h | |
parent | a15306365a16380f3bafee9e181ba01231d4acd7 (diff) | |
download | linux-3.10-dca3c33652e437ed02c30ed3eca3cecd0cc00838.tar.gz linux-3.10-dca3c33652e437ed02c30ed3eca3cecd0cc00838.tar.bz2 linux-3.10-dca3c33652e437ed02c30ed3eca3cecd0cc00838.zip |
[PATCH] fix reservation discarding in affs
- remove affs_put_inode, so preallocations aren't discared unnecessarily
often.
- remove affs_drop_inode, it's called with a spinlock held, so it can't
use a mutex.
- make i_opencnt atomic
- avoid direct b_count manipulations
- a few allocation failure fixes, so that these are more gracefully
handled now.
Signed-off-by: Roman Zippel <zippel@linux-m68k.org>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/affs/affs.h')
-rw-r--r-- | fs/affs/affs.h | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/fs/affs/affs.h b/fs/affs/affs.h index d5bd497ab9c..223b1917093 100644 --- a/fs/affs/affs.h +++ b/fs/affs/affs.h @@ -48,7 +48,7 @@ struct affs_ext_key { * affs fs inode data in memory */ struct affs_inode_info { - u32 i_opencnt; + atomic_t i_opencnt; struct semaphore i_link_lock; /* Protects internal inode access. */ struct semaphore i_ext_lock; /* Protects internal inode access. */ #define i_hash_lock i_ext_lock @@ -170,8 +170,6 @@ extern int affs_rename(struct inode *old_dir, struct dentry *old_dentry, extern unsigned long affs_parent_ino(struct inode *dir); extern struct inode *affs_new_inode(struct inode *dir); extern int affs_notify_change(struct dentry *dentry, struct iattr *attr); -extern void affs_put_inode(struct inode *inode); -extern void affs_drop_inode(struct inode *inode); extern void affs_delete_inode(struct inode *inode); extern void affs_clear_inode(struct inode *inode); extern struct inode *affs_iget(struct super_block *sb, |