[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>
这个提交包含在:
@@ -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,
|
||||
|
在新工单中引用
屏蔽一个用户