diff options
Diffstat (limited to 'fs/reiserfs/file.c')
-rw-r--r-- | fs/reiserfs/file.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/fs/reiserfs/file.c b/fs/reiserfs/file.c index 752cea12e30f..1627edd50810 100644 --- a/fs/reiserfs/file.c +++ b/fs/reiserfs/file.c | |||
@@ -48,8 +48,8 @@ static int reiserfs_file_release(struct inode *inode, struct file *filp) | |||
48 | return 0; | 48 | return 0; |
49 | } | 49 | } |
50 | 50 | ||
51 | reiserfs_write_lock(inode->i_sb); | ||
52 | mutex_lock(&inode->i_mutex); | 51 | mutex_lock(&inode->i_mutex); |
52 | reiserfs_write_lock(inode->i_sb); | ||
53 | /* freeing preallocation only involves relogging blocks that | 53 | /* freeing preallocation only involves relogging blocks that |
54 | * are already in the current transaction. preallocation gets | 54 | * are already in the current transaction. preallocation gets |
55 | * freed at the end of each transaction, so it is impossible for | 55 | * freed at the end of each transaction, so it is impossible for |
@@ -860,8 +860,12 @@ static int reiserfs_submit_file_region_for_write(struct reiserfs_transaction_han | |||
860 | // this sets the proper flags for O_SYNC to trigger a commit | 860 | // this sets the proper flags for O_SYNC to trigger a commit |
861 | mark_inode_dirty(inode); | 861 | mark_inode_dirty(inode); |
862 | reiserfs_write_unlock(inode->i_sb); | 862 | reiserfs_write_unlock(inode->i_sb); |
863 | } else | 863 | } else { |
864 | reiserfs_write_lock(inode->i_sb); | ||
865 | reiserfs_update_inode_transaction(inode); | ||
864 | mark_inode_dirty(inode); | 866 | mark_inode_dirty(inode); |
867 | reiserfs_write_unlock(inode->i_sb); | ||
868 | } | ||
865 | 869 | ||
866 | sd_update = 1; | 870 | sd_update = 1; |
867 | } | 871 | } |