diff options
Diffstat (limited to 'fs/reiserfs')
| -rw-r--r-- | fs/reiserfs/inode.c | 12 | ||||
| -rw-r--r-- | fs/reiserfs/journal.c | 4 | ||||
| -rw-r--r-- | fs/reiserfs/xattr.c | 1 |
3 files changed, 13 insertions, 4 deletions
diff --git a/fs/reiserfs/inode.c b/fs/reiserfs/inode.c index 1aaf2c7d44e6..d9f614a57731 100644 --- a/fs/reiserfs/inode.c +++ b/fs/reiserfs/inode.c | |||
| @@ -1980,7 +1980,17 @@ int reiserfs_new_inode(struct reiserfs_transaction_handle *th, | |||
| 1980 | out_inserted_sd: | 1980 | out_inserted_sd: |
| 1981 | inode->i_nlink = 0; | 1981 | inode->i_nlink = 0; |
| 1982 | th->t_trans_id = 0; /* so the caller can't use this handle later */ | 1982 | th->t_trans_id = 0; /* so the caller can't use this handle later */ |
| 1983 | iput(inode); | 1983 | |
| 1984 | /* If we were inheriting an ACL, we need to release the lock so that | ||
| 1985 | * iput doesn't deadlock in reiserfs_delete_xattrs. The locking | ||
| 1986 | * code really needs to be reworked, but this will take care of it | ||
| 1987 | * for now. -jeffm */ | ||
| 1988 | if (REISERFS_I(dir)->i_acl_default) { | ||
| 1989 | reiserfs_write_unlock_xattrs(dir->i_sb); | ||
| 1990 | iput(inode); | ||
| 1991 | reiserfs_write_lock_xattrs(dir->i_sb); | ||
| 1992 | } else | ||
| 1993 | iput(inode); | ||
| 1984 | return err; | 1994 | return err; |
| 1985 | } | 1995 | } |
| 1986 | 1996 | ||
diff --git a/fs/reiserfs/journal.c b/fs/reiserfs/journal.c index c66c27ec4100..ca7989b04be3 100644 --- a/fs/reiserfs/journal.c +++ b/fs/reiserfs/journal.c | |||
| @@ -556,14 +556,14 @@ static inline void insert_journal_hash(struct reiserfs_journal_cnode **table, | |||
| 556 | } | 556 | } |
| 557 | 557 | ||
| 558 | /* lock the current transaction */ | 558 | /* lock the current transaction */ |
| 559 | inline static void lock_journal(struct super_block *p_s_sb) | 559 | static inline void lock_journal(struct super_block *p_s_sb) |
| 560 | { | 560 | { |
| 561 | PROC_INFO_INC(p_s_sb, journal.lock_journal); | 561 | PROC_INFO_INC(p_s_sb, journal.lock_journal); |
| 562 | down(&SB_JOURNAL(p_s_sb)->j_lock); | 562 | down(&SB_JOURNAL(p_s_sb)->j_lock); |
| 563 | } | 563 | } |
| 564 | 564 | ||
| 565 | /* unlock the current transaction */ | 565 | /* unlock the current transaction */ |
| 566 | inline static void unlock_journal(struct super_block *p_s_sb) | 566 | static inline void unlock_journal(struct super_block *p_s_sb) |
| 567 | { | 567 | { |
| 568 | up(&SB_JOURNAL(p_s_sb)->j_lock); | 568 | up(&SB_JOURNAL(p_s_sb)->j_lock); |
| 569 | } | 569 | } |
diff --git a/fs/reiserfs/xattr.c b/fs/reiserfs/xattr.c index e386d3db3051..87ac9dc8b381 100644 --- a/fs/reiserfs/xattr.c +++ b/fs/reiserfs/xattr.c | |||
| @@ -39,7 +39,6 @@ | |||
| 39 | #include <linux/xattr.h> | 39 | #include <linux/xattr.h> |
| 40 | #include <linux/reiserfs_xattr.h> | 40 | #include <linux/reiserfs_xattr.h> |
| 41 | #include <linux/reiserfs_acl.h> | 41 | #include <linux/reiserfs_acl.h> |
| 42 | #include <linux/mbcache.h> | ||
| 43 | #include <asm/uaccess.h> | 42 | #include <asm/uaccess.h> |
| 44 | #include <asm/checksum.h> | 43 | #include <asm/checksum.h> |
| 45 | #include <linux/smp_lock.h> | 44 | #include <linux/smp_lock.h> |
